pythonでランダムな文章を生成するものを作り、動作しております。
import random def randomcomment(): commentsElements = [["昨日は","今日は","明日は"],["晴れ","雨","曇り"],["!","です","ですよ"]] comments = commentsElements[0][random.randint(0, 2)]+commentsElements[1][random.randint(0, 2)]+commentsElements[2][random.randint(0, 2)] print(comments) randomcomment()
きちんと動作はするのですが、commentsElements[i][random.randint(0, 2)]
を繰り返し書くのも美しくないと思っています。ただ、自分でfor文をいれてもうまくいかず・・・
どなたか美しく短縮できる方、お知恵をお借りできないでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
既に美しい回答がされていますが質問に記載されているrandom.randintを使って単純なfor文で記載します。
python
1import random 2 3def randomcomment(): 4 commentsElements = [["昨日は","今日は","明日は"],["晴れ","雨","曇り"],["!","です","ですよ"]] 5 comments='' 6 for index in range(len(commentsElements)): 7 comments += commentsElements[index][random.randint(0, 2)] 8 9 print(comments) 10 11randomcomment()
なお、2の箇所をlen(commentsElements[index])とすれば長さが変わっても対応できます。
投稿2021/03/23 22:28
編集2021/03/23 22:59総合スコア1508
0
ベストアンサー
comments = "".join([e[random.randint(0, 2)] for e in commentsElements])
です。
これは、commentsElementsの中のリストの長さが3でないとうまく動作しません。
それぞれのリストの長さが違っていても動くようにするには以下にすると良いです。
random.choiceを使えば、それぞれの長さを気にする必要がなくなります。
python
1import random 2 3def randomcomment(cEs): 4 comments = "".join([random.choice(e) for e in cEs]) 5 print(comments) 6 7commentsElements = [["昨日は","今日は","明日は"],["晴れ","雨","曇り"],["!","です","ですよ"]] 8randomcomment(commentsElements) 9randomcomment(commentsElements) 10 11commentsElements2 = [["昨日","今日","明日","明後日"],["は","も"],["晴れ","雨","曇り"],["!","です","ですよ","だね"]] 12randomcomment(commentsElements2) 13randomcomment(commentsElements2) 14randomcomment(commentsElements2)
実行すると以下のようになります。
python
1>>> import random 2>>> 3>>> def randomcomment(cEs): 4... comments = "".join([random.choice(e) for e in cEs]) 5... print(comments) 6... 7>>> commentsElements = [["昨日は","今日は","明日は"],["晴れ","雨","曇り"],["!","です","ですよ"]] 8>>> randomcomment(commentsElements) 9昨日は晴れ! 10>>> randomcomment(commentsElements) 11昨日は曇りですよ 12>>> 13>>> commentsElements2 = [["昨日","今日","明日","明後日"],["は","も"],["晴れ","雨","曇り"],["!","です","ですよ","だね"]] 14>>> randomcomment(commentsElements2) 15今日は雨! 16>>> randomcomment(commentsElements2) 17明日も曇りですよ 18>>> randomcomment(commentsElements2) 19昨日は曇りです
投稿2021/03/23 05:07
編集2021/03/23 07:56総合スコア24670
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/24 04:52
2021/03/25 09:59
2021/03/25 11:40
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。