尝试学习Python。几个小时都在这一个。
我要做的是输入一些数字(例如7,4,6,10和2)然后打印最大值和最小值。 我的代码适用于我输入的每个数字1-9。一旦我达到10或更高,它就会变得不稳定。 似乎它将10读为1,附加零,并且表示10是最小值。 我在哪里错了? 。 练习是输入几个数字然后打印最大值和最小值。我的代码适用于我输入的每个数字1-9。一旦我达到10或更高,它就会变得不稳定并将10列为最小值。 我在哪里错了?
largest = None
smallest = None
the_list = []
while True:
num = input('Enter a number or done: ')
#Handle the edge cases
if num == 'done' : break
if len(num) < 1 : break # Check for empty line
# Do the work
try :
number = int(num)
the_list.append(num)
except:
print("Invalid input")
#continue
print(the_list) # NOTE: This is new so I can see what is in the_list
for value in the_list:
if smallest is None:
smallest = value
elif value < smallest:
smallest = value
for the_num in the_list:
if largest is None:
largest = value
elif the_num > largest:
largest = value #the_num
print("Maximum is", largest)
print( "Minimum is", smallest)
答案 0 :(得分:1)
您实际上并未将number
附加到列表中,而是将num
附加到列表中(我猜是一个简单的拼写错误)。因此,您永远不会将int
附加到列表中,而是str
。显然,这将在以后比较字符串时产生问题,例如:
>>> '10' < '3'
True
将the_list.append(num)
更改为the_list.append(number)
另一个错误是,在您的第二个for
循环中,您忘记将value
更改为the_num
答案 1 :(得分:0)
问题是您要将字符串附加到列表中,而不是整数。也就是说,您的列表现在包含以下内容(如果您输入2然后是10:
the_list = ['2', '10']
由于字符串按字典顺序进行比较,因此&#39; 10&#39;小于&#39; 2&#39;因为&#39; 1&#39;小于&#39; 2&#39;。你想要做的是附加整数。
try :
number = int(num)
the_list.append(number)
except:
print("Invalid input")
#continue
这样,您就可以比较数字的数值,并获得正确答案!