- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经研究这段代码有一段时间了。我尝试了许多不同的方法来查找玩家在随机生成的单词中正确猜测的输入的索引 - 我认为我当前编写的内容应该有效,但我担心我忽略了一个非常简单的错误。事实上,每当我运行代码时,玩家所做的每一个猜测都被认为是正确的,此外,当我尝试引用值 player_guess
时,它不会出现在我的打印语句中 print(f"Correct !{player_guess} 就在这个词中!”)
。
我只是 python 的初学者(事实上,完全编码),我花了大约 8 个小时尝试在 stackoverflow 上之前类似问题的帮助下自己解决这些问题,但最终我遇到了困难,所以任何帮助将不胜感激。
#random module to choose random word from word_list.txt
import random
#port in word_list.txt and create list
word_list = ['rarely', 'universe', 'notice', 'sugar', 'interference', 'constitution', 'we', 'minus', 'breath', 'clarify', 'take', 'recording', 'amendment', 'hut', 'tip', 'logical', 'cast', 'title', 'brief', 'none', 'relative', 'recently', 'detail', 'port', 'such', 'complex', 'bath', 'soul', 'holder', 'pleasant', 'buy', 'federal', 'lay', 'currently', 'saint', 'for', 'simple', 'deliberately', 'means', 'peace', 'prove', 'sexual', 'chief', 'department', 'bear', 'injection', 'off', 'son', 'reflect', 'fast', 'ago', 'education', 'prison', 'birthday', 'variation', 'exactly', 'expect', 'engine', 'difficulty', 'apply', 'hero', 'contemporary', 'that', 'surprised', 'fear', 'convert', 'daily', 'yours', 'pace', 'shot', 'income', 'democracy', 'albeit', 'genuinely', 'commit', 'caution', 'try', 'membership', 'elderly', 'enjoy', 'pet', 'detective', 'powerful', 'argue', 'escape', 'timetable', 'proceeding', 'sector', 'cattle', 'dissolve', 'suddenly', 'teach', 'spring', 'negotiation', 'solid', 'seek', 'enough', 'surface', 'small', 'search']
#Global variables
guesses = []
playing = True
lives = 7
#word generation
word = random.choice(word_list)
#create a display version on the generated word comprised of *
display = '*'* len(word)
#tracker of most recent player_guess
player_guess = ''
#create hangman graphics
def hangman():
if lives == 7:
print('____________')
print('|/ ')
print('| ')
print('| ')
print('| ')
print('| ')
print('|___________')
if lives == 6:
print('____________')
print('|/ | ')
print('| ')
print('| ')
print('| ')
print('| ')
print('|___________')
if lives == 5:
print('____________')
print('|/ | ')
print('| O ')
print('| ')
print('| ')
print('| ')
print('|___________')
if lives == 4:
print('____________')
print('|/ | ')
print('| O ')
print('| | ')
print('| ')
print('| ')
print('|___________')
if lives == 3:
print('____________')
print('|/ | ')
print('| _O ')
print('| | ')
print('| ')
print('| ')
print('|___________')
if lives == 2:
print('____________')
print('|/ | ')
print('| _O_')
print('| | ')
print('| ')
print('| ')
print('|___________')
if lives == 1:
print('____________')
print('|/ | ')
print('| _O_')
print('| | ')
print('| / ')
print('| ')
print('|___________')
if lives == 0:
print('____________')
print('|/ | ')
print('| _O_')
print('| | ')
print("| / \ ")
print('| ')
print('|___________')
print("You lose")
def guess_input():
alphabet = 'abcdefghijklmnopqrstuvwxyz'
try:
player_guess = str(input("\nSelect a letter between A-Z: ")).lower()
except:
print("\nThat was not a letter between A-Z, try again...")
else:
if len(player_guess) > 1:
print("\nPlease only guess 1 letter - no cheating!")
elif player_guess in guesses:
print("\nYou have already guessed this letter, try again...")
elif player_guess not in alphabet:
print("\nThat was not a letter between A-Z, try again...")
else:
guesses.append(player_guess)
return player_guess
def guess_checker():
global lives, display, word, player_guess
if player_guess in word:
print(f"Correct! {player_guess} is in the word!")
for i, letter in enumerate(word):
if letter == player_guess:
display[i] = player_guess
else:
lives -= 1
def win_check(word):
if '*' not in display:
print("Congratulations, you win!")
else:
False
############################# MAIN PROGRAM ####################################
#Introduction
print('Welcome to HANGMAN, I have randomly generated a word for your game. You have 7 lives - good luck!')
while playing == True:
if lives > 0:
#Guess input
hangman()
print('\n')
print(display)
guess_input()
guess_checker()
win_check(display)
if win_check == True:
playing = False
if win_check == False:
continue
elif lives == 0:
hangman()
playing = False
最佳答案
函数 guess_input
中的变量 player_guess
不是具有该名称的全局变量。如果加上的话效果会更好
global player_guess
...在该函数中。
但是,最佳实践是避免(或至少限制)使用global
。相反,捕获主程序中 guess_input
返回的值,然后将其作为参数传递给 guess_checker
,例如:
guess_checker(guess_input())
您将不再需要该全局变量 - 删除相应的 public
指令,并为 guess_checker
定义参数:
def guess_checker(player_guess):
虽然不是您的问题,但您的代码中还存在其他几个问题。一个主要问题是 display
是一个字符串,因此您不能执行 display[i] = player_guess
—— 它会给出异常。
请查看this我改进并纠正了一些事情。查看评论。
关于python - 刽子手 : replacing an * with player input guess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59151107/
我正在制作刽子手游戏。一切正常,我已经准备好用于使游戏失败并为猜测提供 -1 的代码。虽然将它添加到 else 语句时它会重复等于单词的长度并且它也会给出一个猜测——即使它是正确的?我看不出代码有什么
我是一名 Javascript 学生,正在开发我的 Hangman 游戏。我用于显示 secret 单词的正确破折号数量的循环不起作用。每次只显示一个破折号。感谢帮助。谢谢。 $(document).
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关于您编写的代码问题的问题必须在问题本身中描述具体问题 — 并且包括有效代码 以重现它。参见 SSC
print("Welcome to hangman. Are you ready to have some fun?") def play(): import random List = ["ra
我刚刚开始学习 Java 作为我的第一门编程语言。 在类里面,我们被分配使用 while 和 for 循环制作一个基本的 Hangman 游戏。 到目前为止我有什么 当用户输入第一个猜测时,它确实识别
我是编程新手。我正在做一个经典的刽子手游戏,但我希望它是从节目中猜测一些角色的名字(名字和姓氏)。 我的问题:破折号打印 name 和 surname 之间的空格而不是忽略它,例如: 密语:鲁伯特·吉
我正在尝试创建一个刽子手游戏,其中每个字母都有一个按钮。我用绝对定位和多个 Action 监听器以困难的方式做到了这一点。有什么办法可以用 for 循环同时完成这两个任务吗? 另外,如何使用多态数组实
我是 Java 新手,所以这听起来可能很傻。 我正在尝试从 Java 创建一个基于 GUI 的刽子手游戏。我已经从数组创建了按钮列表,单击时它返回单个字母作为字符。我有要猜测的单词列表,每次按下按钮时
我已经研究这段代码有一段时间了。我尝试了许多不同的方法来查找玩家在随机生成的单词中正确猜测的输入的索引 - 我认为我当前编写的内容应该有效,但我担心我忽略了一个非常简单的错误。事实上,每当我运行代码时
在我的 Hangman 应用程序中,我为用户创建了一组按钮,然后从文件中随机选择 Hangman 应用程序中猜测的单词...该单词使用 JLabel 打印...但是一旦单击按钮时,应用程序会卡住。谁能
我正在为我的 C 课编程编写一个刽子手程序。我似乎不知道如何执行最后一步,即在玩家猜出所有正确的字母后停止游戏。我感觉问题出在播放功能上。 #include #include #inc
用 python 编写一个 Hangman 程序,在传入一个包含多单词字符串和单单词字符串的文件时遇到了一个问题。 文件: 你好棕色狐狸 狗 猫 水 跳跃 #initialize list wordL
所以我在玩这个游戏的特定部分时遇到了问题。这些是我的初始变量: var words = ["sugar","banana","hulk"]; var guessLeft = 12; var wrong
我是一名优秀的程序员,十分优秀!