Python新手 – 摇滚,纸,剪刀
我是
Python的新手,并决定为自己设置一个Rock,Paper,Scissors游戏编程的挑战而不复制别人的代码.但是,我需要Pythonista成年人的帮助!
我在Rock,Scissors上看过很多其他的变化,但没有什么可以解释为什么我的版本不起作用.我的程序基本上遵循这种格式:在开始时设置空变量,定义打印介绍文本的4个函数,接收玩家输入,随机选择计算机的选择,然后评估玩家是赢还是输. 然后,一旦玩家选择他们不想再玩,就会陷入一个中断循环. (这位工作正常) 但是,每当我运行代码时,它总是给出一个绘图,并且似乎不存储计算机选择函数调用的任何数据.有人知道我做错了什么吗? 非常感谢! import random playerAnswer = '' computerAnswer = '' winsTotal = 0 timesPlayed = 0 def showIntroText(): print('Time to play Rock,Scissors.') print('Type in your choice below:') def playerChoose(): playerInput = input() return def computerChoose(): randomNumber = random.randint(1,3) if randomNumber == 1: computerPick = 'Paper' elif randomNumber == 2: computerPick = 'Scissors' else: computerPick = 'Rock' return def assessResult(): if playerAnswer == computerAnswer: print('Draw!') elif playerAnswer == 'Rock' and computerAnswer == 'Paper': print('Paper beats Rock. You lose!') elif playerAnswer == 'Paper' and computerAnswer == 'Scissors': print('Scissors cuts Paper. You lose!') elif playerAnswer == 'Scissors' and computerAnswer == 'Rock': print('Rock blunts Scissors. You lose!') else: print('You win!') winsTotal += 1 return while True: timesPlayed += 1 showIntroText() playerAnswer = playerChoose() computerAnswer = computerChoose() assessResult() print('Do you want to play again? (y/n)') playAgain = input() if playAgain == 'n': break print('Thank you for playing! You played ' + str(timesPlayed) + ' games.') 解决方法
在大多数情况下,您错过了返回值.
**在playerChoose()中添加’return playerInput’而不是仅返回. **在computerChoose()中添加’return computerPick’而不是return. **在evaluateResult()中将winsTotal变量用作’winsTotal = 0’之前初始化winsTotal变量. **在程序开始时初始化的变量超出了函数范围. 请查看此StackOverFlow link以了解python中的变量范围. **在assessmentResult()中添加’return winsTotal’而不是return. import random def showIntroText(): print('Time to play Rock,Scissors.') print('Type in your choice below:') def playerChoose(): playerInput = input() return playerInput def computerChoose(): randomNumber = random.randint(1,3) if randomNumber == 1: computerPick = 'Paper' elif randomNumber == 2: computerPick = 'Scissors' else: computerPick = 'Rock' return computerPick def assessResult(winsTotal): if playerAnswer == computerAnswer: print('Draw!') elif playerAnswer == 'Rock' and computerAnswer == 'Paper': print('Paper beats Rock. You lose!') elif playerAnswer == 'Paper' and computerAnswer == 'Scissors': print('Scissors cuts Paper. You lose!') elif playerAnswer == 'Scissors' and computerAnswer == 'Rock': print('Rock blunts Scissors. You lose!') else: print('You win!') winsTotal += 1 return winsTotal total_win = 0 while True: timesPlayed += 1 showIntroText() playerAnswer = playerChoose() computerAnswer = computerChoose() total_win = assessResult(total_win) print('Do you want to play again? (y/n)') playAgain = input() if playAgain == 'n': break print('Thank you for playing! You played ' + str(timesPlayed) + ' games.' + 'Out of which you won '+ str(total_win)) 输出: C:Usersdinesh_pundkarDesktop>python c.py Time to play Rock,Scissors. Type in your choice below: "Rock" You win! Do you want to play again? (y/n) "y" Time to play Rock,Scissors. Type in your choice below: "Rock" Draw! Do you want to play again? (y/n) "y" Time to play Rock,Scissors. Type in your choice below: "Rock" Paper beats Rock. You lose! Do you want to play again? (y/n) "y" Time to play Rock,Scissors. Type in your choice below: "Rock" Paper beats Rock. You lose! Do you want to play again? (y/n) "n" Thank you for playing! You played 4 games.Out of which you won 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |