首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python -如何将if else语句放入函数中以进行抽象?

python -如何将if else语句放入函数中以进行抽象?
EN

Stack Overflow用户
提问于 2018-07-27 02:05:07
回答 1查看 153关注 0票数 0

我正在制作一个二分法的关键程序,它会问一些问题来确定有问题的生物的名字。下面是它现在的样子:

代码语言:javascript
复制
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变量?

-Thanks

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-27 02:16:41

这是一个有效的示例:

代码语言:javascript
复制
    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)

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

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

代码语言:javascript
复制
    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)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51545043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档