Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

関数中,プロンプト中の関数

関数中やプロンプト中に関数は入れられますか

python初心者です
関数の中に関数って書けますか?またはプロンプトの中に関数ってかけますか?

input関数にて
ex: aかbかcの選択をさせたい
d=random.randint(1 ,10)

e=input(' a ,b,c  どちらかえらべ')

実行結果↓
a,b,c どれかえらべ←ここに入力できる

と思うのですが、そのとき上のexの a,b,c
のプロンプトにて例えばaはいつも表示させ、dが5以上であった場合bを表示させ選択でき、dが5未満である場合はcを表示させる選択できるようにするにはどのような関数を書けばいいのですか?あとprint関数でも同じように使えますか?
input関数をたくさん書くのは面倒だなと思ったので一文で書きたい、かつ、選択に制限をかけたいと思ったのでこのような質問をしました。

自分で試したこと

dが適当な数字のときなのでif文を使って条件分岐しinputを複数書きましたが、
if d >=5:
  e=input('aかb どちらか選べ')
else :
  e=input('aかc どちらか選べ')
となんとなく多い気がします。input一文でまとめたいです。しかもこれではa,b,cどれもdの数値によらず選べてしまいました。

ご回答お願いします

0

2Answer

bcが等しい確率でよいなら、↓こんな書き方もできますね。

e = input(f"a, {random.sample(['b','c'],1)[0]} どちらか選べ")

もっとシンプルに書けました。@PondVillegeさん、ありがとうございます。

e = input(f"a, {random.choice(['b', 'c'])} どちらか選べ")
2Like

Comments

  1. ありがとうございます!なるほどrandom関数もinput内に入れてしまうこともできるんですね。ありがとうございます

関数の中に関数って書けますか?

そのままの文章を受け取るとしたら,内部関数で調べて欲しいものの,期待する動作はどうやら高階関数に近い話なのでこちらで調べましょう.Pythonはいずれも書けます.

が,今回はそういう使い方の話ではなさそうで,文字列の中に関数を書きたい1ようですね.

例えばf-stringを使えば次のように書けます.

import random

d = random.randint(1, 10)
e = input(f"a, {'b' if d >= 5 else 'c'} どちらか選べ")

特に文字列だけをランダムに使いたいなら次のように書けます.

d = random.choice(["b", "c"])
e = input(f"a, {d} どちらか選べ")

中に入れてしまって

e = input(f"a, {random.choice(['b', 'c'])} どちらか選べ")

と1行で書いてもいいですね.

  1. 正確にはdefで定義するような関数を書くことはできません.これら一例は全て式(expression)を書いています.

1Like

Your answer might help someone💌