在两个while循环代码下面,从给定的数字中查找最大值和最小值。第一个代码不起作用,输出错误,我不明白为什么?
在我将输入除以整数后,第二个正在工作;如果有人可以为我解释,这有什么不同。谢谢
代码1:
largest = None
smallest = None
while True:
num = input("Enter a number: ")
if num == "done":
break
if largest is None or num> largest:
largest = num
elif smallest is None or num< smallest:
smallest = num
print ("Maximum is", largest)
print ("Minimum is", smallest)
代码2
largest = None
smallest = None
while True:
try:
num = input("Enter the number: ")
if num == "done":
break
num = int(num)
if largest is None or largest < num:
largest = num
elif smallest is None or smallest > num:
smallest = num
except:
print("Invalid input")
print ("Maximum is", largest)
print ("Minimum is", smallest)
答案 0 :(得分:0)
“代码1”的输出与您期望的不同,因为比较中的操作数为str
,其定义的顺序与相应的int
的顺序不同。
换句话说,如果a
和b
是两个int
使得a > b
成立,那么我们可以确保str(a) > str(b)
仅在长度两个字符串中的相同,否则取决于str(a) > str(b)
和str(a) < str(b)
的实际值,它可以发生a
或b
。
在第一个出现的字符上,由数字组成的字符串的顺序为“字母顺序”,因此,"1" < "2" < "3"
等,当两个字符串具有多个字符时,任一选项均处于打开状态,例如:
"2"
和"10"
,"2" > "10"
(与2 < 10
相反)是因为"2" > "1"
和{{1之后的"0"
}}不相关"1"
和"2"
,"20"
(与"2" < "20"
相同),因为2 < 20
和{{1之后的"2" == "2"
}}中的"0"
使"2"
“更大”。请注意,字符串排序/比较实际上适用于任何字符串,即使那些不包含数字的字符串也是如此。