将两个字符串与备用字符合并为输出

时间:2018-01-23 14:10:43

标签: python python-3.x

我的任务是交替组合两个长度相同的字符串。

例如:

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)

val route = ???

val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)

println(s"Server online at http://localhost:8080/\nPress RETURN to stop...")
StdIn.readLine() // let it run until user presses return

bindingFuture
  .flatMap(_.unbind()) // trigger unbinding from the port
  .onComplete(_ => system.terminate()) // and shutdown when done

5 个答案:

答案 0 :(得分:3)

编程时要学习的第一件事就是使用有意义的变量名,而不是神秘的单字母名称。

您的代码不在两个输入字符串之间交替。你循环遍历第一个字符串,然后循环遍历第二个字符串,从不重复。

我不确定c变量的重点是什么。您在脚本开头将其设置为1,然后稍后再添加1,但脚本结束。是否应该围绕所有代码进行另一个循环?

检查f range(c, c+1)是否在f = c的循环可能只是x = x + f ,没有必要循环。

错误来自

x

因为f是字符串而intx = 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)

整个事情可以大大简化。

as.data.frame(rbind(unlist(w1mk),unlist(w2mk)))

答案 1 :(得分:3)

您可以使用zipjoin在一行中完成。

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]

答案 2 :(得分:1)

您的代码中存在多个问题。最重要的是你的命名问题。为变量赋予有意义的名称。

现在,对逻辑。你需要同时迭代通过你的字符串,或者同时在两者上使用索引,而不是一个接一个地使用索引。

你可以这样做,以更加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

答案 3 :(得分:1)

可以简单地使用mapjoin来获得所需的结果:

"".join(map(lambda x,y: x+y, astr, bstr))
这里不需要

zip,因为可以向map提供2个字符串/列表,它具有带2个参数的lambda函数。此外,+符号可用于在此处连接2个字符串。

答案 4 :(得分:0)

获取a和b输入或您想要的。无需复制。重点是代码。

a = 'acegi'
b = 'bdfhj'

c = ''
for i in range(len(a)):
    c += a[i] + b[i]

print(c)

结果是:

abcdefghij