我不理解这段代码有什么问题。它适用于最大而不是最小的。而且这两行代码是相同的! 我是这里的新手,也是编程的新手,请原谅我的经验。请注意,我需要使用这些方法来解决此问题,因为这是本课程的本章。再次抱歉
largest = None
smallest = None
while True:
num = input("Enter a number: ")
if (num=="done"):
break
else:
try:
num=int(num)
except:
print("Invalid input")
continue
if(num < smallest):
smallest = num
elif(num > largest):
largest = num
print("Maximum is", largest)
print("Minimum is", smallest)
答案 0 :(得分:0)
您不应将smallest
和largest
设置为None
,因为您无法将其与数字进行比较。
相反,您应该将它们都设置为第一个输入。然后,您可以将其他数字与其进行比较。而且,如果只输入一个数字,它将是最大和最小。
我已经将数字读入函数中,以避免在两个地方都重复验证循环。
def get_number():
while True:
num = input("Enter a number: ")
if num == "done":
return num
try:
num = int(num)
return num
except:
print("Invalid input")
smallest = get_number()
largest = smallest
if smallest == "done":
print("At least one number must be entered")
else:
while True:
num = get_number()
if num == "done":
break
if num < smallest:
smallest = num
elif num > largest:
largest = num
print("Maximum = ", largest)
print("Minimum = ", smallest)
测试结果:
$ python testminmax.py
Enter a number: 7
Enter a number: 2
Enter a number: bob
Invalid input
Enter a number: 10
Enter a number: 4
Enter a number: done
Maximum = 10
Minimum = 2
答案 1 :(得分:0)
此问题主要需要执行do-while循环,但由于python没有do-while循环,因此您可以按以下方式进行反击:
largest = None
smallest = None
first_time = True
while True:
num = input("Enter a number:")
if num=="done" :
break
else:
try:
num = int(num)
except:
print("Invalid input")
continue
if first_time :
largest = smallest = num
first_time = False
else:
if num < smallest :
smallest = num
elif num > largest :
largest = num
print("Max : ", largest)
print("Min : ", smallest)
第一次输入数字时,将检查它是否为数字,然后将其分配给最小号和最大号。第一次之后,用户可以输入数字,它可以正常工作。 希望能有所帮助:)
答案 2 :(得分:0)
知道了!我应该用**是**而不是** <**!