Python:hangman程序

时间:2013-12-30 23:13:31

标签: python string

我发布了关于堆栈溢出的问题,因为我不知道要搜索什么,当我做出答案时,答案似乎完全没有用。

无论如何,这是我的代码:

from random import randrange
# - System Variables -
gm = 1
pv = ""
words = ["city", "cube", "keyhole", 'puppy', 'program', 'clock', 'glass', 'material', 'bottle', 'wall', 'shoes', 'lights', 'sound', 'image', 'hearing', 'machine', 'mouse', 'puppet', 'wagon', 'reward', 'table', 'ceiling', 'plank', 'electric', 'country', 'music', 'branch', 'flute', 'wind', 'tile']
# - Game -
While gm == 0:
    wn = randrange(31) - 1
    word = words[wn]
    while pv == word:
        pv = word
        wn = randrange(31) - 1
        word = words[wn]

我正在尝试制作一个python hangman游戏,我制作了循环等等。

我的问题

予。我需要创建一个字符串(插入拾取的字符串的长度)下划线,并且将有一个循环使用字符串“letter”来告诉用户选择了哪个字母。我如何制作它,以便字符串显示下注未被猜到的位置,并且字母在猜到时会猜到?

II。我需要让玩家自动输入大写字母。我该怎么做?

III。如何检测用户输入的字母是否在单词?

谢谢!

2 个答案:

答案 0 :(得分:1)

  

我。我需要创建一个字符串(插入拾取的字符串的长度)下划线,并且将有一个循环使用字符串“letter”来告诉用户选择了哪个字母。我如何制作它,以便字符串显示下注未被猜到的地方,并且字母在猜到时会猜到?

考虑像

这样的理解类型方法
>>> guesses = ['H','A']
>>> secret = 'HANGMAN'
>>> state = ''.join(x if x in guesses else '_' for x in secret)
>>> state
'HA___A_'

在那里也可以包含一些空格,以便明确其中有多少个字母。 (注意join之前字符串中的空格):

>>> state = ' '.join(x if x in guesses else '_' for x in secret)
>>> state
'H A _ _ _ A _'

  

II。我需要让玩家自动输入大写字母。我该怎么做?

upper()这样的东西应该可行

>>> guess = 'a'
>>> guess.upper()
'A'

  

III。如何检测用户输入的字母是否在单词?

我上面使用的理解型方法就是这样做的。如果你想明确地做,你可以使用类似的东西:

if letter in secret:
    # do something

答案 1 :(得分:0)

  1. ''.join(c if c in found else '_' for c in word) - 使用_,除非该字符已在found中(您存储用户输入的任何字符作为猜测)
  2. python中的任何字符串都有upper()方法,例如somechar.upper()
  3. 字符串为sequences,因此可以与in运算符一起使用,如下所示:foo in bar