我正在尝试制作一个在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
有什么帮助吗?
答案 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=0
,x=1
,x=2
和x=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')]
然后您可以将它们组合成一个字符串(就像我的第一个代码片段一样)。