我正在尝试编写一个程序,该程序提示用户输入一个值,然后按Enter,然后提示另一个,然后按Enter等,并计算用户单击Enter时要计算的值的平均值而无需键入值。
我已经对其进行了破坏,以便用户指示要输入多少个值,但无法弄清楚如何一次允许输入任意数量的值。
b=[]
n= int(input('how many numbers are there? '))
for i in range(n):
b.append(float(input(' enter value: ')))
print(b)
total =sum(b)
print(total)
length=len(b)
mean= total/length
print(mean)
代码给出了正确的答案,令人沮丧的是我不得不指出有多少个值。任何帮助将不胜感激,谢谢
答案 0 :(得分:2)
您将要实现while循环。 while循环将继续反复执行缩进的代码,直到到达break语句或不再满足括号中指定的条件为止。
在这种情况下,我建议执行while(true)循环,然后在用户没有输入的情况下手动退出循环。
# declare list b
b = []
# while True loop
while(True):
# get input as a string
num = input(' enter value: ')
# if the length of the string of variable num is zero, do
if(len(num) == 0):
# break out of the while loop
break
else:
# append to the list as a float
b.append(float(num))
total = sum(b)
print(total)
mean = total/len(b)
print(mean)
希望这会有所帮助! =)
答案 1 :(得分:1)
一个简单的方法是使用iter
函数,第一个参数是input
函数,第二个参数是将停止迭代的字符串,该字符串可以为空字符串:
b = list(map(float, iter(lambda: input('enter value: '), '')))
print(b)
示例输入/输出:
enter value: 2
enter value: 7
enter value: 4
enter value:
[2.0, 7.0, 4.0]
答案 2 :(得分:1)
使用while循环:
为进一步说明,当什么都没有传递给输入时,它是一个空字符串,其结果为None
。因此,只要获取输入,如果有内容,则将其添加(也许还有其他一些健全性检查) ),否则将停止循环。
添加了一些检查,以在转换为浮点数之前查看输入是否为数字,以及在进行任何计算之前该列表是否为空
b = []
while True:
num = input('Enter value (Press Enter to finish): ')
if num:
try:
b.append(float(num))
except ValueError:
print("Invalid Input")
else:
if b:
break
else:
print("No numbers to calculate yet")
total = sum(b)
length = len(b)
mean = total/length
print(f"Total: {total}\nLength: {length}\nMean: {mean}")
答案 3 :(得分:0)
只需检查用户输入的值是否为空:
b=[]
done = False
while not done:
user_input = input(' enter value: ')
if user_input:
b.append(float(user_input))
else:
done = True
print(b)
total =sum(b)
print(total)
length=len(b)
mean= total/length
print(mean)
答案 4 :(得分:0)
这是您可以做的:
list = []
while 1:
k = input()
if k=="":
break
else:
list.append(k)
当用户输入""
时,循环中断,您可以对列表进行任何操作!
答案 5 :(得分:0)
您可以只使用While
循环
lst=[]
while True:
answer=input('How many numbers are there?')
if answer=="":
break
else:
lst.append(int(answer))
print(sum(lst)/len(lst))
答案 6 :(得分:0)
根据您的情况使用while循环,我使用count来获得n的值,并获得固定长度,直到需要添加输入的位置为止。
b = []
n = int(input('how many numbers are there? '))
done = False
count = 0
while not done and count != n:
try:
user_input = float(input('enter a number: '))
b.append(user_input)
count = count + 1
except:
print(' enter valid number ')
count = count
print(b)
total = sum(b)
print(total)
length = len(b)
mean = total/length
print(mean)