在循环工作以获取数字的最小值和最大值时无法获取



我觉得很愚蠢,因为在学习python的这么早就必须提出问题,但任务是:

编写一个程序,反复提示用户输入整数,直到用户输入"完成"。输入"完成"后,打印出最大和最小的数字。如果用户输入了除有效号码之外的任何其他号码,请尝试/except并发出适当的消息,然后忽略该号码。输入7、2、bob、10和4,并匹配下面的输出

我还没有开始try/except部分,但根据我当前的代码,它似乎只运行了一次完整的循环,然后陷入了最大数字检查。

largest = None
smallest = None
while True:
num = input("Enter a number: ")
if num == "done" : break
if largest is None or num > largest :
largest = num
print("large", largest)
if smallest is None or num < smallest :
smallest = num
print("small", smallest)

print("Minimum is", smallest)
print("Maximum is", largest)

我得到的输出只是把第一个数字作为最小值,最后一个数字作为最低值。

Enter a number: 10
Enter a number: 17
Enter a number: 20
Enter a number: 3
Enter a number: 6
Enter a number: done
Minimum is 10
Maximum is 6

我被难住了,任何帮助都将不胜感激。

您正在比较字符串,因此它正在执行字典顺序,其中6大于10。在比较之前,您需要将数字字符串转换为实际数字:

str_num = input("Enter a number: ")
if str_num == "done":
break
num = int(str_num)  # Convert to integer

最新更新