저는 파이썬과 프로그래밍에 완전히 익숙하지 만 좀 더 실제적인 접근 방식을 사용하여 그것을 배우려고합니다.함수 이름을 포함하는 목록을 만드는 방법은 무엇입니까?
내가하려는 것은 다른 단위를 변환하는 연습입니다. 파운드 -> kg, 피트 -> 미터 등
내가 다른 단위 쌍에 대한 모든 기능을 정의 :
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)
등
을하고 이러한 기능의 이름 목록을 만들어 :
unit_list = ['kg_to_g','g_to_kg','inch_to_cm','cm_to_inch',
'ft_to_cm','cm_to_ft','yard_to_m','m_to_yard',
'mile_to_km','km_to_mile','oz_to_g','g_to_oz',
'pound_to_kg','kg_to_pound','stone_to_kg','kg_to_stone',
'pint_to_l','l_to_pint','quart_to_l','l_to_quart',
'gal_to_l','l_to_gal','bar_to_l','l_to_bar']
이 프로그램은 무작위로 (예 : 134.23) 단위 쌍 (예 : kg-> 파운드)와 값을 선택해야하며, 사용자는 이러한 값을 변환해야합니다.
def input_handler(answer):
if answer == random_unit(ranval):
label2.set_text("Correct!")
else:
label2.set_text("Wrong!")
불행하게도 그런 식으로 프로그램은 '아무튼 : 사용자가 대답을 입력하면 그것이 정답이나 오답 인 경우
random_unit = random.choice(unit_list)
lower = 0.1001
upper = 2000.1001
range_width = upper - lower
ranval = round(random.random() * range_width + lower, 2)
, 프로그램은 함수에 의해 정의 계산으로 답을 비교하고 사용자를 말해야한다 t 작업, 그리고 codesculptor (codesculptor.org)는
TypeError: 'str' object is not callable
누군가가 코드에 어떤 문제가 있는지 나에게 설명하고 일을 해결하기 위해 무언가를 제안 시겠어요 오류가 반환 전자 문제.
'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