Python 最小最大 While 循环
Python Min Max While loop
下面两个 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)
"code 1"的输出与你期望的不同,因为比较中的操作数是str
,其定义的顺序与对应的int
的顺序不同.
换句话说,如果a
和b
是两个int
使得a > b
,那么我们可以确定str(a) > str(b)
只有当两个字符串的长度相同,否则可能会出现 str(a) > str(b)
或 str(a) < str(b)
取决于 a
和 b
.
的实际值
由数字组成的字符串的顺序是 "alphabetical" 字符先出现,因此,而 "1" < "2" < "3"
等,当两个字符串有多个字符时,任一选项都打开 e.g.:
- 对于
"2"
和"10"
,"2" > "10"
(与2 < 10
相反)因为"2" > "1"
和"0"
之后的存在"1"
无关紧要
- 对于
"2"
和"20"
,"2" < "20"
(与2 < 20
相同)因为"2" == "2"
和"0"
后"2"
在 "20"
中使得 "20"
"bigger".
请注意,字符串 ordering/comparison 实际上适用于任何字符串,即使是不包含数字的字符串。
下面两个 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)
"code 1"的输出与你期望的不同,因为比较中的操作数是str
,其定义的顺序与对应的int
的顺序不同.
换句话说,如果a
和b
是两个int
使得a > b
,那么我们可以确定str(a) > str(b)
只有当两个字符串的长度相同,否则可能会出现 str(a) > str(b)
或 str(a) < str(b)
取决于 a
和 b
.
由数字组成的字符串的顺序是 "alphabetical" 字符先出现,因此,而 "1" < "2" < "3"
等,当两个字符串有多个字符时,任一选项都打开 e.g.:
- 对于
"2"
和"10"
,"2" > "10"
(与2 < 10
相反)因为"2" > "1"
和"0"
之后的存在"1"
无关紧要 - 对于
"2"
和"20"
,"2" < "20"
(与2 < 20
相同)因为"2" == "2"
和"0"
后"2"
在"20"
中使得"20"
"bigger".
请注意,字符串 ordering/comparison 实际上适用于任何字符串,即使是不包含数字的字符串。