【问题标题】:Why does my loop end after the input is entered?为什么输入输入后我的循环结束?
【发布时间】:2021-10-21 08:38:49
【问题描述】:

作业问题是:“编写一个程序,读取未指定数量的整数,确定读取了多少个正负值,并计算总数 和输入值的平均值(不计算零)。您的程序以 输入 0。将平均值显示为浮点数。"

positive = 0
negative = 0
total = 0
count = 0

number = eval(input("Enter an integer, the input ends if it is 0:"))
while number != 0:
    total += number
    count += 1
    if number > 0:
        positive += 1
    elif number < 0:
        negative += 1
    else:
        break

average = total/count
print("The number of positives is", positive)
print("The number of negatives is", negative)
print("The total is", total)
print("The average is", average)

输入一个数字后,程序不输出任何其他内容。

【问题讨论】:

  • 你为什么使用eval()?请永远不要在不受信任的用户输入上调用它。
  • 你的程序只提示输入一次,因为你没有在循环内提​​示。
  • 你的循环循环直到number == 0。你在哪里更改 number 在循环中?
  • 我不确定您所说的不在循环内提​​示是什么意思。

标签: python while-loop


【解决方案1】:

编写一个读取未指定数量的整数的程序

这意味着您必须反复从用户那里获取数字输入,但使用 input() 一次只会真正输入一个数字。

所以你应该在while循环中输入你的号码,例如:

while True:
    number = int(input("Enter an integer, the input ends if it is 0:"))
    total += number
    count += 1
    if number > 0:
        positive += 1
    elif number < 0:
        negative += 1
    elif number == 0:
        break

【讨论】:

    【解决方案2】:

    您需要继续提示输入数字,直到输入零。一个简单的方法是将您的数字放入一个列表中,然后您可以从最后计算不同的统计数据:

    numbers = []
    while not numbers or numbers[-1] != 0:
        numbers.append(int(input("Enter an integer, the input ends if it is 0: ")))
    numbers.pop()  # discard the 0
    
    print("The number of positives is", sum(n > 0 for n in numbers))
    print("The number of negatives is", sum(n < 0 for n in numbers))
    print("The total is", sum(numbers))
    print("The average is", sum(numbers) / len(numbers))
    

    【讨论】:

    猜你喜欢
    • 2022-01-18
    • 2019-03-19
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 2022-11-30
    相关资源
    最近更新 更多