Python猜数字游戏:函数形式失效但直接编码正常的原因?
猜数字游戏封装函数失效的问题解决
你遇到的问题核心是没有接收takeGuess函数的返回值。在失效代码的startGame函数里,你只调用了takeGuess(),但没把函数返回的用户输入赋值给guess变量,导致guess一直是初始的0,循环里的判断逻辑完全基于这个0在跑,自然不会正常工作。
修正后的代码如下:
import random targetMin = int(input("Enter your range's minimum number: ")) targetMax = int(input("Enter your range's maximum number: ")) targetNum = int(random.randint(targetMin, targetMax)) def takeGuess(): guess = int(input("Enter your guess: ")) return guess def startGame(): guess = 0 while guess != targetNum: # 关键:将takeGuess的返回值赋值给guess变量 guess = takeGuess() if guess > targetNum: print("You guessed too high, guess again!") elif guess < targetNum: print("You guessed too low, guess again!") elif guess == targetNum: print("You win the game!") break startGame()
对比正常运行的代码,它直接将input的结果赋值给了guess,而你的封装版本只是调用了函数却没接住返回值,这就是两者的本质区别。
内容的提问来源于stack exchange,提问作者iwy
相关产品推荐
相关产品推荐

