我熟悉Java和JS等其他语言,并且刚学过Python,这让我感到困惑:
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
但是我总是遇到错误UnboundLocalError: local variable 'upper_case' referenced before assignment
“分配前的参考”是什么意思?但是我已经在全局变量之前声明了这个变量?
答案 0 :(得分:2)
您可以做到
s = "Hello"
def upper_lower(s):
upper_case = 0
lower_case = 0
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
或如global
关键字所述
答案 1 :(得分:0)
在函数内部,您需要使用global
关键字。
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
global upper_case
global lower_case
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
答案 2 :(得分:0)
您必须添加全局
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
global upper_case
global lower_case
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
upper_lower(s)
结果
1 4
答案 3 :(得分:0)
该错误是因为您尝试执行以下操作:lower_case += 1
,与lower_case = lower_case +1
相同。由于lower_case
没有初始值,因此无法执行此操作。解决方法是添加以下两行:
upper_case = 0
lower_case = 0
您应该这样做:
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
upper_case = 0
lower_case = 0
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
upper_lower(s)