组合两个字符串以形成新字符串

时间:2014-02-28 02:48:47

标签: string python-3.x

我正在尝试编写一个程序,要求用户输入两个字符串并通过将两者合并在一起创建一个新字符串(一次从每个字符串中取一个字母)。我不允许使用切片。如果用户输入abcdef和xyzw,程序应该构建字符串:axbyczdwef

s1 = input("Enter a string: ")
s2 = input("Enter a string: ")
i = 0
print("The new string is: ",end='')
while i < len(s1):
    print(s1[i] + s2[i],end='')
    i += 1

我遇到的问题是,如果其中一个字符串比另一个字符串长,则会出现索引错误。

2 个答案:

答案 0 :(得分:2)

您需要执行while i < min(len(s1), len(s2)),然后确保打印出字符串的剩余部分。

OR

while i < MAX(len(s1), len(s2)),然后仅在s1[i]打印len(s1) > i,并且只在循环中打s2[i]时才打印len(s2) > i

答案 1 :(得分:1)

我认为Python 3的itertools中的zip_longest为您提供了最优雅的答案:

import itertools

s1 = input("Enter a string: ")
s2 = input("Enter a string: ")

print("The new string is: {}".format(
      ''.join(i+j for i,j in itertools.zip_longest(s1, s2, fillvalue=''))))

Here's the docs, with what zip_longest is doing behind the scenes.