Функция Python возвращает 12 экземпляров 1 числа, а время моего ввода 12 - PullRequest
0 голосов
/ 16 мая 2019

Итак, я пытаюсь создать функцию, которая позволяет мне умножать ввод данных пользователем на 12. Однако, вместо того, чтобы делать 12 x 4 = 64, это дает мне 4 12 с, например, 444444444444

IveЯ уже пытался использовать функцию возврата самостоятельно, и я пытался создать переменную.

Опции, которые я пробовал:

def cube(num):
    print("answer =")
    return num*12

num1 = input("Enter a number to times by 12: ")
print(cube(num1))

и:

def cube(num):
    print("answer =")
    answer = num*12
    return answer

num1 = input("Enter a number to times by 12: ")
print(cube(num1))

Я ожидаюесли номер входа равен 4, я получу 64, но результат будет показан как 444444444444

Ответы [ 5 ]

0 голосов
/ 16 мая 2019

Это потому, что ввод читается как строка. Если вы создаете строку s = 'foo' и делаете что-то подобное s2 = s*4, тогда s2 будет равен foofoofoofoo. Чтобы исправить вашу проблему, конвертируйте ввод в int. Итак answer = int(num)*12)

0 голосов
/ 16 мая 2019

Вам необходимо привести приведенное значение к float или int. input всегда возвращает строку.

num1 = float(input('Enter a number to multiply by 12: '))

Это вызовет ValueError, если вы введете что-то, что не может быть преобразовано в число.

Если вам нужно постоянно запрашивать действительный ввод, я всегда стремлюсь создать функцию, которая делает это для меня:

def float_input(prompt=''):
    while True:
        try:
            return float(input(prompt))
        except ValueError:
            print('Invalid Input')

Теперь замените input в вашем коде на float_input

0 голосов
/ 16 мая 2019

Функция input возвращает строку, а не число.Умножение строки на число повторяет строку столько раз.

Вы хотите преобразовать эту строку в число раньше:

num1 = int(input("Enter a number to times by 12: "))
print(cube(num1))
0 голосов
/ 16 мая 2019

input("Enter a number to times by 12: ") получает ввод в виде строки.Строки Python позволяют умножить их на число.В результате получается многократно повторяющаяся строка (как видите, 444444444444).Если вы хотите обработать ввод как число, вы должны преобразовать его в целое число:

num1 = int(input("Enter a number to times by 12: "))

0 голосов
/ 16 мая 2019

Когда вы берете ввод, вы сначала получаете его в виде строки.Когда вы умножаете строку, вы получаете повторения этой строки, поэтому вы получаете двенадцать 4-х.

Вам необходимо преобразовать этот вход в число перед его умножением.

Попробуйте:

cube(int(num1))

вместо.

...