2013-06-17 2 views
0

У меня есть программа python с оператором 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

Речь идет не о синтаксисе, а о том, как вы структурируете программу. Вы просто изучаете программирование? Если это так, я бы предложил взять несколько бесплатных онлайн-курсов (которые теперь многочисленны, всего несколько платформ *: академия хан, Coursera, Udacity, edX и т. Д.) – J0HN

+0

Или Codeacademy, у них есть курс Python. – 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 

Любопытный, нет? Попробуйте некоторые из этих материалов для себя в переводчике.

Смежные вопросы