如何使这种构造更简单,比如python中的类或函数?

如何使这种构造更简单,比如python中的类或函数?,python,list,function,class,if-statement,Python,List,Function,Class,If Statement,我有26条这样的语句,我想知道我是否可以让类变得更简单, 函数、列表或其他我找不到的方法???您可以创建一个包含问答的类。还可以在类中添加函数来检查输入是否与答案相同,并相应地返回结果。您可以使用正则表达式从问题文本中获取正确答案的值。您可以创建一个包含问题和答案的类。还可以在类中添加函数来检查输入是否与答案相同,并相应地返回结果。您可以使用正则表达式从问题文本中获取正确答案的值。我建议使用以下内容: print( "1. Engine block \n" "2. Pistons

我有26条这样的语句,我想知道我是否可以让类变得更简单,

函数、列表或其他我找不到的方法???

您可以创建一个包含问答的类。还可以在类中添加函数来检查输入是否与答案相同,并相应地返回结果。您可以使用正则表达式从问题文本中获取正确答案的值。

您可以创建一个包含问题和答案的类。还可以在类中添加函数来检查输入是否与答案相同,并相应地返回结果。您可以使用正则表达式从问题文本中获取正确答案的值。

我建议使用以下内容:

print(
    "1. Engine block \n"
    "2. Pistons \n"
    "3. Crankshaft \n"
    "4. Camshaft \n"
    "5. Cylinder head \n"
    "6. Connecting Rod \n"
)

part = int(input("Choose an engine part to show you details about it: "))

if part == 1:
    print("Engine block")
elif part == 2:
    print("Pistons")
elif part == 3:
    print("Crankshaft")
def信息\u关于(部件):
信息=列表(parts.values())
打印(“\n”.join(f”{i+1}.\t\t{name}”表示i,枚举(部分)中的名称)
打印()
尽管如此:
零件=输入(“选择发动机零件以向您显示其详细信息:”)
如果不是part.isnumeric():
打印(“请输入有效数字”)
持续
部分=整数(部分)
如果零件>透镜(信息)或零件<1:
打印(“请输入有效数字”)
持续
打破
打印(信息[第1部分])
零件={
“发动机缸体”:“发动机缸体信息”,
“活塞”:“关于活塞的信息”,
“曲轴”:“曲轴信息”,
“凸轮轴”:“关于凸轮轴的信息”,
“气缸盖”:“关于气缸盖的信息”,
“连杆”:“连杆信息”,
}
关于(零件)的信息

现在检查输入以确保它是有效的-它是数字,并且它介于1和零件数之间。

我建议使用如下方式:

print(
    "1. Engine block \n"
    "2. Pistons \n"
    "3. Crankshaft \n"
    "4. Camshaft \n"
    "5. Cylinder head \n"
    "6. Connecting Rod \n"
)

part = int(input("Choose an engine part to show you details about it: "))

if part == 1:
    print("Engine block")
elif part == 2:
    print("Pistons")
elif part == 3:
    print("Crankshaft")
def信息\u关于(部件):
信息=列表(parts.values())
打印(“\n”.join(f”{i+1}.\t\t{name}”表示i,枚举(部分)中的名称)
打印()
尽管如此:
零件=输入(“选择发动机零件以向您显示其详细信息:”)
如果不是part.isnumeric():
打印(“请输入有效数字”)
持续
部分=整数(部分)
如果零件>透镜(信息)或零件<1:
打印(“请输入有效数字”)
持续
打破
打印(信息[第1部分])
零件={
“发动机缸体”:“发动机缸体信息”,
“活塞”:“关于活塞的信息”,
“曲轴”:“曲轴信息”,
“凸轮轴”:“关于凸轮轴的信息”,
“气缸盖”:“关于气缸盖的信息”,
“连杆”:“连杆信息”,
}
关于(零件)的信息

现在检查输入以确保它是有效的-它是数字的,并且它在1和部分数量之间。

创建一个包含所有键的dict,就像这样,并在每次需要索引时使用它,这将很容易维护

def info_about(parts):
    info = list(parts.values())
    print("\n".join(f"{i+1}.\t\t{name}" for i, name in enumerate(parts)))

    print()
    while True:
        part = input("Choose an engine part to show you details about it: ")
        if not part.isnumeric():
            print("Please enter a valid number")
            continue

        part = int(part)
        if part > len(info) or part < 1:
            print("Please enter a valid number")
            continue
        break

    print(info[part-1])

parts = {
    "Engine block":         "Info about engine block",
    "Pistons":              "Info about pistons",
    "Crankshaft":           "Info about crankshaft",
    "Camshaft":             "Info about camshaft",
    "Cylinder head":        "Info about cylinder head",
    "Connecting Rod":       "Info about connecting rod",
}

info_about(parts)

创建一个包含所有这些键的dict,并在每次需要索引时使用它,这样很容易维护

def info_about(parts):
    info = list(parts.values())
    print("\n".join(f"{i+1}.\t\t{name}" for i, name in enumerate(parts)))

    print()
    while True:
        part = input("Choose an engine part to show you details about it: ")
        if not part.isnumeric():
            print("Please enter a valid number")
            continue

        part = int(part)
        if part > len(info) or part < 1:
            print("Please enter a valid number")
            continue
        break

    print(info[part-1])

parts = {
    "Engine block":         "Info about engine block",
    "Pistons":              "Info about pistons",
    "Crankshaft":           "Info about crankshaft",
    "Camshaft":             "Info about camshaft",
    "Cylinder head":        "Info about cylinder head",
    "Connecting Rod":       "Info about connecting rod",
}

info_about(parts)

如果你真的想要一个额外的功能

labels = {
    1: {'name': 'Engine block', 'detail': 'Engine block detail'},
    2: {'name': 'Pistons', 'detail': 'Pistons detail'},
    3: {'name': 'PisCrankshafttons', 'detail': 'Crankshaft detail'},
}

for (k, val) in labels.items():
    print("%s: %s" % (k, val['name']))

part = int(input("Choose an engine part to show you details about it: "))

print(labels[part]['detail'])

如果你真的想要一个额外的功能

labels = {
    1: {'name': 'Engine block', 'detail': 'Engine block detail'},
    2: {'name': 'Pistons', 'detail': 'Pistons detail'},
    3: {'name': 'PisCrankshafttons', 'detail': 'Crankshaft detail'},
}

for (k, val) in labels.items():
    print("%s: %s" % (k, val['name']))

part = int(input("Choose an engine part to show you details about it: "))

print(labels[part]['detail'])

你可以看到这26条语句之间的共同点,并把它放在一个函数上。我想到了,但我想输出每个部分,就像活塞、曲轴和凸轮轴与发动机缸体一样,这会不会破坏它们描述的部分,这不是四个部分的一个描述吗?你可以做一个功能,你传递一个dict,然后像下面的答案一样打印信息。你可以看到这26个语句之间的共同点,然后把它放在一个功能上。我想到了这一点,但我想自己输出每个部分,比如活塞、曲轴和凸轮轴与发动机缸体的共同点,这难道不是抄袭了他们的部分描述吗?这难道不是显示了一个4部分的描述吗?你可以做一个功能,你传递一个口述,然后像下面的答案一样打印信息。我不是投反对票的人,但是如果我输入“test”…你只会得到错误。好的,已经修复了。谢谢:)这太棒了,我想不出任何改进,写得很好,有很多帮助,我想问我如何检查输入,但你明白我的意思:我不是投反对票的人,但是如果我输入“测试”,你就会出错。好的,我已经修正了。谢谢:)这太棒了,我想不出任何改进,写得很好,有很多帮助,我想问我如何检查输入,但你明白我的想法:DExtra函数总是一个好主意,我会玩我的代码并尝试压缩它,很棒的工作额外函数总是一个好主意,我会玩我的代码并尝试压缩它,伟大的工作,值得思考,我会尝试使用我的代码来处理类和函数,这是值得思考的,我会尝试使用我的代码来处理类和函数-