【问题标题】:How to store return value of function into a variable and subsequently use it in while loop?如何将函数的返回值存储到变量中,然后在while循环中使用它?
【发布时间】:2022-06-28 10:07:02
【问题描述】:

您好,我是 python 和一般编程的新手----一个完整的初学者。我在一些 youtube python 初学者课程中学习了 2 个小时,他做了一些猜谜游戏来演示 while 循环的应用。

我复制了它,以便练习编码,但我自己做了一些修改。

他制作了猜谜游戏,您可以使用 while 循环、if 和 else 函数以及布尔变量的组合来尝试猜词 3 次。

我的版本类似,但我希望它有一个计数器,您可以在其中知道您还剩多少次尝试。

secret_word = "Aircraft"
answer = ""
guess_count = 0
guess_limit = 3
remaining_guess = guess_limit - guess_count

while answer != secret_word and remaining_guess != 0:
    if guess_count < guess_limit and remaining_guess == 3:

        def re_guesses(remaining_guess_1):
            print("You have " + str(remaining_guess_1) + " remaining guesses")
            int(remaining_guess_1)
            return remaining_guess_1
        remaining_guess = re_guesses(remaining_guess)

        def guess_word(guess_count_1):

                answer = input("Enter answer: ")
                guess_count_1 += 1
                return guess_count_1

        guess_count = guess_word(guess_count)

    elif guess_count < guess_limit and remaining_guess == 2:

        def re_guesses(remaining_guess_1):
            print("You have " + str(remaining_guess_1) + " remaining guesses")
            int(remaining_guess_1)
            return remaining_guess_1

        remaining_guess = re_guesses(remaining_guess)

        def guess_word(guess_count_1):

            answer = input("Enter answer: ")
            guess_count_1 += 1
            return guess_count_1

        guess_count = guess_word(guess_count)

    else:
        def re_guesses(remaining_guess_1):
            print("You have " + str(remaining_guess_1) + " remaining guesses")
            int(remaining_guess_1)
            return remaining_guess_1

        remaining_guess = re_guesses(remaining_guess)

        def guess_word(guess_count_1):

            answer = input("Enter answer: ")
            guess_count_1 += 1
            return guess_count_1

        guess_count = guess_word(guess_count)



if remaining_guess == 0:
    print("You lost!!")
else:
    print("I can't believe you won!")

当我转换为整数时,我尝试将返回值 (remaining_guess_1) 再次存储到 remaining_guess。我对guess_count_1的返回值做了同样的事情,并将其存储在guess_count的原始变量中。

我希望结果是计数器会在每个错误答案后减去 1 次尝试,但它却卡在 “你还有 3 个剩余猜测”

请有人解释我做错了什么以及如何使它起作用。谢谢。

【问题讨论】:

  • 你永远不会在循环内减少remaining_guess
  • 因为你永远不会更新remaining_guess 的值。它以一个 int 开头,您将其作为 arg 传递给 re_guesses 并将其转换为 int(它已经是),然后返回该值并将其重新分配给 remaining_guess,但实际数值永不改变

标签: python python-3.x function if-statement while-loop


【解决方案1】:

我尝试了您的代码并找到了一些方法来简化 while 循环过程,这样您就不会拥有所有这些“if/else”块。移动定义和“while”循环,我想出了以下代码。

secret_word = "Aircraft"
answer = ""
guess_count = 0
guess_limit = 3
remaining_guesses = guess_limit

def re_guesses(remaining_guess_1):
    print("You have " + str(remaining_guess_1) + " remaining guesses")
    int(remaining_guess_1)

def guess_word(guess_count_1):
    answer = input("Enter answer: ")
    guess_count_1 += 1
    return answer
    
re_guesses(remaining_guesses)

while remaining_guesses != 0:
    answer = guess_word(guess_count)
    if (answer == secret_word):
        break
    else:
        print(answer, ' was not the correct answer')
        guess_count += 1
        remaining_guesses -= 1
        re_guesses(remaining_guesses)

if remaining_guesses == 0:
    print("You lost!!")
else:
    print("I can't believe you won!")

函数定义和初始提示在调用 while 循环之前移动。此外,我没有返回猜测计数,而是修改了“guess_word”函数以返回输入的答案。然后根据答案的正确性(或不正确性),如果答案正确,则使用“break”调用退出循环,如果不正确,则剩余的猜测计数会减少。如果用户在剩余计数达到零之前回答正确,则会通知他们获胜。

继续研究代码,看看它是否满足您的需求并为您提供一些想法。

问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2021-11-28
    • 2022-07-21
    相关资源
    最近更新 更多