<はじめての python_cw3 > python_cw2に続いて、変数に代入した文字をモールスします。 <その前に> 次のプログラムを実行して見て下さい。文字列"ABCDEFGHI"の長さ取得と 文字列から、文字を1づつ取出して表示させます。 while文と文字取出しのスライスを使っています。 プログラムの<は半角にして下さい。 ----------------------------------------------------------- mojiletu="ABCDEFGHI" #文字列長さ取得 n_len=len(mojiletu) print (mojiletu + " 文字数= " + str(n_len) + "個") #指定位置文字の取得 mojiletu="ABCDEFGHI" #0 1 2 3 4 5 6 7 8 9 # A B C D E F G H I print() #Aの取得 0と1の間(スライス) n_moji=mojiletu[0:1] print (n_moji) print() #Cの取得 2と3の間(スライス) n_moji=mojiletu[2:3] print (n_moji) print() #Iの取得 8と9の間(スライス) n_moji=mojiletu[8:9] print (n_moji) print() #文字を1個づつ取り出す cnt=0 while cnt < n_len: n_moji=mojiletu[cnt:cnt+1] #(スライス) print (n_moji , end="") #改行なしで表示 cnt=cnt+1 ----------------------------------------------------------- 右画像の結果になったでしょうか 次は、文字列"ACDFG"をモールス信号にしたプログラムですがif文を追加しています。 if文で、文字に対する関数を選択しています。例えば文字がAなら関数A()の処理をすると言う具合です。 本来なら、アルファベット、数字などの関数を全て載せるといいのですが、プログラムが長くなりますので ここでは、アルファベットA-Gだけの関数にしました。 プログラムの<は半角にして下さい。 ------------------------------------------------------------------------------- import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) key=18 GPIO.setup(key,GPIO.OUT,initial=GPIO.LOW) sec=0.1 def tan(): GPIO.output(key,GPIO.HIGH) time.sleep(sec) GPIO.output(key,GPIO.LOW) time.sleep(sec) return def tyo(): GPIO.output(key,GPIO.HIGH) time.sleep(sec*3) GPIO.output(key,GPIO.LOW) time.sleep(sec) return def sp_m(): time.sleep(sec*2) return def sp_t(): time.sleep(sec*6) return # ***** 関数 A-G ***** def A(): tan() tyo() sp_m() return def B(): tyo() tan() tan() tan() sp_m() return def b(): tyo() tan() tan() tan() return def C(): tyo() tan() tyo() tan() sp_m() return def D(): tyo() tan() tan() sp_m() return def E(): tan() sp_m() return def F(): tan() tan() tyo() tan() sp_m() return def G(): tyo() tyo() tan() sp_m() return def moji(): if n_moji=="A": A() elif n_moji=="B": B() elif n_moji=="C": C() elif n_moji=="D": D() elif n_moji=="E": E() elif n_moji=="F": F() elif n_moji=="G": G() return #モールス文字 cwmoji="ACDFG" n_len=len(cwmoji) cnt=0 while cnt < n_len: n_moji=cwmoji[cnt:cnt+1] print (n_moji , end="") #改行なしで表示 moji() cnt=cnt+1 ------------------------------------------------------------------------------- モールスでACDFGが聞こえたでしょうか。