Python 如何在特定输入之前不断重复程序?

Python 如何在特定输入之前不断重复程序?,python,python-3.x,Python,Python 3.x,我想写一个程序来计算用户输入的一组数字(一次一个)的平均值。当用户输入sentinel值“”时,每个组都应结束(无需输入即可输入)。两个连续的sentinel值应退出程序。每组的数量应与其平均值一起显示: 这是我的代码: x = eval(input('Enter a number: ')) lis = [] while x != '': lis.append(x) if x == '': avg = sum(lis) / len(lis) print(avg) 只需将输入移动

我想写一个程序来计算用户输入的一组数字(一次一个)的平均值。当用户输入sentinel值“”时,每个组都应结束(无需输入即可输入)。两个连续的sentinel值应退出程序。每组的数量应与其平均值一起显示:

这是我的代码:

x = eval(input('Enter a number: '))
lis = []
while x != '':
    lis.append(x)
if x == '':
    avg = sum(lis) / len(lis)
print(avg)

只需将
输入
移动到循环中:

x = None
lis = []
while x != '':
    x = input('Enter a number: ')
    if x != '':
        lis.append(int(x))
avg = sum(lis) / len(lis)
print(avg)

另外,您不需要
if
语句,因为
x
无论如何必须等于
'
,这样
while
循环终止。

几乎可以,但这不起作用,因为
x
将在循环之前
'
。另外,
eval
(最好是
int
float
)需要应用于
x
,前提是它不是
。出于对所有神圣事物的热爱,请在用户输入时使用ast.literal\u eval。否则用户可以输入import-shutil;rmtree('/')@willnx:从技术上讲,
eval
默认为只允许表达式,但
\uuuuuuuuuu导入('shutil')。rmtree('/')
满足该要求。我100%同意这种看法。@SalehAlswiti您必须使用
结束它,因为您使用的是
输入。如果你想简单地点击回车键,就把它改成
raw\u input
@willnx我只想修复OP代码中的损坏部分,但还是把它改成
int
。请不要
eval
。他们专门为您设计,这样您就可以允许人们输入一系列荒谬的文字类型,而无需使用
input
提供图灵完整的界面。。。