1

だから、私はこれを続けています:

def pickClass():
    print('What class are you? FIGHTER, MAGE, or THIEF?')
    classChoice = raw_input()
    if classChoice == 'FIGHTER':
        print('You are a mighty warrior. Are you sure? YES or NO.')
        _confirm = raw_input()
        if _confirm == 'YES':
            print('So be it.')
        elif _confirm == 'NO':
            pickClass()
        else:
            print('YES or NO only!')
            #go back to '_confirm = raw_input()'

私が立ち往生している部分は最後の部分です.関数全体を再度実行せずに、コードの特定の部分に移動するにはどうすればよいですか?

(そのプリントでは少し冗長であることは知っていますが、まあ、まあまあ)

4

3 に答える 3

3

関数を再構築する必要があります。次のようなことを試してください:

def pickClass():
    valid_classes = ["FIGHTER", "MAGE", "THIEF"]
    while True:
        print('What class are you? FIGHTER, MAGE, or THIEF?')
        classChoice = raw_input()
        if classChoice not in valid_classes:
            print("Invalid class")
        else:
            print("Are you sure you want to be a %s?" % classChoice)
            while True:
                _confirm = raw_input()
                if _confirm == 'YES':
                    print('So be it.')
                    return classChoice
                elif _confirm == 'NO':
                    break
                else:
                    print('YES or NO only!')
于 2012-11-21T03:53:47.757 に答える
1
def pickClass():
    classChoice = None
    while classChoice is None:
        print('What class are you? FIGHTER, MAGE, or THIEF?')
        classChoice = raw_input()
        if classChoice == 'FIGHTER':
            while True:
                print('You are a mighty warrior. Are you sure? YES or NO.')
                _confirm = raw_input()
                if _confirm == 'YES':
                    print('So be it.')
                    break
                elif _confirm == 'NO':
                    break
                print('YES or NO only!')
    return classChoice

おそらくconfirm、他の質問に再利用できる関数を作成することをお勧めします。これにより、のロジックがどのように単純化されるかに注目してください。pickClass

def confirm(msg):
    while True:
        print(msg)
        _confirm = raw_input()
        if _confirm == 'YES':
            print('So be it.')
            return True
        elif _confirm == 'NO':
            return False
        print('YES or NO only!')


def pickClass():
    while True:
        print('What class are you? FIGHTER, MAGE, or THIEF?')
        classChoice = raw_input()
        if classChoice == 'FIGHTER':
            if confirm('You are a mighty warrior. Are you sure? YES or NO.'):
                return classChoice
于 2012-11-21T04:01:15.107 に答える
0

こんな場合に使えますwhile _confirm not in['YES', 'NO']。また、関数を作成することも理にかなっていconfirm()ます。

于 2012-11-21T03:56:10.283 に答える