Python 如何在特定输入之前不断重复程序?
我想写一个程序来计算用户输入的一组数字(一次一个)的平均值。当用户输入sentinel值“”时,每个组都应结束(无需输入即可输入)。两个连续的sentinel值应退出程序。每组的数量应与其平均值一起显示: 这是我的代码: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) 只需将输入移动
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
提供图灵完整的界面。。。