如何一次只用一个输入扩展一个列表,而不是说明我打算首先输入的输入数量?

时间:2019-04-12 21:23:57

标签: python list input

我正在尝试编写一个程序,该程序提示用户输入一个值,然后按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)

代码给出了正确的答案,令人沮丧的是我不得不指出有多少个值。任何帮助将不胜感激,谢谢

7 个答案:

答案 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)

示例:https://repl.it/repls/GenerousEverlastingBugs

答案 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)