如何在python中的另一个函数中使用函数

时间:2014-11-30 04:44:29

标签: python function accumulate

我必须做一个代码,我需要创建一个让用户猜测方程的游戏。在每次猜测结束后,我必须显示用户已经猜到了多少等式。例如,如果等式是1 + 2 * 3 + 4并且用户猜测等式有3,则程序会说你的猜测是正确的,到目前为止你猜测的等式是---- 3--(破折号代表等式中有多少个字符。如果用户猜到2,我需要他们到目前为止猜测的等式为--2-3--但我不能让它们累积。

我正在使用的功能是

def guessing1():
    '''
    the player is asked to make a guess and the result is printed
    '''
    wrongguesses=0
    if (guess1 in randomFormula):
         print "Your guess is correct!"
         wrongguesses=0
    else:
         print "Your guess is wrong!"
         wrongguesses +=1
         if (wrongguesses== max_guesses):
             print "Sorry, you've reached the maximum number of wrong guesses."
             print "Better luck next time!"
             playagain=raw_input("Do you want to play again? y-yes, n-no: ")
             if (playagain== n):
                print "The game is over."  

def formSoFar1():
   a=''
   for i in range (len(randomFormula)):
       if (randomFormula[i] == guess1):
           a += randomFormula[i]
       else:
          a+= "-"
   print "The formula you have guessed so far is: ",a

当我调用函数时,我改变此代码的任何方式,我得到一个错误或它没有使用之前的猜测。我不确定该怎么做。

1 个答案:

答案 0 :(得分:0)

我知道这不会直接解决你的问题,但我会回过头来。

我强烈建议您写出完成目标所需的逻辑。在纸上做到这一点,并随意指出箭头指向相关的内容,实现目标需要什么标准,以及程序的整体想法实际上是什么。

这样做有助于阐明您想要解决的实际问题,以及如何去做。

所以你的第一个问题是,你想做什么?

看来你想创建一个类似游戏的刽子手,但是使用的是论坛,而不是字母。

第二件事,你想要跟踪用户的成就和失败的进展。

胜负取决于第二部分,所以这告诉了我们一些事情。

有几种方法可以做到这一点,但一种简单的方法是使用while循环。

为什么要循环?它允许您在多次执行任务时检查条件。

您想要检查用户没有赢或输的条件。像这样的东西

user_strikes = 0
formula = "1+2*3+4"
user_progress = "" # this will be updated
while game_over is False and user_strikes < STRIKES_ALLOWED:
    # output "make a guess" or something
    if guess in answer:
        # update user_progress
        # perhaps check if user_progress is equal to the formula, then set game_over to True if it is.
    else:
        # update user_strikes. Check here if it's equal to STRIKES_ALLOWED and output a message, since the while loop will end after that iteration.
# here you can check if game_over is True (user won), if strikes is equal to STRIKES_ALLOWED, and do logic based on that
# there are quite a few ways to do this.

要记住的其他事项: 记住用户已经猜到的数字,符号等。如果他们一遍又一遍地猜测2,可能会打印出来#34;已经猜到了#34;或类似的东西。 您可以只使用一个设置为数字的变量,而不是检查处理游戏状态的多个变量。检查该数字的值,并将该操作作为基础。所以game_state = 1 #game赢了; game_state = 2 #game lost等等。

对于你的实际问题,似乎你在想关闭。使用闭包对您来说可能是有益的,所以请随时阅读它们并确定情况是否需要它们。

要完成,我强烈建议您尝试找出您遇到的问题。从这里开始,您可以大大节省时间和精力,找出解决问题的正确方法。