[英]How do I break down words in python?
我已經用python編寫了一個程序,該程序接受字母,數字和字符,然后將它們轉換為摩爾斯電碼。 該程序是為我的樹莓派編寫的,並且使LED閃爍。 麻煩在於,此時用戶必須在鍵入每個字符后按Enter鍵。 我想這樣做,以便用戶可以輸入整個單詞和句子,然后以莫爾斯電碼顯示出來,但是我不確定如何將單詞分解。
這是下面的代碼,希望您能理解並幫助我:
print'Welcome to the Morse translator'
print'Enter the characters one by one pressing enter each time'
print'Enter the GPIO pin number that you would like to use'
pin = int (input())
while True:
name = raw_input("Enter a letter, number or character to see it in morse: ")
print name
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
gpio.setup(pin, gpio.OUT)
def dot():
gpio.output(pin, gpio.HIGH)
time.sleep(0.25)
gpio.output(pin, gpio.LOW)
time.sleep(0.25)
def dash():
gpio.output(pin, gpio.HIGH)
time.sleep(0.75)
gpio.output(pin, gpio.LOW)
time.sleep(0.25)
def e():
time.sleep(0.75)
if (name=='a'):
dot()
dash()
e()
elif (name=='b'):
dash()
dot()
dot()
dot()
e()
elif (name=='c'):
dash()
dot()
dash()
dot()
e()
elif (name=='d'):
dash()
dot()
dot()
e()
elif (name=='e'):
dot()
e()
elif (name=='f'):
dot()
dot()
dash()
dot()
e()
elif (name=='g'):
dash()
dash()
dot()
e()
elif (name=='h'):
dot()
dot()
dot()
dot()
e()
elif (name=='i'):
dot()
dot()
e()
elif (name=='j'):
dot()
dash()
dash()
dash()
e()
elif (name=='k'):
dash()
dot()
dash()
e()
elif (name=='l'):
dot()
dash()
dot()
dot()
e()
elif (name=='m'):
dash()
dash()
e()
elif (name=='n'):
dash()
dot()
e()
elif (name=='o'):
dash()
dash()
dash()
e()
elif (name=='p'):
dot()
dash()
dash()
dot()
e()
elif (name=='q'):
dash()
dash()
dot()
dash()
e()
elif (name=='r'):
dot()
dash()
dot()
e()
elif (name=='s'):
dot()
dot()
dot()
e()
elif (name=='t'):
dash()
e()
elif (name=='u'):
dot()
dot()
dash()
e()
elif (name=='v'):
dot()
dot()
dash()
e()
elif (name=='w'):
dot()
dash()
dash()
e()
elif (name=='x'):
dash()
dot()
dot()
dash()
e()
elif (name=='y'):
dash()
dot()
dash()
dash()
e()
elif (name=='z'):
dash()
dash()
dot()
dot()
e()
elif (name=='1'):
dot()
dash()
dash()
dash()
dash()
e()
elif (name=='2'):
dot()
dot()
dash()
dash()
dash()
e()
elif (name=='3'):
dot()
dot()
dot()
dash()
dash()
e()
elif (name=='4'):
dot()
dot()
dot()
dot()
dash()
e()
elif (name=='5'):
dot()
dot()
dot()
dot()
dot()
e()
elif (name=='6'):
dash()
dot()
dot()
dot()
dot()
e()
elif (name=='7'):
dash()
dash()
dot()
dot()
dot()
e()
elif (name=='8'):
dash()
dash()
dash()
dot()
dot()
e()
elif (name=='9'):
dash()
dash()
dash()
dash()
dot()
e()
elif (name=='0'):
dash()
dash()
dash()
dash()
dash()
e()
elif (name=='.'):
dot()
dash()
dot()
dash()
dot()
dash()
e()
elif (name==','):
dash()
dash()
dot()
dot()
dash()
dash()
e()
elif (name==':'):
dash()
dash()
dash()
dot()
dot()
dot()
e()
elif (name=='?'):
dot()
dot()
dash()
dash()
dot()
dot()
e()
elif (name=='-'):
dash()
dot()
dot()
dot()
dot()
dash()
e()
elif (name=='/'):
dash()
dot()
dot()
dash()
dot()
e()
elif (name=='(' or ')'):
dash()
dot()
dash()
dash()
dot()
dash()
e()
elif (name=='@'):
dot()
dash()
dash()
dot()
dash()
dot()
e()
elif (name=='='):
dash()
dot()
dot()
dot()
dash()
e()
elif (name==' '):
e()
e()
e()
e()
e()
e()
e()
else:
print'This character is not supported'
gpio.cleanup()
字符串基本上是字符列表,因此您可以遍歷它們以分隔每個字符。
>>> name = 'This is a test'
>>> c = list()
>>> for x in name:
c.append(x)
>>> print c
['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't']
或作為列表理解:
>>> c = [x for x in name ]
>>> print c
['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't']
此外,我將編寫一個單獨的函數將每個字符轉換為摩爾斯信號:
>>> def char_to_morse(char):
signals = {'a':[dash, dot] ...}
for f in signals: f()
最后通過以下方式調用它:
>>> for x in name: char_to_morse(x)
帶上您的name變量,對每個單詞的長度運行for循環,在if循環中運行每個字符?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.