2016-02-15 29 views
-3

我有一個Python代碼來解決手機和我想知道什麼是跳轉到時候我例如輸入一個特定的問題「碎屏」你如何添加一個列表跳轉到我的代碼上的一行?

IM真的卡住,需要最好的方式完成這件事我體會非常所有回答

def menu(): 
    print("Welcome to Sams Phone Troubleshooting program") 
    print("Please Enter your name") 
    name=input() 
    print("Thanks for using Kierans Phone Troubleshooting program "+name) 
    print("Would you like to start this program? Please enter either y for yes or n for no") 
    select=input() 
    if select=="y": 
     troubleshooter() 
    elif select=="n": 
     quit 
    else: 
     print("Invalid please enter again") 
     menu() 
def troubleshooter(): 
    print("Does Your Phone Turn On") 
    answer=input() 
    if answer=="y": 
     print("Does it freeze?") 
    else: 
     print("Have you plugged in a charger?") 
    answer=input() 

    if answer=="y": 
     print("Charge it with a diffrent charger in a diffrent phone socket") 
    else: 
     print("Plug it in and leave it for 20 mins, has it come on?") 
    answer=input() 

    if answer=="y": 
     print("Is there any more problems?") 
    else: 
     print("Is the screen cracked?") 
    answer=input() 

    if answer=="y": 
     print("Restart this program") 
    else: 
     print("Thank you for using my troubleshooting program!") 
    answer=input() 

    if answer=="y": 
     print("Replace screen in a shop") 
    else: 
     print("Take it to a specialist") 
    answer=input() 

    if answer=="y": 
     print("Did you drop your device in water?") 
    else: 
     print("Make sure the sim card is inserted properly and do a hard reset on the device") 
    answer=input() 

    if answer=="y": 
     print("Do not charge it and take it to the nearest specialist") 
    else: 
     print("Try a hard reset when the battery has charge") 
    answer=input() 



menu() 
+1

我需要添加什麼代碼?並btw非常感謝你 –

+3

將邏輯分成單獨的問題,你可以單獨調用。 – poke

+1

可以請你這樣做,我會非常感謝 –

回答

-1

以下代碼應該提供一個框架,在該框架上構建和擴展您的問題中的程序。大部分代碼應該與當前編寫的一樣好,但是如果需要,您可以擴展它的功能。要繼續構建可以問什麼問題以及給出了什麼答案,請考慮在文件頂部的數據庫中添加更多部分。案例可以很容易地擴充。

#! /usr/bin/env python3 

"""Cell Phone Self-Diagnoses Program 

The following program is designed to help users to fix problems that they may 
encounter while trying to use their cells phones. It asks questions and tries 
to narrow down what the possible cause of the problem might be. After finding 
the cause of the problem, a recommended action is provided as an attempt that 
could possibly fix the user's device.""" 

# This is a database of questions used to diagnose cell phones. 
ROOT = 0 
DATABASE = { 
      # The format of the database may take either of two forms: 
      # LABEL: (QUESTION, GOTO IF YES, GOTO IF NO) 
      # LABEL: ANSWER 
      ROOT: ('Does your phone turn on? ', 1, 2), 
      1: ('Does it freeze? ', 11, 12), 
      2: ('Have you plugged in a charger? ', 21, 22), 
      11: ('Did you drop your device in water? ', 111, 112), 
      111: 'Do not charge it and take it to the nearest specialist.', 
      112: 'Try a hard reset when the battery has charge.', 
      12: 'I cannot help you with your phone.', 
      21: 'Charge it with a different charger in a different phone ' 
       'socket.', 
      22: ('Plug it in and leave it for 20 minutes. Has it come on? ', 
       221, 222), 
      221: ('Are there any more problems? ', 222, 2212), 
      222: ('Is the screen cracked? ', 2221, 2222), 
      2212: 'Thank you for using my troubleshooting program!', 
      2221: 'Replace in a shop.', 
      2222: 'Take it to a specialist.' 
      } 

# These are possible answers accepted for yes/no style questions. 
POSITIVE = tuple(map(str.casefold, ('yes', 'true', '1'))) 
NEGATIVE = tuple(map(str.casefold, ('no', 'false', '0'))) 


def main(): 
    """Help diagnose the problems with the user's cell phone.""" 
    verify(DATABASE, ROOT) 
    welcome() 
    ask_questions(DATABASE, ROOT) 


def verify(database, root): 
    """Check that the database has been formatted correctly.""" 
    db, nodes, visited = database.copy(), [root], set() 
    while nodes: 
     key = nodes.pop() 
     if key in db: 
      node = db.pop(key) 
      visited.add(key) 
      if isinstance(node, tuple): 
       if len(node) != 3: 
        raise ValueError('tuple nodes must have three values') 
       query, positive, negative = node 
       if not isinstance(query, str): 
        raise TypeError('queries must be of type str') 
       if len(query) < 3: 
        raise ValueError('queries must have 3 or more characters') 
       if not query[0].isupper(): 
        raise ValueError('queries must start with capital letters') 
       if query[-2:] != '? ': 
        raise ValueError('queries must end with the "? " suffix') 
       if not isinstance(positive, int): 
        raise TypeError('positive node names must be of type int') 
       if not isinstance(negative, int): 
        raise TypeError('negative node names must be of type int') 
       nodes.extend((positive, negative)) 
      elif isinstance(node, str): 
       if len(node) < 2: 
        raise ValueError('string nodes must have 2 or more values') 
       if not node[0].isupper(): 
        raise ValueError('string nodes must begin with capital') 
       if node[-1] not in {'.', '!'}: 
        raise ValueError('string nodes must end with "." or "!"') 
      else: 
       raise TypeError('nodes must either be of type tuple or str') 
     elif key not in visited: 
      raise ValueError('node {!r} does not exist'.format(key)) 
    if db: 
     raise ValueError('the following nodes are not reachable: ' + 
         ', '.join(map(repr, db))) 


def welcome(): 
    """Greet the user of the application using the provided name.""" 
    print("Welcome to Sam's Phone Troubleshooting program!") 
    name = input('What is your name? ') 
    print('Thank you for using this program, {!s}.'.format(name)) 


def ask_questions(database, node): 
    """Work through the database by asking questions and processing answers.""" 
    while True: 
     item = database[node] 
     if isinstance(item, str): 
      print(item) 
      break 
     else: 
      query, positive, negative = item 
      node = positive if get_response(query) else negative 


def get_response(query): 
    """Ask the user yes/no style questions and return the results.""" 
    while True: 
     answer = input(query).casefold() 
     if answer: 
      if any(option.startswith(answer) for option in POSITIVE): 
       return True 
      if any(option.startswith(answer) for option in NEGATIVE): 
       return False 
     print('Please provide a positive or negative answer.') 


if __name__ == '__main__': 
    main() 
+0

如果這個答案有什麼問題,請提供一個編輯來解決問題或者評論提出改進建議。 –

+0

非常感謝你先生你非常有才華:) –

+0

@KieranMcCarthy請考慮閱讀[我應該怎麼做當有人回答我的問題?](http://stackoverflow.com/help/someone-answers)。如果上面顯示的代碼適合您的需求,您可能想要接受答案。 –

0

這是我在複製代碼時的最佳嘗試。 我提出了幾個問題def(),以便您可以分別調用每個問題。 我希望這是你想要的!

def menu(): 
    print("Welcome to Sams Phone Troubleshooting program") 
    print("Please Enter your name") 
    name=input() 
    print("Thanks for using Kierans Phone Troubleshooting program "+name +"\n") 

def start(): 
    select = " " 
    print("Would you like to start this program? Please enter either y for yes or n for no") 
    select=input() 
    if select=="y": 
    troubleshooter() 
    elif select=="n": 
    quit 
    else: 
    print("Invalid please enter again") 

def troubleshooter(): 
    print("""Please choose the problem you are having with your phone (input 1-4): 
1) My phone doesn't turn on 
2) My phone is freezing 
3) The screen is cracked 
4) I dropped my phone in water\n""") 
    problemselect = int(input()) 
    if problemselect ==1: 
    not_on() 
    elif problemselect ==2: 
    freezing() 
    elif problemselect ==3: 
    cracked() 
    elif problemselect ==4: 
    water() 
    start() 

def not_on(): 
    print("Have you plugged in the charger?") 
    answer = input() 
    if answer =="y": 
    print("Charge it with a diffrent charger in a diffrent phone socket. Does it work?") 
    else: 
    print("Plug it in and leave it for 20 mins, has it come on?") 
    answer = input() 
    if answer=="y": 
    print("Are there any more problems?") 
    else: 
    print("Restart the troubleshooter or take phone to a specialist\n") 
    answer=input() 
    if answer =="y": 
    print("Restart this program") 
    else: 
    print("Thank you for using my troubleshooting program!\n") 

def freezing(): 
    print("Charge it with a diffrent charger in a diffrent phone socket") 
    answer = input("Are there any more problems?") 
    if answer=="y": 
    print("Restart the troubleshooter or take phone to a specialist\n") 
    else: 
    print("Restart this program\n") 

def cracked(): 
    answer =input("Is your device responsive to touch?") 
    if answer=="y": 
    answer2 = input("Are there any more problems?") 
    else: 
    print("Take your phone to get the screen replaced") 
    if answer2=="y": 
    print("Restart the program or take phone to a specialist\n") 
    else: 
    print("Thank you for using my troubleshooting program!\n") 

def water(): 
    print("Do not charge it and take it to the nearest specialist\n") 

menu() 
while True: 
    start() 
    troubleshooter() 

希望這會有所幫助,如果有代碼的小問題,那麼只是給我發消息! (我對這個網站比較陌生!)

+0

非常感謝你我非常感謝你的幫助,你是一個非常善良的人,但我更多的是要求我輸入一個關鍵字,比如「屏幕凍結」而不是數字,再次非常感謝你對我的幫助。 )) –

+0

我的Skype是kkid19,如果你想幫助我,我會過度感謝 –

+0

@KieranMcCarthy不知道你是否已經解決了你的問題,但只是改變關鍵字的數字應該是你想要的!改變'problemselect == 1'到'problemselect ==「Broken Screen」'等,看看是否有效:)可能需要一點調整,但祝你好運! –

相關問題