所以我有一小段代码不能正常工作:
while c<b:
str2 += str1[c]
c+=1
print str2
b是我要复制到str2的str1的长度,c是我想从str1开始传输的点,然后while循环只是将所有字符从str1传输到str2。
由于某种原因,我似乎无法打印str2并收到此错误消息:
“NameError:名称'str2'未定义”
我的猜测是,我只是做了一些简单的错误,我刚刚开始尝试使用Python,而且之前只做过C#。
答案 0 :(得分:4)
更好的方法是切割字符串:
str2 = str1[c:b]
这会将str1
从字符编号c
复制到字符编号b
再复制到str2
。
例如:
>>> 'Hello World'[3:7]
'lo W'
以下是有关Python切片表示法的一些信息:Explain Python's slice notation
答案 1 :(得分:2)
您必须初始化str2
:
str2 = ''
while c<b:
str2 += str1[c]
c+=1
print str2
或者做一个接收str2
作为参数的函数:
def myfunc(str2=''):
while c<b:
str2 += str1[c]
c+=1
return str2
其中str2
参数默认初始化为''
,即空字符串。
答案 2 :(得分:0)
用
str2 += str1[c]
你说,“请将str1 [c]”添加到str2
中的任何内容..问题是你没有用任何内容初始化str2
(至少在你的代码中显示)。
最简单的解决方法是在循环中使用str2
之前给出str2=''
初始值,例如{{1}}
答案 3 :(得分:0)
为什么不使用以下内容:
str2 = str1[c:]