我正在尝试从键盘读取数字并验证它
这就是我所拥有的,但它不起作用。
没有错误,但它没有记住我引入的数字
def IsInteger(a):
try:
a=int(a)
return True
except ValueError:
return False
def read():
a=input("Nr: ")
while (IsInteger(a)!=True):
a=input("Give a number: ")
a=0
read()
print(a)
答案 0 :(得分:1)
a
是两个函数的局部变量,并且对代码的其余部分不可见。修复代码的最佳方法是从a
函数返回read()
。此外,IsInteger()
功能中的间距已关闭。
def IsInteger(b):
try:
b=int(b)
return True
except ValueError:
return False
def read():
a=input("Nr: ")
while not IsInteger(a):
a=input("Give a number: ")
return a
c = read()
print(c)
答案 1 :(得分:1)
我认为这是你想要实现的目标。
def IsInteger(a):
try:
a=int(a)
return True
except ValueError:
return False
def read():
global a
a=input("Nr: ")
while (IsInteger(a)!=True):
a=input("Give a number: ")
a=0
read()
print(a)
您需要使用global
表达式来覆盖全局变量,而无需在函数内创建return
并键入a = read()
。
但我高度建议您使用 return
并重新分配'a'的值,如下所述。
答案 2 :(得分:0)
好像你没有返回read()函数的结果。
您的阅读功能的最后一行应该是"返回"
然后当你调用read函数时,你会说" a = read()"