python попробуй и кроме как не давая ожидаемых значений - PullRequest
0 голосов
/ 30 марта 2020

Вот моя python программа

def try_ec(argument):
    try:
        int(argument)
    except:
        argument = input("Please enter a valid value: ")
a = []
score = 0
first = input("First Number: ")
try_ec(first)
first = int(first)
second = input("Second Number: ")
try_ec(second)
second = int(second)

Ошибка

Я пытаюсь получить целое число от пользователя, и я использую попытку, кроме случаев, если пользователь вводит строку по ошибке. Однако мой код дает эту ошибку. Как мне сделать правильный код?

Ответы [ 3 ]

1 голос
/ 30 марта 2020

Это потому, что вы изменяете переменную локали. Первое значение никогда не меняется.

Рассмотрим следующий пример

a = 5

def mut(arg):
  arg = 6

mut(a)
print(a) // 5

Это потому, что arg - это локальная копия переданного аргумента, он живет только в этой области функций.

И вот как мы можем это сделать,

a = 5

def mut(arg):
  arg = 6
  return arg


a = mut(a)
print(a) // 6

Возвращая новое вычисленное значение и присваивая его нашей исходной переменной.

0 голосов
/ 30 марта 2020

вы можете использовать метод рекурсивного вызова для преобразования его в Int.

   def try_ec(argument):
        try:
            return int(argument)
        except:
            inpt = input("Please enter a valid value: ")
            try_ec(inpt)


    a = []
    score = 0
    first = input("First Number: ")
    first = try_ec(first)
    second = input("Second Number: ")
    second = try_ec(second)
0 голосов
/ 30 марта 2020

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

Например:

def take_int_input(text):
    while True:
        argument = input(text)
        try:
            return int(argument)
        except:
            print("Please enter a valid value!")




first = take_int_input("First Number: ")
second = take_int_input("Second Number: ")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...