Я пытаюсь сделать средний калькулятор, чтобы вы могли вводить столько чисел, сколько хотите, и я пытаюсь превратить ввод в список, как я могу это сделать? Вот мой код, который у меня есть до сих пор.
numbers = []
divisor = 0
total = 0
adtonum = int(input("Enter numbers, seperated by commas (,): "))
numbers.append(adtonum)
for num in numbers:
divisor += 1
total = total + num
print(num)
print("Average: ")
print(total / divisor)
Попробуй это:
adtonum = input("Enter numbers, separated by commas (,): ")
numbers = [int(n) for n in adtonum.split(',')]
Здесь мы разделяем строку разделителем (в данном случае запятой) и используем понимание списка для построения списка чисел, преобразуя каждое из чисел во входной строке в целые числа одно за другим.
Вы можете использовать функцию eval:
numbers = eval(input("Enter a list of numbers i.e; values separated by commas inside '[]' "))
Да, но это все еще один из методов, которые можно было бы использовать.
Да, конечно, это определенно верно, просто указываю на возможные подводные камни.
Ну вот;
divisor = 0
total = 0
adtonum = (input("Enter numbers, seperated by commas (,): "))
numbers = adtonum.split(',')
for num in numbers:
divisor += 1
total = total + int(num)
print(int(num))
print("Average: ")
print(total / divisor)
Объяснение:
Поскольку вы пытались получить ввод от пользователя, но ввод, предоставленный пользователем, не мог быть проанализирован в int
, потому что он содержал ,
.
Я просто получил ввод от пользователя, разделил ввод запятыми. Обратите внимание, что функция split
возвращает список элементов, разделенных символом, указанным в качестве аргумента. Затем я перебрал этот список, проанализировав каждый элемент как int
, что возможно сейчас. Остальное такое же.
Было бы лучше использовать sum(lst)/len(lst)
, где lst
input()
преобразуется в list
из int
s.
На самом деле в своем ответе я просто хотел показать ему, как правильно получать ввод от пользователя, поскольку это было основной проблемой его кода. Спасибо за ваше предложение!
Попробуйте этот код.
# assign values using unpacking
divisor, total = 0, 0
# list comprehension
numbers = [int(x) for x in input("Enter numbers, separated by commas (,): ").split(',')]
for num in numbers:
divisor += 1
total += num
print(num)
print("Average: ")
print(total / divisor)
Здесь вы можете использовать функцию eval()
, например:
numbers = list(eval(input("Enter numbers, seperated by commas (,): ")))
Поскольку ввод представляет собой просто числа, разделенные запятыми, функция eval()
оценит его как кортеж, а затем функция list()
преобразует его в список.
Но это действительно возлагает на пользователя гораздо большую нагрузку, связанную с правильным форматом ввода. Кроме того,
eval
должен быть последним средством, а не основным методом, особенно когда существуют более простые методы.