对于以下Python 2.7代码:
#!/usr/bin/python
def funcA():
print "funcA"
c = 0
def funcB():
c += 3
print "funcB", c
def funcC():
print "funcC", c
print "c", c
funcB()
c += 2
funcC()
c += 2
funcB()
c += 2
funcC()
print "end"
funcA()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
File "./a.py", line 9, in funcB
c += 3
UnboundLocalError: local variable 'c' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
但是,当我注释掉该行c += 3中funcB,我得到以下的输出:
funcA
c 0
funcB 0
funcC 2
funcB 4
funcC 6
end
Run Code Online (Sandbox Code Playgroud)
c在 …
我刚开始学习Python并为自己创造了一些我正在努力解决的任务......
所以,我正在处理使用字符串(通过索引访问字符串,更改等)的章节.
我的任务是 - 大写字符串的每个奇数字符.我在这里看到了解决方案:在Python中用字符串中的每个其他字母大写?
但我不喜欢它...想通过切片解决这个问题.所以我制作的是关注代码:
T = 'somesampletexthere'
R=""
for i in range(0, len(T[1::2])):
R+=T[::2][i].upper()+T[1::2][i].lower()
print R
Run Code Online (Sandbox Code Playgroud)
当有偶数个字符时,这个代码工作得很好,例如使用TESTTEXT但是当数字是奇数时,就像这里的例子一样,它将跳过最后一个字符(在本例中是E)
这是因为范围是直到len(T[1::2]))(偶数字符的长度),但如果我将尝试奇数字符的长度,len(T[::2]))我将得到错误:
IndexError: string index out of range
Run Code Online (Sandbox Code Playgroud)
逻辑上因为奇数字符的数量在1上总是更大(在具有奇数字符的文本的情况下).
所以,我的问题是 - 我怎么能抑制错误?因此,如果索引超出给定字符串的范围,Python只返回null或其他内容?
或使用切片的任务的任何其他解决方案?