字符串超出范围[Python]

时间:2018-07-12 19:38:53

标签: python-3.x

我正在尝试制作一个在python中将两个单词组合在一起的程序。 例如,如果我将“ hello”和“ chadd”组合在一起,它将通过交替字母返回“ hcehlaldod”。

这里是我的代码:

string1 = "hey"
string2 = "hii"
len1 = len(str(string1))
len2 = len(str(string2))
x = 0
final = ""

while (x <= len1):
  final = final + string1[x] + string2[x]
  x = x + 1

有什么帮助吗?

4 个答案:

答案 0 :(得分:1)

有一种最简单的方法可以做到这一点:

string1 = "hey"
string2 = "hii"
new_str = ""

for char1,char2 in zip(string1, string2):
    new_str += char1 + char2


if __name__ == '__main__':
    print(new_str)

答案 1 :(得分:0)

如果只关心第一个字符串的长度,请将while (x <= len1)更改为while (x < len1)

如果您关心两个字符串的长度,请改用while (x < len1 and x < len2)

答案 2 :(得分:0)

您遇到的循环问题是因为您使用条件while (x <= len1):

让我解释一下。字符串的长度为3。字符(及其索引)如下:

0 1 2
h e y

您将看到字符串在索引位置2处结束。因此,现在返回您的条件。您已将其设置为继续循环while (x <= len1):。因此,您的循环将在x=0x=1x=2x=3时运行。 x=3超出范围,因为字符串的索引在索引位置2结束。

您应该使用while (x < len1):,它将在字符串的正确位置停止。

答案 3 :(得分:0)

您可以注意长度,如其他人所建议的那样,但是您也可以使用内置的zip函数来使用更实用的方法:

string1 = "hello"
string2 = "chadd"

string3 = ''.join(t[0] + t[1] for t in zip(string1, string2))  # hcehlaldod

zip通过配对输入来工作:

print(list(zip(string1, string2)))  # note that you should turn it into a list to print it
# [('h', 'c'), ('e', 'h'), ('l', 'a'), ('l', 'd'), ('o', 'd')]

然后您可以将它们组合成一个字符串(就像我的第一个代码片段一样)。