from time import sleep
from winsound import Beep
################################################################################
# CONSTANTS DEFINED BY USER
FQC = 800
DOT = 0.1
################################################################################
# CONSTANTS DEFINED BY STANDARD
DAH = DOT * 3
SEP = DOT * 7
CODE = {' ': ' ',
"'": '.----.',
'(': '-.--.-',
')': '-.--.-',
',': '--..--',
'-': '-....-',
'.': '.-.-.-',
'/': '-..-.',
'0': '-----',
'1': '.----',
'2': '..---',
'3': '...--',
'4': '....-',
'5': '.....',
'6': '-....',
'7': '--...',
'8': '---..',
'9': '----.',
':': '---...',
';': '-.-.-.',
'?': '..--..',
'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': '--..',
'_': '..--.-'}
################################################################################
# MAIN PROGRAM FUNCTIONS
def main():
"Loop while getting, compiling, and executing given text."
data = input()
while data:
_execute(_compile(data))
data = input()
def _compile(data):
"Format string as a series of timing codes for execution."
code = []
for word in ''.join(key for key in data.upper() if key in CODE).split():
for character in word:
for symbol in CODE[character]:
code.extend(((DAH, DOT)[symbol == '.'], DOT))
code[-1] = DAH
code[-1] = SEP
return tuple(code)
def _execute(code, ops=(lambda t: Beep(FQC, round(t * 1000)), sleep)):
"Run timing codes with 'Beep' and 'sleep' by their order."
for i, time in enumerate(code):
ops[i & 1](time)
################################################################################
# STANDARD CONDITIONAL EXECUTION
if __name__ == '__main__':
main()
Diff to Previous Revision
--- revision 2 2012-01-12 13:43:18
+++ revision 3 2012-01-12 23:45:12
@@ -81,15 +81,15 @@
for word in ''.join(key for key in data.upper() if key in CODE).split():
for character in word:
for symbol in CODE[character]:
- code.extend((DOT if symbol == '.' else DAH, DOT))
+ code.extend(((DAH, DOT)[symbol == '.'], DOT))
code[-1] = DAH
code[-1] = SEP
return tuple(code)
-def _execute(code):
+def _execute(code, ops=(lambda t: Beep(FQC, round(t * 1000)), sleep)):
"Run timing codes with 'Beep' and 'sleep' by their order."
for i, time in enumerate(code):
- (lambda t: Beep(FQC, round(t * 1000)), sleep)[i & 1](time)
+ ops[i & 1](time)
################################################################################