Python 刽子手选词

Python 刽子手选词,python,graphics,Python,Graphics,我试图让用户选择他们想要的单词的长度,但我很难找出错误所在。我是Python的noob,我已经学习了3个月,我已经搜索了Python。我不知道所有Python内置函数,或者我可能知道但不知道如何使用它们 这是我的密码: from random import * import os wordlist_1 = 'cat dog'.split() #Is all the wordlist be in a function to all three of wordlis

我试图让用户选择他们想要的单词的长度,但我很难找出错误所在。我是Python的noob,我已经学习了3个月,我已经搜索了Python。我不知道所有Python内置函数,或者我可能知道但不知道如何使用它们

这是我的密码:

from random import *
import os


wordlist_1 = 'cat dog'.split()                #Is all the wordlist be in a function to all three of wordlist?
wordlist_2 = 'donkey monkey dragon'.split()   #Like def wordlist():
wordlist_3 = 'dinosaur alligator buffalo'.split()

keep_playing = True
def print_game_rules(max_incorrect,word_len):
    print"You have only 7 chances to guess the right answer"
    return

def length_1():
    print('You will have length of 3 word')
    return
def length_2():
    print('You will have length of 6 word')
    return
def length_3():
    print('You will have length of 8 word')
    return

def Welcomenote():

    print('Select One Category')
    print(' 1: length of 3 word')
    print(' 2: length of 6 word')
    print(' 3: length of 8 word') 

    choice = {
        "1": length_1,
        "2": length_2,
        "3": length_3 }

    choose = input()
    return

def getrandomword():
    wordindex = random.randint(0,len(wordlist)-1)
    return wordlist[wordindex]

def get_letter():
    print
    letter = raw_input("Guess a letter in the mystery word:") 
    letter = letter.strip()
    letter = letter.lower()
    print
    os.system('cls')
    return letter
def display_figure(hangman):
    graphics = [
    """
         +-------+
         |
         |
         |
         |
         |
         |
     ====================
    """,
    """
         +-------+
         |       |
         |
         |
         |
         |
         |
     ====================
    """,
    """
        +-------+
        |       |
        |       O
        |
        |
        |
        |
    ====================
    """,
    """
        +-------+
        |       |
        |       O
        |       | 
        |
        |
        |
    =====================
    """,
    """
        +-------+
        |       |
        |       O
        |      /| 
        |
        |
        |
    =====================
    """,
    """
        +-------+
        |       |
        |       O
        |      /|\               
        |
        |
        |
    =====================
    """,
    """
        +-------+
        |       |
        |       O
        |      /|\               
        |      /  
        |
        |
    =====================
    """,
    """
        +-------+
        |       |
        |       O
        |      /|\               
        |      / \               
        |
        |
    =====================
    """]

    print graphics[hangman]
    return

while keep_playing:
    word=Welcomenote()
    secretword = getrandomword(word)
    guesses='_' * len(secretword)
    max_incorrect=7
    alphabet="abcdefghijklmnopqrstuvxyz"
    letters_tried=""
    number_guesses=0
    letters_correct=0
    incorrect_guesses=0
    print_game_rules(max_incorrect,word_len)


    while (incorrect_guesses != max_incorrect) and (letters_correct != secretword):
        letter=get_letter()
        display_figure(incorrect_guesses)
        if len(letter)==1 and letter.isalpha():
            if letters_tried.find(letter) != -1:
                print "You already picked", letter
            else:
                letters_tried = letters_tried + letter
                first_index=word.find(letter)
                if  first_index == -1:
                    incorrect_guesses= incorrect_guesses +1
                    print "The",letter,"is not the mystery word."
                else:
                    print"The",letter,"is in the mystery word."
                    letters_correct=letters_correct+1
                    for i in range(len(secretword)):
                        if letter == secretword[i]:
                            guesses[i] = letter

        else:
            print "Please guess a single letter in the alphabet."

        print ' '.join(guesses)
        print "Letters tried so far: ", letters_tried
        if incorrect_guesses == max_incorrect:
            print "Sorry, too many incorrect guesses. You are hanged."
            print "The word was",word
            keep_playing = False
        if letters_correct == secretword:
            print "You guessed all the letters in the word!"
            print "The word was",word
            keep_playing = False


    if keep_playing == False:
        user = raw_input("\n\tShall we play another game? [y|n] ")
        again = "yes".startswith(user.strip().lower())
        if again:
            keep_playing = True
        else:
            break

raw_input ("\n\n\nPress enter to exit")
现在错误是:

回溯(最近一次呼叫最后一次):
文件“P:\Lesson 8\Hangman 2-复制.py“,第156行,in secretword=getrandomword(word)

TypeError:getrandomword()不接受 参数(给出1个)


为了解决关于
randint
不存在的错误,您已经在
random
模块中导入了函数名

from random import *
所以直接调用函数就行了

wordindex = randint(0,len(wordlist)-1)
因此,您没有导入过多的内容,我建议您直接导入模块(这样您就不需要更改函数调用)或单个名称(这样您就不会用其他不使用的随机函数污染全局命名空间)


但是,代码中还有一些其他问题

变量
length\u 1
length\u 2
length\u 3
被分配为字符串。稍后,您将它们重新定义为函数。在这些函数中,返回的名称是函数(而不是字符串)。在后面的
Welcomenote()
中,您返回的是这些函数(而不是那些字符串),因此它是错误的。你应该使用不同的名字

而且,看起来你想让它们成为你的单词列表。如果保持原样,您将收到单独的字母。它应该是一个列表。你应该定义它们

wordlist_1 = ['cat', 'dog']
# or alternatively
wordlist_1 = 'cat dog'.split() # splits the string up to a list of words separated by whitespace

可能还有其他函数名,但这些函数名比较突出,应该加以修复。

为了解决关于
randint
不存在的错误,您已经在
随机
模块中导入了函数名

from random import *
所以直接调用函数就行了

wordindex = randint(0,len(wordlist)-1)
因此,您没有导入过多的内容,我建议您直接导入模块(这样您就不需要更改函数调用)或单个名称(这样您就不会用其他不使用的随机函数污染全局命名空间)


但是,代码中还有一些其他问题

变量
length\u 1
length\u 2
length\u 3
被分配为字符串。稍后,您将它们重新定义为函数。在这些函数中,返回的名称是函数(而不是字符串)。在后面的
Welcomenote()
中,您返回的是这些函数(而不是那些字符串),因此它是错误的。你应该使用不同的名字

而且,看起来你想让它们成为你的单词列表。如果保持原样,您将收到单独的字母。它应该是一个列表。你应该定义它们

wordlist_1 = ['cat', 'dog']
# or alternatively
wordlist_1 = 'cat dog'.split() # splits the string up to a list of words separated by whitespace

可能还有其他的,但这些都是突出的大问题,应该加以解决。

是的,如果你只是说
导入随机
,你会称之为random.randint,但是如果你说
来自随机导入randint
或(
来自随机导入*
),我尝试了你所说的和ahmet alp balkan的评论,但是出现了另一个错误“TypeError:type'NoneType'的对象没有len()”@phhnk:那将是另一个问题。在这种情况下,
wordlist
的值是
None
。您需要事先验证
wordlist
是否有值。请删除字典中数字周围的双引号以跳过无error@phhnk检查
Welcomenote()
例程中的返回值。它可能正在返回
None
。请仔细阅读
input()
raw\u input()
之间的区别。是的,如果您只说
import random
,您会将其称为random.randint,但是如果您说
from random import random
或(
from random import*
),我尝试了你所说的和ahmet alp balkan的评论,但是出现了另一个错误“TypeError:type'NoneType'的对象没有len()”@phhnk:那将是另一个问题。在这种情况下,
wordlist
的值是
None
。您需要事先验证
wordlist
是否有值。请删除字典中数字周围的双引号以跳过无error@phhnk检查
Welcomenote()
例程中的返回值。它可能正在返回
None
。仔细阅读
input()
raw\u input()
之间的区别。你拼写错了
alligator
buffalo
。你拼写错了
alligator
buffalo