Python打印元素发生在下一个元素之后

Python打印元素发生在下一个元素之后,python,python-3.x,morse-code,Python,Python 3.x,Morse Code,我正试图用Python(在vs代码中使用Python3.8)制作一个文本到莫尔斯翻译程序,但行运行顺序有一个问题。这是我的代码(问题在代码后面): 正如您在本部分中所看到的: for x in name_list: print(item_dict[f"{x}"], end=' ') beep(x) time.sleep(.5) 元素print位于函数beep之前。所以它应该先打印,然后发出噪音。但它发出噪音,然后在所有字符

我正试图用Python(在vs代码中使用Python3.8)制作一个文本到莫尔斯翻译程序,但行运行顺序有一个问题。这是我的代码(问题在代码后面):

正如您在本部分中所看到的:

  for x in name_list:
        print(item_dict[f"{x}"], end=' ')
        beep(x)
        time.sleep(.5)

元素
print
位于函数
beep
之前。所以它应该先打印,然后发出噪音。但它发出噪音,然后在所有字符发出噪音后,打印代码。有什么问题吗?

我不太确定我是否完全理解你的问题,但你的程序目前还不清楚 首先将字母的莫尔斯值打印到控制台,然后发出相应的声音。所以,如果这是你想要的,你不需要改变任何事情

否则,如果您想打印整个句子的莫尔斯电码,然后发出所有相应的声音,您可以使用两个循环:

def morse():
x=输入(“?\n”)
对于x中的字符:
打印(项目名称[char],结束=“”)
对于x中的字符:
蜂鸣音(字符)
时间。睡眠(.5)
莫尔斯
而不是制作字符串输入列表,如:

name\u list=list(x)
对于名称列表中的x:
您可以在for循环中刚好经过输入字符串,它将自动循环到字符串中的每个字符:

对于x中的字符:

其中,
x
是您的输入字符串

flush=True
添加到您的
print
语句中,如下所示:

print(item_dict[f"{x}"], end=' ', flush=True)

这将强制控制台上的输出。在您指定自定义“行结束”参数时,这在您的情况下非常有用。如果不是换行符,则不会按原样自动打印。

我无法重现您的错误描述。每个声音都与莫尔斯电码字母的打印一致。很好的应用程序。谢谢,也许是vs代码终端有问题,但它仍然会发出所有的声音,然后一起打印单词@顺便说一句,这只适用于Python 3.3版之后的版本:正如我所说的,我正在使用Python 3.8。我写这篇文章是为了提醒其他可能有同样问题的人。很高兴它有帮助!了解字符串,我想按顺序打印,而不是按孔的句子。但是,我似乎应该改变一些东西,因为它首先发出所有的噪音,然后把单词打印在一起。完全糊涂了。
print(item_dict[f"{x}"], end=' ', flush=True)