在我的循环中使用最小值和最大值时遇到问题:'int'对象不可迭代



我不知道如何找到输入用户号码的最小值'

sum = 0
x = 0
counter = 0
minumum = 0
while x >= 0:
counter = counter + 1
x = int(input('enter a postive number:'))
if x >= 0:
sum = sum + x
minumum = min(x)
avg = sum/counter
print(sum)
print(avg)
print(minumum)

你需要给min()一些比较的东西。否则,Python会假设你传递给它一个包含多个对象的可迭代对象,它需要从。

中找到最小的值。尝试min(x, minimum)

此外,它可能是值得做一些搜索现有答案之前添加一个新的问题。这个现有的线程是从一个快速搜索中出现的。(参见关于新问题的预期工作量的元讨论)

问题(除了代码中的许多问题之外)是,在每次while循环的迭代中,您都试图将最小变量更新为min(x)的值。

min()函数不应该像你那样使用。相反,它需要一个值数组(实际上是一个可迭代对象),并返回该数组中的最小值。例如,min([2, 3, 4, 1, 5])将返回1。

你应该这样做:

if x < minimum:
minimum = x

问题是您将最小值初始化为0。这意味着如果x的值是2, 3, 4, 1, 5,那么最小值将保持0而不是1。要解决这个问题,可以将minimum初始化为None,在while循环中可以这样做:

if minimum == None:
minimum = x
elif x < minimum:
minimum = x

检查计数器变量是否为零;如果为真,那么用第一个输入初始化最小值。在下面的步骤中,通过在两个连续的输入值之间使用min函数来更新该值。

sum = 0
condition = True
counter = 0
minimum = -1
while condition:
x = int(input('enter a postive number:'))
if x >= 0 :
if counter == 0 :
minimum = x
else :
minimum = min(x, minimum)
counter = counter + 1
sum = sum + x
else :
condition = False
avg = sum/counter
print(sum)
print(avg)
print(minimum)

相关内容

  • 没有找到相关文章