Несколько данных в одном пользовательском вводе

#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 вместо 50

3. каждое число, умноженное на 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