2017-01-16 126 views
-1

在编译代码时出错。'int'对象在Python 3中不可迭代

我试图通过将输入存储在列表中来从用户的输入中找到最小和最大的值。后“诠释”对象不重复的问题,无法继续进一步

largest=0 
smallest=0 
num=[] 
while True: 
    num = int(input("Please enter a number: ")) 

    for i in num: 
     if i>largest: 
      largest=i 
    for j in num: 
     if j<smallest: 
      smallest=j 
    if num==12: 
     break    
print(largest) 
print(smallest) 
+0

将用户输入的变量名称更改为其他内容(让我们说n)。添加'num.append(n)'将用户输入存储在num列表中。 – marmeladze

+0

你也从'最小= 0'开始。想想当你只输入大于零的数字时会发生什么? –

回答

0

发出下面的代码行的那一刻num不再是一个列表,而不是其数据类型为int

num = int(input("Please enter a number: ")) 

正如你所理解的,在单个整数值的情况下没有任何东西可以迭代。

正确的解决方案是将您的输入读取到单独的变量并追加到您的列表中。

input_num = int(input("Please enter a number: ")) 
num.append(input_num) 

而且你必须改变你的退出条款

if num==12: 
    break 

的值如果你希望12个后输入到停止循环,然后在if条件使用len(num) == 12。如果你想要break循环,如果输入数字是12,那么改变条件为if input_num == 12

注意:你的算法也有逻辑错误。您正在将smallest分配到0。如果用户输入所有正整数作为输入,你的结果将不正确。

0

您试图通过一些这是错误的迭代,已覆盖您的NUM列表为整数。取而代之的是以下几点:

num = int(input("Please enter a number: ")) 

您应保存该号码在其他一些变量,并把NUM列表,如:

x = int(input("Please enter a number: ")) 
num.append(x) 
+0

@CodeManga你不能做一个'num = x',因为它会覆盖num(列表)到x(整数)。你希望将num附加到num,比如'num.append(x)'或'num = num + x' –

相关问题