初级python函数

初级python函数,python,python-3.x,python-requests,programming-languages,python-3.6,Python,Python 3.x,Python Requests,Programming Languages,Python 3.6,这是一个愚蠢的问题,但在下面的代码中,我认为guess_compare函数失败了,因为它不能引用输入'guess'和'game word'。有没有关于如何修复的见解?代码如下: import random max_guesses=1 guess="" game_word="" def word_gen(): potential_guesses=["hello", "test", "never"] list_length=int(len(potential_guesses)) ga

这是一个愚蠢的问题,但在下面的代码中,我认为guess_compare函数失败了,因为它不能引用输入'guess'和'game word'。有没有关于如何修复的见解?代码如下:

import random

max_guesses=1
guess=""
game_word=""

def word_gen():
    potential_guesses=["hello", "test", "never"]
list_length=int(len(potential_guesses))

 game_word=potential_guesses[random.randint(1-1,list_length-1)]
    print (game_word)

def guesser():
   guess=input("give a letter...")
   print(guess)

def guess_compare():
    if guess==game_word[0]:
        print("correct")
    else:
        print("wrong")

guess_compare()

在这种情况下,您从未将game_word与word_gen分配。您还必须首先调用猜测函数

在代码的最后一行尝试以下操作:

guesser()
game_word = word_gen()
guess_compare()

我会停止使用全局变量,您倾向于通过在本地声明相同的命名变量来隐藏它们,假设您设置了一个全局变量,但它只是本地变量

我重新构造了您的一些代码,因此它应该在没有全局变量的情况下工作:

import random

def word_gen():
    """Returns a ramdom choice word form a fixed list"""
    return random.choice(["hello", "test", "never"])  

def guesser():
   """Returns an input from the user - ask for 1 letter"""
   return input("give a letter...")

def guess_compare():
    """Main game loop for "guess my word character by character".

    Gets a random word. Asks for letters until the correct
    one is given. Prints out status messages regarding correctness
    of guesses. Stops when all characters were guessed correctly."""

    game_word = word_gen()

    soFar = ""   # for status-message, text correctly guessed so far
    for ch in game_word:        # check for every character in word
        while(guesser() != ch):   # guess until char is correct
            print("wrong")
        else:                     # finally, one more ch solved...
            soFar += ch
            print("you guessed correctly: " + soFar)
    print("you solved it!")     # finished


guess_compare()  # start the game
不使用全局变量似乎更难,但它消除了一个错误源

如果仍然需要,则需要声明要在函数中使用全局函数:

具有全局变量的某些函数:

import random

def word_gen():
    """Returns a ramdom choice word form a fixed list"""
    return random.choice(["hello", "test", "never"])  

def guesser():
   """Returns an input from the user - ask for 1 letter"""
   return input("give a letter...")

def guess_compare():
    """Main game loop for "guess my word character by character".

    Gets a random word. Asks for letters until the correct
    one is given. Prints out status messages regarding correctness
    of guesses. Stops when all characters were guessed correctly."""

    game_word = word_gen()

    soFar = ""   # for status-message, text correctly guessed so far
    for ch in game_word:        # check for every character in word
        while(guesser() != ch):   # guess until char is correct
            print("wrong")
        else:                     # finally, one more ch solved...
            soFar += ch
            print("you guessed correctly: " + soFar)
    print("you solved it!")     # finished


guess_compare()  # start the game
输出:

myVar:  25
45
after myFunc:  45
something
after myOtherFunc:  45

你能用异常/回溯向我们证明它的失败吗?@JacobIRR picturebelow@JacobIRR很抱歉,我没有给pic的声誉,但是回溯是“if guess==game\u word[0]line random.choice['A','B','C']上的“字符串索引超出范围”给你这个列表中的一个随机元素-缩短你的单词。\u Get你从未调用过单词\u gen,所以你什么都没有…好的,所有这些都不起作用。谢谢你的帮助,我会玩一玩,让你知道我找到了什么。非常感谢!有兴趣了解变量赋值规则等,所以也会玩。谢谢!!@user9211054增加了全局变量的示例