while循环错误的条件

时间:2015-08-13 12:29:15

标签: python

问题是:

  

编写一个程序,首先提示用户输入数字   要输入的数字然后使用while循环重复提示   这些数字的用户并将数字添加到运行总计中。   输入正确的数字后,程序即可   应打印平均值。

     

您可以假设输入的数字是一个更大的整数   比零,每个后续数字都是浮点数。

到目前为止我得到的代码..

number_of_entries = int(input('Please enter the number of numbers: '))
sum=0
i=0
while i<=float(number_of_entries):
        num = input('Enter the number')
        num=float(num)
        sum+= num
        i += 1
print(sum/i)

引发的错误是

  

读取行时的EOF

它没有告诉我任何其他事情。我想我的while循环的条件是错误的......也许整个逻辑很奇怪..

问题给出了第一行 我初始化了将在while循环中使用的变量, 然后我总结了所有输入的数字,并计算它循环的次数,最后打印平均值..

4 个答案:

答案 0 :(得分:0)

我猜这个程序是通过重定向stdin来测试的。例如,如果你有文件:

3
1
2
3

运行cat filename | python your-script.py预期结果将是程序计算1,2,3和打印2.0的平均值。但是你的循环条件是错误的,所以你最终运行循环一次太多,最后一次input函数满足文件结束条件(关闭stdin)。正确的(呃)将是:

number_of_entries = int(input('Please enter the number of numbers: '))
sum=0
i=0
while i < number_of_entries:
        num = input('Enter the number')
        num=float(num)
        sum+= num
        i += 1
print(sum/i)

该计划仍然不受邪恶输入的影响。

答案 1 :(得分:0)

当使用Sublime-Text作为编辑器提示用户输入时,我遇到了类似的问题。显然,默认的sublime控制台无法处理用户输入。

http://www.bestpythonide.com/python-input-eoferror-in-sublime-text-2.html

建议安装软件包sublime-repl

我还没试过这个。如果有效,请更新。

编辑:刚刚尝试使用SublimeREPL插件,它修复了“input()导致EOFError”。

只需要修正逻辑错误,即改变&lt; = to&lt;如前所述。

答案 2 :(得分:0)

我尝试阻止使用Python中预先存在的变量名称 - 例如'sum'。

这是你要找的吗?以下示例适用于我。

number_of_entries = input("Enter the no. of entries: ")
total = 0.0
num = 0
i = 0
while i < int(number_of_entries):
        num = input("Enter the number: ")
        num = float(num)
        total += num
        i += 1
print (total/i)
input("Press any key to close.")

答案 3 :(得分:0)

choice = int (raw_input ("How many number of times , u gonna input the numbers"))
def num():
    global f;
    f = int (raw_input("Enter the number: "))
i = 0
sum = 0
while i < choice:
    num()
    i = i + 1
    sum = sum + f
print (sum%i)

#Hope this helps u