亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python 中的循環外調用迭代變量

在 Python 中的循環外調用迭代變量

阿波羅的戰車 2023-06-20 17:20:17
我正在制作一個簡單的猜謎游戲。我在一個名為的函數中有一個變量guess_left,它預設了一個值。在 while 循環中,每當有人猜錯時,該值就會減 1,直到沒有更多的猜測可用并且循環中斷。我如何將遞減的變量從循環中取出并在該人獲勝時將其作為獲勝消息打印出來,如print(f"Congrats. You won with {guess_left} tries left.")Or 經過一定次數的嘗試?完整代碼:from random import randintdef generator():    return randint(1, 1024)def rand_guess():    random_number = generator()    guess_left = 25    flag = 0    while guess_left > 0:        guess = int(input("Please enter your lucky number: "))        if guess == random_number:            flag = 1            break        elif guess < random_number:            guess_left -= 1            print(f"Wrong Guess. Your number should be higher! You have {guess_left} tries left.")        else:            guess_left -= 1            print(f"Wrong Guess. Your number should be lower! You have {guess_left} tries left.")    if flag == 1:        return True    else:        return Falseif __name__ == '__main__':    if rand_guess() is True:        print(f"Congrats! You won.")    else:        print("Sorry, you lost the game!")
查看完整描述

4 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

有許多不同的方法可以解決這樣的問題,您必須考慮它們并決定哪種方法最適合您的編程風格。

使 guess_left 成為全局變量: 從純技術的角度來看,您可以創建guess_left一個全局變量以便在rand_guess函數外部訪問它,

返回剩余的猜測數量 然而,通常最好不要創建太多全局變量,因為它會導致代碼難以閱讀(并且經常有錯誤)。您是否考慮過返回rand_guess剩余的猜測數量。

將游戲結束狀態打印消息移動到 rand_guess 函數中:您還可以將游戲結束時的所有打印語句移動到函數內部 rand_guess,即您當前返回 true 或 false 的位置。

在考慮選擇哪種解決方案時,請考慮以下事項:一個月后我是否仍能理解這段代碼的作用?其他人能理解這段代碼的作用嗎?


查看完整回答
反對 回復 2023-06-20
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

這是一個從一個函數返回多個結果的例子。


    if flag == 1:

        return [True, guess_left]

    else:

        return [False, guess_left]


    if __name__ == '__main__':

        result = rand_guess()

        if result[0] is True:

            guess_left = result[1]

            print(f"Congrats. You won with {guess_left} tries left.")

        else:

            print("Sorry, you lost the game!")


查看完整回答
反對 回復 2023-06-20
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

好吧,定義一個全局變量是可能的,但通常被認為是糟糕的風格,因為隨著項目的增長,它們往往很難跟蹤。范圍界定是一件美麗的事情!你為什么不嘗試這樣做,返回剩下的猜測次數:


def rand_guess():

    random_number = generator()


    for i in range(25, 0, -1):

        guess = int(input("Please enter your lucky number: "))

        if guess == random_number:

            return i-1

    return 0


if __name__ == '__main__':

    guesses_left = rand_guess()

    if guesses_left:

        print(f"Congrats! You won with {guesses_left} guesses left.")

    else:

        print("Sorry, you lost the game!")


查看完整回答
反對 回復 2023-06-20
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

您可以初始化guess_left為全局變量,并在函數內部不斷對其進行更新。


像這樣:


from random import randint

guess_left = 25


def generator():

    return randint(1, 1024)


def rand_guess():

    random_number = generator()

    flag = 0


    global guess_left

    while guess_left > 0:

        guess = int(input("Please enter your lucky number: "))

        if guess == random_number:

            flag = 1

            break

        elif guess < random_number:

            guess_left -= 1

            print(f"Wrong Guess. Your number should be higher! You have {guess_left} tries left.")

        else:

            guess_left -= 1

            print(f"Wrong Guess. Your number should be lower! You have {guess_left} tries left.")


    if flag == 1:

        return True

    else:

        return False


if __name__ == '__main__':

    if rand_guess() is True:

        print(f"Congrats. You won with str(guess_left) tries left.")

    else:

        print("Sorry, you lost the game!")


查看完整回答
反對 回復 2023-06-20
  • 4 回答
  • 0 關注
  • 214 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號