2013-06-17 2 views
0

if 문이있는 파이썬 프로그램이 있습니다. if 문에 선택 항목을 추가하고 싶습니다. 어떻게 처리합니까?Python, if 문에 선택 항목을 추가하는 방법

def start(): 

    print ("A Wise man once said ...") 
    o1 = input("\n" + 
     "[L]ook to the poverty of Africa ... [T]HIS HAS YET TO BE WRITTEN") 

    if o1 == "L" or "l" or "Africa" or "1": 
     print ("\n" + "You decide only a radical solution is viable...") 
    else: 
     print ("THIS IS NOT WRITTEN YET") 

def menu(): 

    print ("Menu\n") 
    print ("(1)Start") 
    print ("(2)Exit\n\n") 
    choice = (input('>>')) 
    if choice=="1": 
     start() 
    if choice=="2": 
     quit() 

menu() 

난 다음에이 옵션을 만들려고 노력하고 있어요 : 나는 이야기로 끝날 수 있도록 내가 더 많은 옵션과 선택을 추가하는 방법에 대해 이동하는 방법을

o2 = input (
    "\n" + "[D]ecide to take advantage ..., or T[H]IS HAS YET TO BE WRITTEN?"*) 

를?

+0

'menu' 함수를 사용하고 있습니까? 그렇지 않다면, 나는 당신이 그 일을 바른 길에 있다고 생각한다 - 사용자가 옵션을 선택하면 실행 가능한 호출 가능 항목과 함께 메뉴에 옵션 목록을 전달할 수있다. –

+1

그것은 구문에 관한 것이 아니라 프로그램 구조에 관한 것입니다. 방금 프로그래밍을 배우고 있습니까? 그렇다면 나는 무료 온라인 강좌를 수강 할 것을 제안 할 것입니다.이 강좌는 수많은 칸트 (khan academy, Coursera, Udacity, edX 등)입니다. – J0HN

+0

또는 Codeacademy, 그들은 파이썬 강좌를 가지고 있습니다. – 2rs2ts

답변

1

이 작업을 수행하는 좋은 방법이 몇 가지 있지만 사전을 사용하는 클래스 ("option_node"라고도 함)를 만들 수 있습니다. 클래스는 프롬프트 텍스트를 유지 한 다음 텍스트 옵션을 다른 option_nodes 또는 대화 상자를 끝내는 특수 옵션 노드에 매핑 한 사전을 보유합니다.

class option_node: 
    def __init__(self, prompt): 
     self.prompt = prompt 
     self.options = {} 

    def add_option(self, option_text, next_node): 
     self.options[option_text] = next_node 

    def print_prompt(self): 
     print(prompt) 

    def select_input(self): 
     for each in self.options: 
      print(each) 
     while(True) 
      user_input = input(">>") 
      if self.options.get(in): 
       return self.options.get(in) 


def main(): 
    nodes = [] 
    nodes.append(option_node("Welcome")) 
    nodes.append(option_node("Stay Awhile")) 
    nodes.append(option_node("That's fine, I don't like you much either")) 

    nodes[0].add_option("Hello friend", nodes[1]) 
    nodes[0].add_option("Hello enemy", nodes[2]) 

    nodes[1].options = None 
    nodes[2].options = None 

    current_node = nodes[0] 
    while current_node.options is not None: 
     current_node.print_prompt() 
     current_node = current_node.select_input() 

희망이 있습니다. 당신이

+0

정교함을 높이 평가할 것입니다. 시간 내 주셔서 감사합니다 :-) – user2490630

+0

조금 더 추가했습니다. 이 샘플을 테스트하지는 않았지만 일부 유형의 대화식 플로우를 작성하기 위해 작성한 클래스를 사용하는 방법을 보여 주어야합니다. – DavidJFelix

0

elif를 사용하여 새로운 조건을 추가하려는 경우 내가 (다른 경우) 더 정교한 수 있습니다

if ... 
elif o1 == "D" or o1 == "H": 
    # your code here 
else ... 

을 그건 그렇고, 당신은 당신의 조건문에 구문 오류가 있습니다. 이 그것을 수정 :

if o1 == "L" or o1 == "l" or o1 == "Africa" or o1 == "1": 

을 그것이 쉽게 경우에이 방법을 보면 : 당신은 당신의 문에 작업의 순서에 대해 생각해야

if (o1 == "L") or (o1 == "l") or (o1 == "Africa") or (o1 == "1"): 

. or==보다 높은 우선 순위를가집니다. 또한, "L" or "l"의 의미는 귀하가 생각하는 바가 아닙니다.

>>> if "L" or "l": 
... print("foo") 
... 
foo 

호기심? 통역관에서 직접 해보십시오.