5.2编写一个程序,反复提示用户输入整数,直到用户输入“完成”为止。输入“完成”后,打印出最大和最小的数字。如果用户输入的数字不是有效数字,则使用try/except捕捉该数字,并发出适当的消息并忽略该数字。输入7、2、bob、10和4,然后匹配下面的输出。
largest = None
smallest = None
while True:
try:
num = input("Enter a number: ")
if num == "done" : break
print(num)
if num > largest:
largest=num
if num < smallest:
smallest=num
except:
print("Invalid input")
print("Maximum is", largest)
print("Minimum is", smallest)
desired output: my output:
Invalid input 2 ← Mismatch
Maximum is 10 4
Minimum is 2 5
maximum is 5(it prints the last input)
minimum is None
我是一个完全的编程和python的初学者,所以如果错误是显而易见的,请打破它,因为你could..thank你这么多。
发布于 2018-07-29 07:08:52
input()
返回一个字符串,因此您需要使用int()
将输入转换为整数,然后再将其作为数字进行比较。同时删除不必要的print(num)
。
因此,改变:
print(num)
至:
num = int(num)
发布于 2018-07-29 07:09:18
程序永远不会到达print("Invalid input")
,因为上面没有可能抛出的错误。如果您在检查了if num == "done"
之后使用num = int(num)
将num
转换为整数,那么程序将捕获无效输入,如"bob“
发布于 2018-07-29 07:10:58
问题是您使用的是字符串,而不是数字。10
是一个数字,它被存储为数字数据,您可以执行诸如比较大小、加、减等操作。具体来说,它是一个整数,一个没有小数位的数字(计算机以许多不同的方式存储数字)。'10'
是一个字符串,一组字符。这些字符恰好代表一个数字,但计算机不知道这一点。据它所知,它只是一个文本。
将字符串转换为整数的方法很简单,就是num = int(num)
。如果数字可以转换为整数,则会转换为整数。如果它不能,你将得到一个错误。这就是为什么指令告诉您使用try/catch块的原因。它会捕捉到这个错误。
https://stackoverflow.com/questions/51575909
复制相似问题