VBA別館・Python別館
Python 四文字熟語辞典 - Tak
2018/11/26 (Mon) 17:44:38
少し知的な遊びのソフトを作ります。
① 四文字熟語辞典
Google調査による四文字熟語のトップテンを見てみましょう。
まずcodeの中に熟語を書きます。 リストは[ ]で括ります。
----------------
四文字熟語 = ['百花繚乱',
'疾風迅雷',
'明鏡止水',
'不撓不屈',
'国士無双',
'魑魅魍魎',
'行雲流水',
'花鳥風月',
'天下無双',
'行雲流水']
print(四文字熟語)
これをrunすると、四文字熟語と言うリストの中身が表示されます
['百花繚乱', '疾風迅雷', '明鏡止水', '不撓不屈', '国士無双', '魑魅魍魎', '行雲流水', '花鳥風月', '天下無双', '行雲流水']
-------------------------------
・四文字熟語と言う変数に、熟語10個を格納します。
・今回はそれが正しく格納されたかどうかの確認をしています。
注意:
・[ ]をわすれないこと
・'百花繚乱', と'',を忘れないこと
・最初のデータ(ここでは、'百花繚乱',)を入れた後は必ずリターンして改行して下さい。 このインデンタは非常に大事で、間違うとエラーとなります。 その理由はインデントで変数の範囲(身内)を決めているからです。
次回はそれを発展させた形式に致します。
Re: Python 四文字熟語辞典 - Tak
2018/11/26 (Mon) 18:44:25
② リストから読み出す
codeをご覧ください。
------------------
四文字熟語 = ['百花繚乱',
'疾風迅雷',
'明鏡止水',
'不撓不屈',
'国士無双',
'魑魅魍魎',
'行雲流水',
'花鳥風月',
'天下無双',
'行雲流水']
for 熟語 in 四文字熟語:
print(熟語)
これをrunすると、
百花繚乱
疾風迅雷
明鏡止水
不撓不屈
国士無双
魑魅魍魎
行雲流水
花鳥風月
天下無双
行雲流水
>>>
と表示されます。
-----------------
・for A in B とは、BというリストからAを取り出すと言う関数です。 Excelですとfor~nextと言う関数でしたが、Pythonではリストの中のデータが無くなるまで続けます。
・print(A)は、Aを表示するという関数で、データが無くなるまで続きますので、結局すべてのデータが書き出されるというわけです。
この関数は、頻繁に利用される重要関数の一つです。
Re: Python 四文字熟語辞典 - Tak
2018/11/26 (Mon) 19:32:54
③ 乱数で出力する
--------------------
四文字熟語 = ['百花繚乱',
'疾風迅雷',
'明鏡止水',
'不撓不屈',
'国士無双',
'魑魅魍魎',
'行雲流水',
'花鳥風月',
'天下無双',
'行雲流水']
for count in range(10):
temp = random.choice(四文字熟語)
print(temp)
これをrunすると、今回は下の様に表示されました。
国士無双
天下無双
魑魅魍魎
行雲流水
天下無双
疾風迅雷
不撓不屈
国士無双
天下無双
魑魅魍魎
-----------------------
・問題は、同じ熟語が何回か出てきました。 原因は乱数に重複が有るからです。
では次回までに重複無しの乱数を作り出すようにいたします。
Re: Python 四文字熟語辞典 - Tak
2018/11/27 (Tue) 16:58:22
④ 重複無し熟語発生
-----------------------
# 注意:空白はすべて半角英文字のこと
import random
#インデントは適切に
#[ の位置はここでないとエラーになる( ]はOK)
四文字熟語 = [
'0 百花繚乱',
'1 疾風迅雷',
'2 明鏡止水',
'3 不撓不屈',
'4 国士無双',
'5 魑魅魍魎',
'6 行雲流水',
'7 花鳥風月',
'8 天下無双',
'9 行雲流水'
]
空リスト = []
for カウンター in range(10): #カウンターの所はどんな文字でもよい
一時保存 = random.choice(四文字熟語) #変数からランダムに選んで一時保存変数に格納する
while 一時保存 in 空リスト: #毎回選んだ熟語(一時保存に入っている)が、空リストにある場合は次に移る
一時保存 = random.choice(四文字熟語) #再度熟語をランダムに選び直してtempに入れる
空リスト.append(一時保存)
print(一時保存)
--------------------
今回は分かり易いように、変数に日本語を使いました。 また重複チェックがしやすいように番号を0-9まで降ってあります。
これで重複無しのデータが、10個ランダムに表示されるようになりました。