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的变体。谢谢!我没有意识到这种区别。我把它应用到所有的打印报表上,效果非常好!成功了!谢谢