循环遍历字符模式并打印出相应的文本

2024-09-30 18:21:49 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,正在处理一种莫尔斯电码的问题,用户会以这样的格式输入一个字符串

pattern = ['.', '.', '_', '.', '_', '.']

代码会打印出每个单词的结果,比如:

"dot-dot-dash-dot-dash-dot"

我试过这个:

def ss(pattern):
    dotdash = ""
    for s in pattern:
        if s == ".":
            dotdash+=("dot")
        elif s == "_":
            dotdash+=("dash")
    x = "-".join(dotdash)
    print(x)

ss(['.', '.', '_', '.', '_', '.'])

但这只是给我这样的输出:

d-o-t-d-o-t-d-a-s-h-d-o-t-d-a-s-h-d-o-t

正在寻找用连字符分隔这些点和破折号的解决方案--只是有点为难。我在想也许要分手——基于这些话——但只是不确定如何做到这一点。非常感谢您的帮助。你知道吗


Tags: 字符串代码用户infor电码ifdef
3条回答

好吧,我继续回答我自己的问题——呜呜。简单的解决方法——我把dotdash改成了一个列表,解决了我所有的问题。你知道吗

您可以先用join添加连字符,这将为您提供一个字符串,然后应用两个替换来获得最终的字符串:

def ss(pattern):
    return '-'.join(pattern).replace('.', 'dot').replace('_', 'dash')

print(ss(['.', '.', '_', '.', '_', '.'])) // dot-dot-dash-dot-dash-dot

传递给join()函数的是一个字符串,因此它将遍历字符串中的每个字母,这就是您获得此输出的原因。您真正想做的是使用一个列表,以便join()遍历列表中的每个单词:

...
dotdash = []
for s in pattern:
    if s == ".":
        dotdash.append("dot")
    elif s == "_":
        dotdash.append("dash")
x = "-".join(dotdash)
...

相关问题 更多 >