python - 如何将关键字放入我的代码中?

标签 python python-3.x idioms decomposition parameterization

好吧,我该如何编写我的代码,而不是输入 1 到 4,我可以只输入“Freezing”或“Froze”之类的关键字,我如何在我的代码中添加关键字搜索器,非常感谢所有帮助,谢谢你先进了:)

    def menu():
  print("Welcome to Kierans 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()

最佳答案

由于您希望用户输入手机问题的描述,因此您可能需要问题列表以及与这些问题相关的关键字。以下程序显示了如何安排这样的数据库以及如何根据用户的输入搜索它。此解决方案有更快的替代方案(例如对数据库建立索引),但目前这种基本实现应该足够了。您将需要提供有关如何解决问题的更多代码和信息,但对上一个问题的回答应该有助于在这方面指导您。

#! /usr/bin/env python3

# The following is a database of problem and keywords for those problems.
# Its format should be extended to take into account possible solutions.
PROBLEMS = (('My phone does not turn on.',
             {'power', 'turn', 'on', 'off'}),
            ('My phone is freezing.',
             {'freeze', 'freezing'}),
            ('The screen is cracked.',
             {'cracked', 'crack', 'broke', 'broken', 'screen'}),
            ('I dropped my phone in water.',
             {'water', 'drop', 'dropped'}))


# 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():
    """Find out what problem is being experienced and provide a solution."""
    description = input('Please describe the problem with your phone: ')
    words = {''.join(filter(str.isalpha, word))
             for word in description.lower().split()}
    for problem, keywords in PROBLEMS:
        if words & keywords:
            print('This may be what you are experiencing:')
            print(problem)
            if get_response('Does this match your problem? '):
                print('The solution to your problem is ...')
                # Provide code that shows how to fix the problem.
                break
    else:
        print('Sorry, but I cannot help you.')


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

关于python - 如何将关键字放入我的代码中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35440277/

相关文章:

函数中条件返回的 Pythonic 方式

Python 语言环境感知字符串比较

python - Networkx - 如何从 "all_pairs_shortest_path_length"函数中获取值(value)?

python - 拆开两列

python - Tkinter(Python 3.5): TypeError when calling `.configure` on a label object

python - ufunc 与 Numpy 中的基本算术运算符

c++ - 是否有任何对 C++ win32 多线程编程很重要的常见设计模式或常见习语?

python - 从另一个模型创建模型 - 使用 Many2one 字段 - Odoo v8

python - 在Python中创建同级文件名

python - 如果 __name__ == "__main__": do? 会怎样