簡體   English   中英

Python猜謎游戲[骰子]

[英]Python guessing game [Dice]

import random

number = random.randrange(1, 10)
print(number)
guess_count = 0
guess_limit = 3
out_of_gusses = False
guess = int(input("enter ur guess: "))

while guess > number or guess != number and not out_of_gusses:
    if guess > number:
        print("ur guess is higer than the number")
    else:
        print("ur guess is lower than the number:")

    if guess_count < guess_limit:
        guess = int(input("enter ur guess: "))
        guess_count += 1
    else:
        out_of_gusses = True

    if out_of_gusses:
        print("Out of guesses u lose: ")
    else:
        print("u Win")

我的問題是,當我運行程序並且我確實輸入了我的號碼時,它說即使號碼錯誤u win了,當限制設置為 3 時,我也嘗試了 4 次guess:limit = 3

我是編碼新手,所以我不確定問題是什么,但我認為它與我的 while 循環的條件有關,但我不能完全理解我應該如何分階段

以下是如何將整個邏輯重組為簡單有效的方法:

import random

number = random.randrange(1, 10)
print(number)
guess_count = 0
guess_limit = 3

while True:
    if guess_count < guess_limit:
        guess = int(input("enter ur guess: "))
        guess_count += 1
        if guess == number:
            print("u Win")
            break
    else:
        print("Out of guesses u lose: ")
        break
    
    if guess > number:
        print("ur guess is higer than the number")
    elif guess < number:
        print("ur guess is lower than the number:")

基本上,您會創建一個無限循環,如果猜測正確或他們的猜測用完了,您就可以打破這個無限循環。 這樣,您就可以將整個骰子游戲邏輯放入該while循環中。

你的代碼有一些缺陷

while guess > number or guess != number and not out_of_gusses:

這解決了

while guess != number and not out_of_gusses:

因為只要guess > numbertrueguess != number無論如何true 這也意味着,如果您的猜測首先是正確的,則根本不會執行 while 循環。

你關閉一個guess_count來自這樣一個事實,即你用 0 初始化guess_count忽略了初始猜測。

if out_of_gusses:
  print("Out of guesses u lose: ")
else:
  print("u Win")

這個結論是不正確的,僅僅因為你沒有猜錯並不意味着你贏了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM