简体   繁体   English

如何返回到 python 中的前一个代码块?

[英]How to return to previous block of code in python?

I'm working on code for this magic 8ball game.我正在为这个神奇的 8ball 游戏编写代码。 I cant seem to find a way to return to getAnswer() when the user types "y" in replay.当用户在回放中键入“y”时,我似乎找不到返回 getAnswer() 的方法。 how do I fix this?我该如何解决?

import random
import time
import sys

print('  __  __          _____ _____ _____    ___  ')
print(' |  \/  |   /\   / ____|_   _/ ____|  / _ \ ')
print(' | \  / |  /  \ | |  __  | || |      | (_) |')
print(' | |\/| | / /\ \| | |_ | | || |       > _ < ')
print(' | |  | |/ ____ \ |__| |_| || |____  | (_) |')
print(' |_|  |_/_/    \_\_____|_____\_____|  \___/ ')
print('')
print('')
print('')
print('Hello, I am the magic 8ball program... What is your name?') 
name = input()
print('')
print('Hello, ' + name + '...')

def getAnswer(answerNumber):
    print('ask me a question')
    input()
    print('predicting...')
    time.sleep(2)
    if answerNumber == 1:
        return 'It is certain' 
    elif answerNumber == 2: 
        return 'It is decidingly so' 
    elif answerNumber == 3:
        return 'Yes' 
    elif answerNumber == 4:
        return 'reply hazy, try again' 
    elif answerNumber == 5: 
        return 'no' 
    elif answerNumber == 6: 
        return 'ask again later'
    elif answerNumber == 7: 
        return 'concentrate and ask again' 
    elif answerNumber == 8: 
        return 'Outlook does not look good' 
    elif answerNumber == 9: 
        return 'I highly doubt so' 
print(getAnswer(random.randint(1,9)))

def replay():
    print('do you have another question? [y/n]')
    reply = input()
    if reply == 'y' or 'Y' or 'Yes' or 'yes':
        getAnswer()
    elif reply == 'n' or 'N' or 'No' or 'no':
        sys.exit()
    else:
        print('My apologies, I did not catch that. Please try again.')
        replay()

replay()

I placed getAnswer() under "if reply" hoping it would revert back to the first variable in the beginning of the code.我将 getAnswer() 放在“如果回复”下,希望它会恢复到代码开头的第一个变量。 the program errors stating that it is missing one positional requirement yet when I place answerNumber in getAnswer() its just another error.程序错误表明它缺少一个位置要求,但是当我将 answerNumber 放在 getAnswer() 中时,它只是另一个错误。

I'm stuck.我被困住了。 Any help is appreciated.任何帮助表示赞赏。

I think this is what you are looking for:我认为这就是你要找的:

import random
import time
import sys

print('  __  __          _____ _____ _____    ___  ')
print(' |  \/  |   /\   / ____|_   _/ ____|  / _ \ ')
print(' | \  / |  /  \ | |  __  | || |      | (_) |')
print(' | |\/| | / /\ \| | |_ | | || |       > _ < ')
print(' | |  | |/ ____ \ |__| |_| || |____  | (_) |')
print(' |_|  |_/_/    \_\_____|_____\_____|  \___/ ')
print('')
print('')
print('')
print('Hello, I am the magic 8ball program... What is your name?') 
name = input()
print('')
print('Hello, ' + name + '...')

def getAnswer(answerNumber):
    print('ask me a question')
    input()
    print('predicting...')
    time.sleep(2)
    if answerNumber == 1:
        return 'It is certain' 
    elif answerNumber == 2: 
        return 'It is decidingly so' 
    elif answerNumber == 3:
        return 'Yes' 
    elif answerNumber == 4:
        return 'reply hazy, try again' 
    elif answerNumber == 5: 
        return 'no' 
    elif answerNumber == 6: 
        return 'ask again later'
    elif answerNumber == 7: 
        return 'concentrate and ask again' 
    elif answerNumber == 8: 
        return 'Outlook does not look good' 
    elif answerNumber == 9: 
        return 'I highly doubt so' 
print(getAnswer(random.randint(1,9)))

def replay():
    while True: #keep replaying 
        print('do you have another question? [y/n]')
        reply = input()
        if reply == 'y' or 'Y' or 'Yes' or 'yes':
            getAnswer(random.randint(1,9)) #choose random answer
        elif reply == 'n' or 'N' or 'No' or 'no':
            sys.exit()
        else:
            print('My apologies, I did not catch that. Please try again.')
            replay()

replay()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM