下面的代码可以运行,但是在尝试键入时始终会导致错误UnboundLocalError: local variable 'value' referenced before assignment
。我去过很多地方,但似乎无法将解决方案应用于我的具体情况:
def letterbreak(luv):
setluv=list(str(luv))
for x in setluv:
if x=='a':
value=int(1)
if x=='b':
value=int(2)
if x=='c':
value=int(3)
if x=='d':
value=int(4)
if x=='e':
value=int(5)
if x=='f':
value=int(6)
.......
.......
.......
.......
if x=='y':
value=int(25)
if x=='z':
value=int(26)
print(str(value))
return
letterbreak(input())
请让我知道条件是否有问题。
答案 0 :(得分:2)
如果没有条件执行,则不定义value
。因此,如果x == '1'
必须打印什么值?
解决方案是在if
之前定义默认值:
for x in setluv:
value = -1
if x=='a':
value=int(1)
# ... etc
print(str(value))
答案 1 :(得分:0)
在旁注(对于评论来说太长了),您的代码可以简化很多。例如,您可能正在使用如下查询表:
import string
tmp = list(string.ascii_lowercase)
lookup = dict(zip(tmp, range(1, len(tmp)+1)))
def letterbreak(luv):
setluv=list(str(luv))
for x in setluv:
print(str(lookup.get(x, "Value not defined")))
return