python - 每次我通过一个循环,我怎样才能得到一个列表的下一个项目来显示
问题描述
我正在编写一个程序,它是一个刽子手游戏,除了如何显示刽子手之外,一切都已经完成。我不会在这里发布我的整个代码,只是回答问题的要点。每次用户猜错字母时,就会显示这些人中的一个。每次他们猜错时,都会显示列表中的下一个。以下是刽子手名单:
hangmen=[
'''____________________
| /
| /
|/
|
|
|
____|________________''',
'''____________________
| / |
| / (_)
|/
|
|
|
____|________________''',
'''____________________
| / |
| / (_)
|/ |
| |
|
|
___|________________''',
'''____________________
| / |
| / (_)
|/ /|\
| / | \
|
|
___|________________''',
'''____________________
| / |
| / (_)
|/ /|\
| / | \
| / \
| / \
___|________________''']
到目前为止,这是我的系统,用于正确/不正确的字母,非常非常简化
words=['cat', 'dog', 'mouse']
word=random.choice(words).lower()
attempts = 7
for i in attempts:
guess=input("Guess a letter: ")
if guess in word:
print('Yup, that letter is in the word.')
else:
print('Incorrect.')
底部的 else 应该是显示刽子手的地方。每次用户猜错时如何显示下一个刽子手?此外,由于有 7 次尝试且只有 5 个刽子手,如果用户猜测所有 7 次尝试都错误,我如何继续显示最后的刽子手,而不会崩溃?
解决方案
我会使用iter()
words=['cat', 'dog', 'mouse']
word=random.choice(words).lower()
lasthangman = hangmen[len(hangmen)-1]
hangmen = iter(hangmen)
attempts = 7
for i in range(attempts):
guess=input("Guess a letter: ")
if guess in word:
print('Yup, that letter is in the word.')
else:
try:
print(next(hangmen))
except StopIteration:
print(lasthangman)
每当一个字母被猜错时,这将在 hangmen 中打印下一个 hangman 值,但如果我们用完 hangmen,它将继续打印最后一个 hangman。请注意,这仍然不完整:如果我在for
循环结束之前正确猜出所有字母会发生什么?
推荐阅读
- html - UI 设计 - 内容发布的左图像边框
- angular - 如何在 Angular 8 控制器中声明函数以进行外部调用?
- jenkins - 从脚本化的 Jenkins 管道中的不同节点更新全局变量
- presto - PrestoSql DistributedExecutionPlanner.Visitor中DynamicFilters的作用是什么?
- php - PHP - 制作动态导航栏
- c++ - 更新 CustomContainer 子 TouchGFX
- oracle - 如何安装 Oracle Apex 侦听器?
- python - python使用列表从另一个字符串中删除一个字符串?
- python - 为 keras 构建线程安全生成器以使用多个工作人员
- java - EnableConfigServer 无法解析为类型