python文本到莫尔斯翻译器中途中断 [英] python text to morse translator breaks in mid-way

查看:19
本文介绍了python文本到莫尔斯翻译器中途中断的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

作为python的实践,我尝试将文本制作为莫尔斯翻译器.但它只执行一次后就中断了.你能帮我找出问题吗?(可能是莫尔斯函数)函数beep是声音,字典item_list是每个字符的特殊代码的包.

As a practice in python, I tried to make a text to morse translator. but it breaks after executing only once. Could you help me figure out the problem? (It's probably in morse function) function beep is for sound, dictionary item_list is a pack of every character's special code.

import winsound
import time
def beep(char):
    if char == 'a':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'b':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'c':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'd':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'e':
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'f':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'g':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'h':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'i':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'j':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'k':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'l':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'm':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'n':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'o':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'p':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 'q':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'r':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 's':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == 't':
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'u':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'v':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'w':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'x':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'y':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == 'z':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == '1':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == '2':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == '3':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == '4':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == '5':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == '6':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == '7':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == '8':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == '9':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == '0':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == '.':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == '-':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == '/':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == ',':
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
    elif char == '?':
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 500)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
        winsound.Beep(500, 150)
        time.sleep(150)
    elif char == ' ':
        print("\t")
    else:
        print("unknown")
        winsound.Beep(500, 1000)
        time.sleep(150)


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': '----. ',
    ' ': '\t',
    '.': '.-.-.- ',
    ',': '--..-- ',
    '?': '..--.. ',
    '-': '-...- ',
    '/': '-..-. '
}


def morse():
    x = input("?")
    name_list = list(x)
    for x in name_list:
        print(item_dict[f"{x}"])
        beep(x)
    morse()


print('''text to morse-text
    enter the text you want''')


morse()

推荐答案

从评论来看,应该是sleep(.15)

那么,你的功能太痛苦"观看,这里是一个建议:

Then, your beep function is too "painful" to watch, here is a suggestion:

import winsound
import time


def beep(char):
    """translates a char into morse-code dashes and dots, and beeps them"""
    sound = {'-': 500, '.': 150, ' ': 10}
    for dashdot in item_dict.get(char, ' '):
        if dashdot == '\t':
            dashdot = ' '
#         print(f'{dashdot}', end='')
        winsound.Beep(500, sound[dashdot])
        time.sleep(.15)
#     print(' ', end='')


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': '----. ',
    ' ': '\t',
    '.': '.-.-.- ',
    ',': '--..-- ',
    '?': '..--.. ',
    '-': '-...- ',
    '/': '-..-. '
}


def morse():
    x = input()
    # x = item_dict.keys()
    name_list = list(x)
    for c in x:
        beep(c)

print('''text to morse-text
    enter the text you want''')

morse()

调试输出:

.-  -...  -.-.  -..  .  ..-.  --.  ....  ..  .---  -.-  .-..  --  -.  ---  .--.  --.-  .-.  ...  -  ..-  ...-  .--  -..-  -.--  --..  -----  .----  ..---  ...--  ....-  .....  -....  --...  ---..  ----.    .-.-.-  --..--  ..--..  -...-  -..-.

这篇关于python文本到莫尔斯翻译器中途中断的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆