Слово палача выбрано - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь позволить пользователю выбрать длину слова, которое он хочет, но мне трудно понять, что не так. Я новичок в Python, я учился в течение 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")

Теперь ошибка говорит:

Traceback (последний последний вызов):
Файл "P: \ Урок 8 \ Палач 2 - Copy.py ", строка 156, в secretword = getrandomword (word)

TypeError: getrandomword () не принимает аргументы (1 дано)

1 Ответ

5 голосов
/ 13 мая 2011

Чтобы устранить ошибку, связанную с отсутствием randint, вы импортировали имена функций в модуле random.

from random import *

Так что просто вызовите функцию напрямую.

wordindex = randint(0,len(wordlist)-1)

Так что вы не импортируете больше, чем нужно, я бы предложил импортировать модуль (чтобы вам не нужно было изменять вызов функции) или одно имя напрямую (чтобы вы не загрязняли глобальное пространство именс другими случайными функциями, которые вы не используете).

import random
# or
from random import randint

Однако в вашем коде есть и другие проблемы.

Переменные length_1, length_2 иlength_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

Возможно, есть и другие, но это большие, которые выделяются и должны быть исправлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...