Python 打印元素发生在下一个元素之后
Python print element happens after the next element
我正在尝试用 Python 制作一个文本到莫尔斯码的翻译器(在 vs 代码中使用 Python 3.8)但是 运行 行中有一个问题。这是我的代码(问题在代码后面):
import winsound
import time
def beep(char):
sound = {
'-': 500,
'.': 150,
}
for dashdot in item_dict[char]:
winsound.Beep(500, sound[dashdot])
time.sleep(.05)
item_dict = {
'a': '.-',
'b': '-...',
'c': '-.-.',
'd': '-..',
'e': '.',
'f': '..-.',
'g': '--.',
'h': '....',
'i': '..',
'j': '.---',
'k': '-.-',
'l': '.-..',
'm': '--',
'n': '-.',
'o': '---',
'p': '.--.',
'q': '--.-',
'r': '.-.',
's': '...',
't': '-',
'u': '..-',
'v': '...-',
'w': '.--',
'x': '-..-',
'y': '-.--',
'z': '--..',
'0': '-----',
'1': '.----',
'2': '..---',
'3': '...--',
'4': '....-',
'5': '.....',
'6': '-....',
'7': '--...',
'8': '---..',
'9': '----.',
'.': '.-.-.-',
',': '--..--',
'?': '..--..',
'-': '-...-',
'/': '-..-.'
}
def morse():
x = input("?\n")
name_list = list(x)
for x in name_list:
print(item_dict[f"{x}"], end=' ')
beep(x)
time.sleep(.5)
morse()
print('''text to morse-text
enter the text you want''')
morse()
正如您在这部分中看到的:
for x in name_list:
print(item_dict[f"{x}"], end=' ')
beep(x)
time.sleep(.5)
元素 print
在函数 beep
之前。所以它应该先打印然后发出噪音。但它会发出声音,然后在为所有字符发出声音后,打印代码。怎么了?
我不太确定我完全理解你的问题,但你的程序目前
首先将一个字母的莫尔斯值打印到控制台,然后发出相应的声音。所以如果那是你想要的,你不需要改变任何东西。
否则如果你想打印整个句子的莫尔斯,然后发出所有相应的声音,你可以使用两个循环:
def morse():
x = input("?\n")
for char in x:
print(item_dict[char], end=' ')
for char in x:
beep(char)
time.sleep(.5)
morse()
而不是像这样列出字符串输入:
name_list = list(x)
for x in name_list:
您可以在 for 循环中直接传递输入字符串,它会自动遍历字符串中的每个字符:
for char in x:
其中 x
是您的输入字符串
将 flush=True
添加到您的 print
语句中,如下所示:
print(item_dict[f"{x}"], end=' ', flush=True)
这会强制在控制台上输出。当您指定自定义“行尾”参数时,这对您的情况很有用。当它不是换行符时,它不会按原样自动打印。
我正在尝试用 Python 制作一个文本到莫尔斯码的翻译器(在 vs 代码中使用 Python 3.8)但是 运行 行中有一个问题。这是我的代码(问题在代码后面):
import winsound
import time
def beep(char):
sound = {
'-': 500,
'.': 150,
}
for dashdot in item_dict[char]:
winsound.Beep(500, sound[dashdot])
time.sleep(.05)
item_dict = {
'a': '.-',
'b': '-...',
'c': '-.-.',
'd': '-..',
'e': '.',
'f': '..-.',
'g': '--.',
'h': '....',
'i': '..',
'j': '.---',
'k': '-.-',
'l': '.-..',
'm': '--',
'n': '-.',
'o': '---',
'p': '.--.',
'q': '--.-',
'r': '.-.',
's': '...',
't': '-',
'u': '..-',
'v': '...-',
'w': '.--',
'x': '-..-',
'y': '-.--',
'z': '--..',
'0': '-----',
'1': '.----',
'2': '..---',
'3': '...--',
'4': '....-',
'5': '.....',
'6': '-....',
'7': '--...',
'8': '---..',
'9': '----.',
'.': '.-.-.-',
',': '--..--',
'?': '..--..',
'-': '-...-',
'/': '-..-.'
}
def morse():
x = input("?\n")
name_list = list(x)
for x in name_list:
print(item_dict[f"{x}"], end=' ')
beep(x)
time.sleep(.5)
morse()
print('''text to morse-text
enter the text you want''')
morse()
正如您在这部分中看到的:
for x in name_list:
print(item_dict[f"{x}"], end=' ')
beep(x)
time.sleep(.5)
元素 print
在函数 beep
之前。所以它应该先打印然后发出噪音。但它会发出声音,然后在为所有字符发出声音后,打印代码。怎么了?
我不太确定我完全理解你的问题,但你的程序目前 首先将一个字母的莫尔斯值打印到控制台,然后发出相应的声音。所以如果那是你想要的,你不需要改变任何东西。
否则如果你想打印整个句子的莫尔斯,然后发出所有相应的声音,你可以使用两个循环:
def morse():
x = input("?\n")
for char in x:
print(item_dict[char], end=' ')
for char in x:
beep(char)
time.sleep(.5)
morse()
而不是像这样列出字符串输入:
name_list = list(x)
for x in name_list:
您可以在 for 循环中直接传递输入字符串,它会自动遍历字符串中的每个字符:
for char in x:
其中 x
是您的输入字符串
将 flush=True
添加到您的 print
语句中,如下所示:
print(item_dict[f"{x}"], end=' ', flush=True)
这会强制在控制台上输出。当您指定自定义“行尾”参数时,这对您的情况很有用。当它不是换行符时,它不会按原样自动打印。