Python 3.6 for循环每行只打印一个字符串,为什么?

时间:2017-06-14 16:56:58

标签: python python-3.x for-loop

我正在制作一个小摩尔斯电码转换器,一切正常;但是,输出没有正确显示。

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(For loop outputting one character per line),但它完全停止了打印!然后,我用谷歌搜索它并没有找到任何接近这个问题的东西,所以我开始阅读有关Python字符串的更多资料。我找到了一个网站(https://automatetheboringstuff.com/chapter6/),其中包含大量关于Python字符串的材料,但我找不到任何可以解决我问题的网站。

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用

print(sth, end='')

打印时没有断线。