Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PythonHangman,从答案库中删除空白并细化可以输入的内容_Python_Loops_Append - Fatal编程技术网

PythonHangman,从答案库中删除空白并细化可以输入的内容

PythonHangman,从答案库中删除空白并细化可以输入的内容,python,loops,append,Python,Loops,Append,我目前正在学习Python,并试图构建一套小游戏来巩固我的基本知识,但是我想用我的游戏做一些其他人没有做过的事情(至少从我所看到的情况来看),那就是从答案和“蒙面”答案中删除单词之间的空白。我想这应该是一种“如果,否则”的说法?如果我错了,请纠正我 for x in range(i): ## where i is the word if x == " ": continue ## wouldn't it be pointless to append something that yo

我目前正在学习Python,并试图构建一套小游戏来巩固我的基本知识,但是我想用我的游戏做一些其他人没有做过的事情(至少从我所看到的情况来看),那就是从答案和“蒙面”答案中删除单词之间的空白。我想这应该是一种“如果,否则”的说法?如果我错了,请纠正我

for x in range(i): ## where i is the word
  if x == " ":
    continue ## wouldn't it be pointless to append something that you don't want to change?
  else:
    word.append('_')
我的另一个问题是关于我在游戏开始时的循环语句,在这个循环中,我有一个if/else声明,如果猜测中有超过1个字母,它将返回一个语句,告诉用户这是无效的。但比赛结束后立即停止

while guesses < 6:
  guess = raw_input("Please guess a letter: ")
   if len(guess) > 1:
    return "One letter at a time!"
   else: continue
猜测<6时

猜=原始输入(“请猜一个字母:”)
如果len(猜测)>1:
返回“一次一封信!”
其他:继续
我不太确定要在代码中添加什么,以使它在此之后继续请求输入

这是我的完整代码,在请求输入后,它目前不适用于我。。。我从这里的另一个用户那里获取了代码,并根据我的喜好对其进行了修改,因为他们的游戏使用的单词不超过一个,也没有检查提示时是否输入了多个字母,我认为修改现有代码以使其比原来做得更多是一种很好的做法

def hangman():
  guesses = 0
  word = []
  guessed = []
  words = ["bichon frise", "maltese", "dachshund",  "pomeranian", "golden retriever", "shih tzu", "rottweiler", "pit bull", "beagle", "poodle", "akita", "basset hound", "border collie", "boston terrier", "boxer", "bulldog", "chow chow", "chihuahua", "chinese crested", "french bulldog", "great dane", "great pyrenees", "greyhound", "icelandic sheepdog", "irish wolfhound", "komondor", "mastiff", "shnauzer", "pekingese", "welsh corgi", "redhound coonhound", "samoyed", "shiba inu", "weimaraner", "whippet", "italian greyhound", "yorkshire terrier"]


  print "Welcome to Hangman. The words chosen are the names of various breeds of dogs, try and guess the word before the man is hung!"

  answer = random.choice(words)
  i = len(answer)
  print "The length of the word is", i, "characters long"
  for x in range(i): 
    if x == " ":
      continue
  else:
      word.append('_')

  while guesses < 6:
    guess = raw_input("Please guess a letter: ")
    if len(guess) > 1:
      return "One letter at a time!"
    else:
      continue


    if (guess in i):
      print "The letter is in the word."
      for index, letter in enumerate(i):
        if letter == guess:
          word[index] = guess 
      guessed.append(guess)
    else:
      print "The letter is not in the word"
      guesses = guesses + 1
      guessed.append(guess)

    print "You have guessed these letters so far: %s)" % (''.join(guessed))
    print "Letters matched so far %s): %" (''.join(word))

    if ''.join(word) == answer:
      break

  if guesses == 6:
    print "You didn't guess the right answer in time! The answer was %s" % answer
  else:
    print "You guessed the word!"
def hangman():
猜测=0
word=[]
猜测=[]
单词=[“比熊犬”、“马耳他犬”、“腊肠犬”、“波美拉尼亚犬”、“金毛猎犬”、“狮子犬”、“罗特维尔犬”、“比特犬”、“小猎犬”、“贵宾犬”、“秋田犬”、“巴赛特猎犬”、“边境牧羊犬”、“波士顿梗犬”、“拳击手”、“斗牛犬”、“周犬”、“奇瓦瓦犬”、“中国冠毛犬”、“法国斗牛犬”、“大丹犬”、“大比利牛斯山犬”、“灰狗”、“冰岛牧羊犬”,“爱尔兰狼犬”、“科蒙多犬”、“獒犬”、“雪纳泽犬”、“北京犬”、“威尔士科基犬”、“红猎犬浣熊犬”、“萨莫耶德犬”、“什巴伊努犬”、“威马拉纳犬”、“惠佩特犬”、“意大利灰狗”、“约克郡梗”]
打印“欢迎来到刽子手。选择的单词是各种狗的名字,在刽子手被绞死之前试着猜一猜这个单词!”
答案=随机。选择(单词)
i=len(答案)
打印“单词长度为”,i“字符长度”
对于范围(i)内的x:
如果x==“”:
持续
其他:
word.append(“”)
当猜测<6时:
猜=原始输入(“请猜一个字母:”)
如果len(猜测)>1:
返回“一次一封信!”
其他:
持续
如果(i中的猜测):
打印“字母在单词中。”
对于索引,枚举(i)中的字母:
如果字母==猜测:
单词[索引]=猜测
猜测。追加(猜测)
其他:
打印“字母不在单词中”
猜测=猜测+1
猜测。追加(猜测)
打印“到目前为止您已经猜到了这些字母:%s)”%(“”.join(猜到))
打印“到目前为止匹配的字母%s):%”(“”.join(word))
如果“”。加入(单词)=回答:
打破
如果猜测==6:
打印“您没有及时猜到正确答案!答案是%s”%answer
其他:
打印“你猜对了!”

return
在此处结束该功能,请改用
print

print "One letter at a time!"
至于空格,你为什么不在蒙面字后面加上空格呢?这样,玩家就不必猜测,可以看到有空格,您的
加入
-检查将起作用:

for x in range(i): 
  if x == " ":
    word.append(' ')
  else:
    word.append('_')

return
在此处结束函数,请改用
print

print "One letter at a time!"
至于空格,你为什么不在蒙面字后面加上空格呢?这样,玩家就不必猜测,可以看到有空格,您的
加入
-检查将起作用:

for x in range(i): 
  if x == " ":
    word.append(' ')
  else:
    word.append('_')
从答案中删除单词之间的空白

给定
i
i
作为字符串?)是字符串,您可能不应该在其上使用
range(..)
,因为
range
需要
int
。此外,为什么要构建一个列表而不是一个新字符串?但是,您可以轻松地使用生成器:

word = ''.join(c for c in i if c != ' ')
word
是一个字符串,它包含
i
中所有不属于
'
的字符。但是,如果要生成下划线序列,可以使用:

word = ''.join('_' for c in i if c != ' ')
如果要构造一个列表(代码的其余部分都需要),可以使用列表理解:

它将返回一条语句,告诉用户这是无效的。但游戏在赛后立即停止工作(原文如此)

这是因为使用了
return
语句:
return
表示跳出函数并(可选)返回值。您可能想要打印(…)

从答案中删除单词之间的空白

给定
i
i
作为字符串?)是字符串,您可能不应该在其上使用
range(..)
,因为
range
需要
int
。此外,为什么要构建一个列表而不是一个新字符串?但是,您可以轻松地使用生成器:

word = ''.join(c for c in i if c != ' ')
word
是一个字符串,它包含
i
中所有不属于
'
的字符。但是,如果要生成下划线序列,可以使用:

word = ''.join('_' for c in i if c != ' ')
如果要构造一个列表(代码的其余部分都需要),可以使用列表理解:

它将返回一条语句,告诉用户这是无效的。但游戏在赛后立即停止工作(原文如此)

这是因为使用了
return
语句:
return
表示跳出函数并(可选)返回值。您可能想要打印(…)


需要进行更多更改以更正回路部分。还有关于空格的事情。谢谢你的帮助!我使用了你的代码,但是在我找到一个更好的替代方案后不久,不用使用range函数,编写代码就简单多了。在“字母m”处