Python:为什么这不起作用?

时间:2012-08-05 23:05:32

标签: python

所以我有一小段代码不能正常工作:

 while c<b:
     str2 += str1[c]
     c+=1

print str2

b是我要​​复制到str2的str1的长度,c是我想从str1开始传输的点,然后while循环只是将所有字符从str1传输到str2。

由于某种原因,我似乎无法打印str2并收到此错误消息:

“NameError:名称'str2'未定义”

我的猜测是,我只是做了一些简单的错误,我刚刚开始尝试使用Python,而且之前只做过C#。

4 个答案:

答案 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:]