我无法使用下面的代码正确地将字符串转换为整数。
我将lang
输入作为字符串。我想接受任何输入,因为如果我将输入限制为整数,那么用户输入的任何字母都会导致错误。
此代码:
lang=[]
def chooseLang():
global lang
while lang !='1' and lang != '2':
print ('Select (1 or 2):')
lang=input()
return lang
def convertStr(lang):
ret=int(lang)
return ret
#-----------------------Program-----------------------
chooseLang()
convertStr(lang)
c=2+lang
print (c)
...导致此错误:
in <module> c=2+lang
TypeError: unsupported operand type(s) for +: 'int' and 'str'
尝试在一个函数中执行所有操作具有相同的效果:
lang=[]
def chooseLang():
global lang
while lang !='1' and lang != '2':
print ('Select (1 or 2):')
lang=input()
return lang
ret=int(lang)
chooseLang()
c=2+lang
print (c)
我做错了什么?
答案 0 :(得分:2)
您忘记在第一个示例中使用convertStr()函数返回的值:
lang = convertStr(lang)
在您的第二个示例中,由于ret = int(lang)
之前无法访问return lang
。
def choose_lang():
lang = None # NOTE: this `lang` has nothing to do with the global `lang`
while True:
try:
lang = int(input("select (1 or 2)"))
except ValueError:
pass
if lang not in [1, 2]:
print("\ntry again")
else:
break
return lang
lang = choose_lang()
c = 2 + lang
print(c)