Не могу изменить str на int внутри функции - PullRequest
0 голосов
/ 30 ноября 2018
def Validation(digits):
    while not digits.isdigit():
        digits = input("Please select an interger for this part")
    digits = int(digits)

length_1 = input("What is the length of one of the sides?")
    Validation(length_1)
length_2 = input("What is the length of another side?")
    Validation(length_2)
answer = length_1 * length_2 / 2 

Я пытаюсь использовать функцию, которая проверяет вводимые пользователем данные.В конце оно должно превратиться в целое число, чтобы их можно было умножить вместе.Однако я получаю сообщение об ошибке: answer = length_1 * length_2 / 2 TypeError: невозможно умножить последовательность на не-int типа 'str'.Я могу исправить это, добавив int (length_1) и int (length_2), однако суть функции заключалась в том, чтобы не делать этого

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

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

 def Validation(digits):
        while not digits.isdigit():
            digits = input("Please select an interger for this part")
        return int(digits)

    length_1 = input("What is the length of one of the sides?")
    length_1 = Validation(length_1)
    length_2 = input("What is the length of another side?")
    length_2 = Validation(length_2)
    answer = length_1 * length_2 / 2 
    print(answer)
0 голосов
/ 30 ноября 2018

Python передает по значению.digits, переданный вашей функции, переназначается в последней строке.Это не меняет исходное значение, оно просто создает новую переменную.Вместо того, что вы делаете, return int(digits)

0 голосов
/ 30 ноября 2018

digits = int(digits) не может изменить строку, переданную в Validation.Все переназначение в функции - это изменение того, на что указывает параметр функции.Это не имеет никакого эффекта вне функции.

Просто верните проанализированные цифры:

def Validation(digits):
    while not digits.isdigit():
        digits = input("Please select an interger for this part")
    return int(digits)

length_1 = input("What is the length of one of the sides?")
parsed_length_1 = Validation(length_1)
...