python try and except 不给出期望值

python try and except not giving expected values

这是我的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)

Error

我正在尝试从用户那里获取一个整数并且我正在使用 try and except 如果用户错误地输入了一个字符串。但是我的代码给出了这个错误。 如何使代码正确?

您必须使用 while 循环来检查过程,直到它是正确的。

例如:

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: ")

那是因为你改变了语言环境变量。 First 的值永远不会改变。

考虑以下示例

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

通过返回新的计算值并将其分配给我们的初始变量。

你可以使用递归调用的方法将其转换为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)