我需要找到用户输入的最大数字但是我不能将最大数字定义为数字,比如我定义的“最大= -9999999”,有什么建议吗? “澄清”是计算最大数量出现的时间
largest = -9999999
clargest = 0
while num != 0 :
num = input("Enter your number or type 0 to end: ")
if (num[0] == "-" and num[1:].isdigit()) or num.isdigit():
num = int(num)
if num != 0:
if num > largest:
clargest = 1
elif num == largest:
clargest = clargest + 1
largest = max(largest,num)
答案 0 :(得分:2)
您可以从数学上有意义的largest = float('-inf')
开始,因为只允许用户输入(签名)整数。
旁注:编写循环的方法要简单得多:
while num != 0 :
num = input("Enter your number or type 0 to end: ")
if (num[0] == "-" and num[1:].isdigit()) or num.isdigit():
num = int(num)
if num != 0:
# ... keep track of largest
会更简单:
while True:
try:
num = int(input("Enter..."))
except ValueError:
continue
if num == 0:
break
# ... keep track of largest
这使用推荐的“请求宽恕而不是许可”(try
)。它还删除了num != 0
的重复。 “这是数字”的测试也更加明显。同时删除num为字符串和数字的需要。
答案 1 :(得分:0)
您有几个选择。以下是其中两个:
选项1: 保留用户输入的所有数字的列表,对其进行排序,然后选择最后一个数字。
选项2:
(我想这就是你要做的)
跟踪到目前为止输入的最大数字。而不是将最大值定义为大的负数,而只是保持一个布尔值,该值表示输入是否是第一个数字。用户输入的第一个数字始终是最大的。对于您,具体而言,当clargest
为0时,您可以将largest
设置为用户输入。