#python #loops #user-input
#python #циклы #пользовательский ввод
Вопрос:
У меня возникли проблемы с несколькими числами в одном пользовательском вводе. Идея состоит в том, чтобы умножить число каждого пользователя на заранее определенное. Возможно ли вообще перебирать?
in1 = input('Enter ')
in2 = 10
def count():
s = [x*in2 for x in in1]
print(s)
count()
С таким вводом, как этот терминал ‘5 5 5’, дал мне это:
['5555555555', ' ', '5555555555', ' ', '5555555555']
Комментарии:
1. Каков ваш желаемый результат?
2.
s = [int(x)*int2 for x in in1 if x != ' ']
они обрабатываются как строки, а не целые числа, поэтому при умножении вы получаете 10 5 вместо 503. каждое число, умноженное на 10: ’50, 50, 50′
4.
s = [int(x)*int2 for x in in1 if x != '']
не работает. Это дало мне этоTypeError: 'str' object is not callable
5. Этого
in2
не должно бытьint2
.
Ответ №1:
Поскольку input()
он обрабатывает его как a str
, используя split()
для их разделения пробелами, преобразуйте каждый str
int
из них в, а затем умножьте его на in2
. Кроме того, избегайте использования ключевых слов в качестве имен функций:
in1 = input('Enter ').split() # ['5', '5', '5']
in2 = 10
def func():
return [int(x)*in2 for x in in1 if x]
print(func())
ВЫВОД:
Enter 5 5 5
[50, 50, 50]
Ответ №2:
Вы также должны передавать параметры в свою функцию и возвращать результат:
def multiplyUp(userInput, factor):
return [int(x) * factor for x in userInput]
in1 = input('Enter ').split()
in2 = 10
print(multiplyUp(in1, in2))
ПРИМЕЧАНИЕ: код бесстыдно украден у @DirtyBit