私はPythonにまったく慣れておらず、ユーザーがオプションの1つを選択すると動的に入力される文字列と変数の接続詞によって形成される名前を持つ、関数を呼び出す方法を探していました。
例:
ユーザーに特定のオプションを提供するメニューからプログラムを開始します(1、2、3、または4を選択)
ユーザーが1を選択した場合、変数xyzはタプルまたはリスト内の文字列で埋められます。
この文字列を変数に割り当てて、別のオプションを提供する別の関数を呼び出します。
オプション1を取得すると、コードは関数名(次に呼び出される名前)を形成する事前定義された文字列にxyz変数を追加します。
if int(option) == 1:
#prefixfunc will be that predefined string that will be the prefix for every function #to be called
exec('prefixfunc'+xyz'()')
#or
#eval('prefixfunc_'+xyz'()')
#for example, we have xyz as abc, then it calls function prefixfunc_abc()
コードでは正常に機能します。また、ユーザーが別の入力を追加した場合の責任になるとは思いません。変数は、リストまたはタプルですでに定義されている文字列を使用して割り当てられるため。
私は自分自身を明確にしたと思います。
明確にするために:
def maint_car():
print('It Works!!! But did you come until here in a safe way?' )
def veh_func():
func=( "Maintenance", "Prices", "Back", "Quit" )
ord = 0
for i in func:
ord += 1
print(ord,'\b)', i)
picked = input('\nOption: ')
if int(picked) == 1:
exec('maint_'+xyz+'()')
def startprog():
abcd =( "car", "bike", "airplane", "Quit" )
global xyz
ord = 0
for i in abcd:
ord += 1
print(ord,'\b)', i)
picked = input('\nVehicle:')
if int(picked) == 1:
xyz = abcd[0]
veh_func()
elif int(picked) == 2:
xyz = abcd[1]
veh_func()
elif int(picked) == 3:
xyz = abcd[3]
veh_func()
elif int(picked) == 4:
print('\nBye.\n')
startprog()