Python3.6for循环每行只打印一个字符串,为什么?

Python3.6for循环每行只打印一个字符串,为什么?,python,python-3.x,for-loop,Python,Python 3.x,For Loop,我正在做一个小摩尔斯电码翻译,一切都很好;尽管如此,输出没有正确显示 CIPHER = {'E': "⦾", "A": '⦿', 'R': '⦾⦿', 'I': '⦿⦾', 'O': '⦿⦿', 'T': '⦾⦾⦿', 'N': '⦾⦿⦾', 'S': '⦾⦿⦿', 'L': '⦿⦾⦾', 'C': '⦿⦾⦿', 'U': '⦿⦿⦾', 'D': '⦿⦿⦿', 'P': '⦾⦾⦾⦿', 'M': '⦾⦾⦿⦾', 'H': '⦾⦾⦿⦿',

我正在做一个小摩尔斯电码翻译,一切都很好;尽管如此,输出没有正确显示

CIPHER = {'E': "⦾", "A": '⦿', 'R': '⦾⦿', 'I': '⦿⦾', 'O': '⦿⦿',
        'T': '⦾⦾⦿', 'N': '⦾⦿⦾', 'S': '⦾⦿⦿', 'L': '⦿⦾⦾',
        'C': '⦿⦾⦿', 'U': '⦿⦿⦾', 'D': '⦿⦿⦿',
        'P': '⦾⦾⦾⦿', 'M': '⦾⦾⦿⦾', 'H': '⦾⦾⦿⦿',
        'G': '⦾⦿⦾⦾', 'B': '⦾⦿⦾⦿', 'F': '⦾⦿⦿⦾',
        'Y': '⦾⦿⦿⦿', 'W': '⦿⦾⦾⦾', 'K': '⦿⦾⦾⦿',
        'V': '⦿⦾⦿⦾', 'X': '⦿⦾⦿⦿', 'Z': '⦿⦿⦾⦾',
        'J': '⦿⦿⦾⦿', 'Q': '⦿⦿⦿⦾',
        '1': '⦾⦾⦾⦾⦿', '2': '⦾⦾⦾⦿⦿', '3': '⦾⦾⦿⦿⦿',
        '4': '⦾⦿⦿⦿⦿', '5': '⦿⦿⦿⦿⦿', '6': '⦿⦾⦾⦾⦾',
        '7': '⦿⦿⦾⦾⦾', '8': '⦿⦿⦿⦾⦾', '9': '⦿⦿⦿⦿⦾',
        '0': '⦿⦿⦿⦿⦿'
        }
def main():
    msg = input("Type your message below:\n\n")
    for char in msg:
        if char == ' ':
            print (' '*7,)
        elif char not in 'abcdefghijklmnopqrstuvwxyz1234567890':
            print ('')
        else:
            print (CIPHER[char.upper()])
我希望“Hello,World!”的输出如下:

⦾
⦿⦾⦾
⦿⦾⦾
⦿⦿



⦿⦿
⦾⦿
⦿⦾⦾
⦿⦿⦿
⦾⦿⦾⦾⦿⦾⦾⦿⦿       ⦿⦿⦾⦿⦿⦾⦾⦿⦿⦿

但是,实际输出看起来更像这样:

⦾
⦿⦾⦾
⦿⦾⦾
⦿⦿



⦿⦿
⦾⦿
⦿⦾⦾
⦿⦿⦿
我尝试随机删除和放置逗号。然后,我尝试删除输入上的“\n”语句,但输出没有任何更改。我尝试使用此处所示的.splitlines(),但它完全停止了打印!然后,我在谷歌上搜索了一下,没有发现任何与这个问题相近的东西,所以我开始阅读更多关于Python字符串的资料。我发现一个网站()有大量关于Python字符串的资料,但我在那里找不到任何可以解决我问题的东西


我将非常感谢你的帮助

您似乎习惯于Python2约定,即在
print
参数的末尾使用逗号,以防止自动添加换行符。这在Python3中不再有效。您应该使用关键字参数
end=''
,如下所示:
print(''*7,end='')
使用

print(sth, end='')

打印时不要断线。

顺便说一句,“字符不在'abcdefghijklmnopqrstuvwxyz1234567890':”可以替换为“not char.isalnum()”我不太懂莫尔斯电码,但我认为S和O是三个点/破折号(反之亦然)。你的O是2个字符,S有不同的字符。@jackweb谢谢你提供的信息,我昨天才开始使用Python。@NickT这是Morse的变体。谢谢!我没有意识到这种区别。我把它应用到所有的打印报表上,效果非常好!成功了!谢谢