Как мне расширить список на один вход за раз, вместо того, чтобы указывать количество входов, которые я намереваюсь ввести первыми? - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь написать программу, которая предлагает пользователю ввести одно значение и нажать клавишу ввода, затем другое и нажать клавишу ввода и т. Д., А также среднее значение для значений, которые будут вычислены при нажатии клавиши ввода, без ввода значения.

Я испортил это, так что пользователь указывает, сколько значений он собирается ввести, но не может понять, как разрешить вводить любое количество значений по одному за раз.

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 ]

2 голосов
/ 13 апреля 2019

Вы захотите реализовать цикл 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 голос
/ 13 апреля 2019

Используйте цикл while:

Для дальнейшего объяснения, когда на вход ничего не передается, тогда это пустая строка, которая оценивается как None Поэтому просто получите ввод, если он что-то есть, добавьте его (и, возможно, некоторые другие проверки работоспособности) В противном случае остановите цикл.

Редактировать

Добавлено в некоторые проверки, чтобы увидеть, является ли input числом перед преобразованием в число с плавающей запятой, а также если список пуст перед выполнением каких-либо вычислений

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}")
1 голос
/ 13 апреля 2019

Простой способ сделать это - использовать функцию 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]
0 голосов
/ 13 апреля 2019

используйте цикл 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)
0 голосов
/ 13 апреля 2019

Вы можете просто использовать While цикл


lst=[]

while True:
    answer=input('How many numbers are there?')
    if answer=="":
        break
    else:
        lst.append(int(answer))
        print(sum(lst)/len(lst))

0 голосов
/ 13 апреля 2019

Вот что вы можете сделать:

list = []
while 1:
    k = input()
    if k=="":
        break
    else:
        list.append(k)

Когда пользователь вводит "", цикл прерывается, и вы можете делать со своим списком все, что захотите!

0 голосов
/ 13 апреля 2019

Просто проверьте, является ли введенное пользователем значение пустым:

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

...