Python 基础知识问题(全局变量在 while 循环中未更新)

问题描述 投票:0回答:1

“turns”变量不会更新,并保持在起始值 10 或 5。我已经尝试了几件事,最终可能会自己解决它。但我想因为我才开始编程大约两周,所以希望有人能解释为什么我的代码不能按原样工作。我觉得应该这样,因为变量不在函数中。 :)

### A simple 1 - 100 number guessing game. Supposed to loop either 10 or 5 times depending on selecting easy or hard mode.

import random
#from replit import clear
#from art import logo

EASY_TURNS = 10
HARD_TURNS = 5

number = 0
guess = 0

def play_game():
  #print(logo)
  print("Welcome to my guessing game.")
  
  def pick_number():
    number = random.randint(1, 101)
    return number

  def set_difficulty():
    level = input("Type 'easy or 'hard' for difficulty: ")
    if level == 'easy':
      return EASY_TURNS
    else:
      return HARD_TURNS
  
  number = pick_number()
  turns = set_difficulty()
  print("I'm thinking of a number 1 -100.")
  guess = int(input("What number would you like to choose? "))

  while guess != number:
    if guess > number:
      print(f"Turns left: {turns}")
      guess = int(input(f"{guess} is too high. Try again: "))
      turns - 1
    else:
      print(f"Turns left: {turns}")
      guess = int(input(f"{guess} is too low. Try again: "))
      turns - 1
      
      
    if turns == 0:
      input("Sorry you are out of guesses. Play again? 'y' or 'n': ") == 'y'
      #clear()
      play_game()
    #else:
      #clear()
  if guess == number:
    print(f"You win with {number}.")
    if input("Play again? 'y' or 'n': ") == 'y':
      #clear()
      play_game()
    #else:
      #clear()
  
play_game()

输出:(圈数未倒计时)

Welcome to my guessing game.

输入“简单”或“困难”来表示难度:简单 我在想一个数字 1 -100。 您想选择什么号码? 50 左转:10 50太低了。再试一次:75 左转:10 75太低了。再试一次:85 左转:10 85太高了。再试一次:.

python variables global-variables
1个回答
0
投票

你从不更新

turns
。你刚刚:

turns - 1

当您需要分配给

turns
时:

turns = turns - 1

或者更好:

turns -= 1
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.