私はPythonとプログラミングに全く新しいですが、もっと実践的なアプローチを使ってそれを学びたいと思っています。関数の名前を含むリストを作成するには?
私がしようとしているのは、さまざまなユニットを変換するための演習です。ポンド - >キロ、足 - >メートルなど
私は別のユニットのペアのためのすべての機能を定義している:
def kg_to_g(value):
return round(value*1000.0,2)
def g_to_kg(value):
return round(value/1000.0,2)
def inch_to_cm(value):
return round(value*2.54,2)
def cm_to_inch(value):
return round(value/2.54,2)
def ft_to_cm(value):
return round(value*30.48,2)
などをし、これらの関数の名前のリストを作成しました:
プログラムはランダムにユニットペア(kg->ポンド)と値(たとえば134.23)を選択する必要があり、ユーザーはそれらの値を変換するように求められます。
random_unit = random.choice(unit_list)
lower = 0.1001
upper = 2000.1001
range_width = upper - lower
ranval = round(random.random() * range_width + lower, 2)
ユーザーが答えを入力すると、プログラムが関数で定義された計算で答えを比較する必要があり、それが正解か不正解の場合は、ユーザーに伝える:残念ながら
def input_handler(answer):
if answer == random_unit(ranval):
label2.set_text("Correct!")
else:
label2.set_text("Wrong!")
、そのようにプログラムが」doesnのトン作業、およびcodesculptor(codesculptor.org)は
TypeError: 'str' object is not callable
誰かがコードと間違っているものを私に説明して目を解決するために何かを提案してもらえエラーで返しますeの問題。
'random_unit = random.choice(unit_list)'の後に 'random_unit = globals()[random_unit]を追加してください。 –
'random_unit = random.choice(unit_list)': 'random_unit'に' unit_list'( 'str'のリスト)のランダムな項目を割り当てます。 'random_unit(ranval)'を呼び出すと、関数のように 'str'を使います(呼び出し可能は関数の別の名前です)。 – kjaquier