我如何将if else语句放入抽象函数中?

时间:2018-07-26 18:05:07

标签: python-3.x function global-variables

我正在制作一个Dichotomous Key程序,它在其中询问问题以确定所讨论生物的名称。这是现在的样子:

step = 0
yes = ["y", "yes"]
no = ["n", "no"]
while step == 0:
    q1 = input("Are the wings covered by an exoskeleton? (Y/N) ")
    q1 = q1.lower()
    if q1 in yes:
        step += 1
    elif q1 in no:
        step += 2
    else:
        print("Huh?")

如何将if和else语句放入函数中,以便可以在每个问题中重用它并更改step变量?

-谢谢

1 个答案:

答案 0 :(得分:0)

这是一个有效的示例:

    step = 0

    def update_step(q): 
        yes = ["y", "yes"]
        no = ["n", "no"]
        global step
        if q in yes:
            step += 1
        elif q in no:
            step += 2
        else:
            print("Huh?")


    while step == 0:
        q = input("Are the wings covered by an exoskeleton? (Y/N)")
        update_step(q.lower())

    print(step)

但是我认为这不是解决问题的好方法

更新: 我喜欢简单,这就是为什么我尽可能地摆脱状态。例如,我会这样写:

    total_steps = 0

    def is_yes(answer):
        return answer in ["y", "yes"]

    def is_no(answer):
        return answer in ["n", "no"]

    def get_steps(answer):
        if is_yes(answer):
            return 1
        elif is_no(answer):
            return 2
        return 0

    while True:
        answer = input('question? ')
        steps = get_steps(answer.lower())
        if steps == 0:
            continue
        total_steps += steps
        break

    print(total_steps)

您可以使用更高级的技术来使其更好,但让我们保持简单:)