-5

所以我有一小段代码不起作用:

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

print str2

b 是我想复制到 str2 的 str1 的长度,c 是我想从 str1 开始传输的点,那么 while 循环应该只是将所有字符从 str1 传输到 str2。

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

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

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

4

4 回答 4

4

更好的方法是对字符串进行切片:

str2 = str1[c:b]

str1这将从字符号复制到c字符号。bstr2

例如:

>>> 'Hello World'[3:7]
'lo W'

这里有一点关于 Python 的切片表示法的信息:Explain Python's slice notation

于 2012-08-05T23:08:32.607 回答
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参数默认初始化为'',即空字符串。

于 2012-08-05T23:07:15.990 回答
0

str2 += str1[c]

您是在说,“请将 str1[c]”添加到已经存在的任何内容中str2。问题是您尚未str2使用任何内容进行初始化(至少在您显示的代码中)。

最简单的解决方法是str2在循环中使用它之前给出一个初始值,例如,str2=''

于 2012-08-05T23:08:39.307 回答
0

为什么不使用以下内容:

str2 = str1[c:]
于 2012-08-05T23:09:45.837 回答