如何添加列表以跳转到我的代码中的一行?

时间:2016-02-15 15:49:58

标签: python python-3.x

我有一个python代码来修复手机,我想知道什么是当我输入例如'破屏'时跳转到特定问题的最佳方式

我真的陷入困境,需要这样做我非常感谢所有答案

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()

2 个答案:

答案 0 :(得分: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()

希望这会有所帮助,如果代码存在小问题,那就告诉我吧! (我对这个网站来说比较新!)

答案 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()