[英]Merge two strings with alternate chars as output
我得到的任务是交替组合具有相同长度的两个字符串的字母。
例如:
Inputstring 1: "acegi"
Inputstring 2: "bdfhj"
Outputstring: "abcdefghij"
当我运行代码时遇到以下问题。
Traceback (most recent call last):
File "...", line 14, in <module>
x =x+f
TypeError: must be str, not int
我认为每个相关变量都是String
。
s=str(input("Input first String:"))
v=str(input("Input second String:"))
x=""
c=1
z=""
f=""
laenge=len(s)
lenge=len(v)
for f in range(laenge):
if f in range(c,c+1):
x =x+f
for z in range(lenge):
if z in range(c,c+1):
x=x+z
c=c+1
print(x)
编程时应首先学习的一件事是使用有意义的变量名,而不是隐秘的1个字母的名称。
您的代码不在两个输入字符串之间交替。 您在第一个字符串中循环,然后在第二个字符串中循环,并且永不重复。
我不确定c
变量的意义是什么。 您在脚本的开头将其设置为1
,然后在后面添加1,但是脚本结束。 是否应该围绕所有这些代码进行另一个循环?
检查f
是否在range(c, c+1)
中的循环可能只是f = c
,没有指向循环的意义。
错误来自
x = x + f
因为x
是一个字符串, f
是一个int
。 我怀疑你想做x = x + s[f]
。
整个事情可以大大简化。
string1 = input("Enter string 1: ")
len1 = len(string1)
string2 = input("enter string 2: ")
len2 = len(string2)
if len1 != len2:
print("Inputs must be the same length")
else:
result = ""
for i in range(len1):
result += string1[i]
result += string2[i]
print(result)
out1 = ''.join(''.join(f for f in tup) for tup in zip(inp1, inp2))
或更实用的样式:
out1 = ''.join(map(''.join, zip(inp1, inp2))) # kudos @Coldspeed
两者都打印
abcdefghij
降低代码:
zip()
pairs = list(zip(inp1, inp2)) print(pairs ) # [('a', 'b'), ('c', 'd'), ('e', 'f'), ('g', 'h'), ('i', 'j')]
.join()
temp = [] for sub in pairs: temp.append(''.join(sub)) print(temp) # ['ab', 'cd', 'ef', 'gh', 'ij']
再次.join()
out1 = ''.join(temp) print(out1) # abcdefghij
最后,并且仅出于娱乐和学习目的,还有另外两种较旧的方法:
out1 = ''
for i in range(len(inp1)):
out1 += inp1[i] + inp2[i]
和
out1 = ''
for i, c in enumerate(inp1):
out1 += c + inp2[i]
您的代码中有几个问题。 最重要的一个是您的命名问题。 给变量取个有意义的名字。
现在,顺理成章。 您需要同时遍历字符串,或者同时在两个索引上使用索引,而不要一个接一个地索引。
您可以这样做,以获得更pythonic的方式。
first = input("Your first string.")
second = input("Your second string.")
if len(first) != len(second):
print 'Bad length for the inputs.'
else:
newString = ""
for s1, s2 in zip(first, second):
newString += s1 + s2
print newString
只需将map
与join
结合使用即可获得所需的结果:
"".join(map(lambda x,y: x+y, astr, bstr))
这里不需要zip
,因为可以提供2个字符串/列表来map
具有带有2个参数的lambda函数的map
。 另外, +
符号可在此处连接2个字符串。
通过输入获取a和b,或者根据需要获取。 无需复制。 关键是代码。
a = 'acegi'
b = 'bdfhj'
c = ''
for i in range(len(a)):
c += a[i] + b[i]
print(c)
结果是:
abcdefghij
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.