VBA別館・Python別館

64308

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個ランダムに表示されるようになりました。

名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.