在Python 3.4中按Enter退出While循环

2024-05-19 21:38:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,在过去的几个月里一直在自学。我正在使用的这本书教Python 2.7,而我正试图在3.4中学习Python。现在我已经习惯了同时使用这两种方法,但是对于我的生命,我无法用enter键来确定如何退出while循环。代码显示如下:

total = 0
count = 0
data = eval(input("Enter a number or press enter to quit: "))

while data != "":
    count += 1
    number = data
    total += number
    average = total / count
    data = eval(input("Enter a number or press enter to quit: "))
print("The sum is", total, ". ", "The average is", average)

我一直有这个错误:

Traceback (most recent call last):
  File "/Users/Tay/Documents/Count & Average.py", line 10, in <module>
    data = eval(input("Enter a number or press enter to quit: "))
  File "<string>", line 0

    ^
SyntaxError: unexpected EOF while parsing

我可以在2.7中使用此代码的修改版本,但我想知道如何在3.4中执行此操作。我到处找遍了,似乎找不到答案。


Tags: orto代码numberinputdatacounteval
3条回答

将用户的输入保持为字符串,直到检查其内容:

total = 0
count = 0

while 1:
    data = input("Enter a number or press enter to quit: ")
    try:
        data = float(data)
    except ValueError:
        break
    count += 1
    total += data

average = total / count
print("The sum is " + total ". The average is " + average + ".")

请尝试此正确版本的代码。你的逻辑是正确的,但你有几个错误。您不需要eval,在将数字添加到总数时,您必须将其转换为integer,最后,您必须在打印之前定义函数外部的平均值。

total = 0
count = 0
average = 0
data = input("Enter a number or press enter to quit: ")

while data:
    count += 1
    number = data
    total += int(number)
    average = total / count
    data = input("Enter a number or press enter to quit: ")

print("The sum is {0}. The average is {1}.".format(total, average))

示例:

Enter a number or press enter to quit: 5
Enter a number or press enter to quit: 4
Enter a number or press enter to quit: 3
Enter a number or press enter to quit: 2
Enter a number or press enter to quit: 
The sum is 14. The average is 3.5.

Enter a number or press enter to quit: 
The sum is 0. The average is 0.

我分离了一个eval函数,它是数字,我让它保持浮点数,看起来有点干净。

def isNumber(value):
    try:
        float(value)
        return True
    except ValueError:
        "error"
        return False

total = 0
count = 0
data = input("Enter a number or press enter to quit: ")

while data and isNumber(data):
    count += 1
    number = float(data)
    total += number

average = total / count  #This sentences is more clean here (for me)
data = input("Enter a number or press enter to quit: ")
print("The sum is", total, ". ", "The average is", average)

相关问题 更多 >