学习Python艰难的方式ex35

时间:2017-04-15 23:14:15

标签: python

我正在做Excersice 35(分支和功能),但我输入的代码没有用,经过一段时间寻找错误,我试图从书中复制粘贴,但它没有工作

这里是代码:

from sys import exit

def gold_room():

    print "This room is full of gold. How much do you take?"

    next = raw_input("> ")
    if "0" in next or "1" in next:
        how_much = int(next)
    else:
        dead("Man, learn to type a number.")

    if how_much < 50:
        print "Nice, you're not greedy, you win!"
        exit(0)
    else:
        dead("You greedy bastard!")


def bear_room():

    print "There is a bear here."
    print "The bear has a bunch of honey."
    print "The fat bear is in front of another door."
    print "How are you going to move the bear?"
    bear_moved = False

while True:

    next = raw_input("> ")

    if next == "take honey":
        dead("The bear looks at you then slaps your face off.")
    elif next == "taunt bear" and not bear_moved:
        print "The bear has moved from the door. You can go through it now."
        bear_moved = True
    elif next == "taunt bear" and bear_moved:
        dead("The bear gets pissed off and chews your leg off.")
    elif next == "open door" and bear_moved:
        gold_room()
    else:
        print "I got no idea what that means."


def cthulhu_room():

    print "Here you see the great evil Cthulhu."
    print "He, it, whatever stares at you and you go insane."
    print "Do you flee for your life or eat your head?"

    next = raw_input("> ")

    if "flee" in next:
        start()
    elif "head" in next:
        dead("Well that was tasty!")
    else:
        cthulhu_room()


def dead(why):

    print why, "Good job!"
    exit(0)

def start():

    print "You are in a dark room."
    print "There is a door to your right and left."
    print "Which one do you take?"

    next = raw_input("> ")

    if next == "left":
        bear_room()
    elif next == "right":
        cthulhu_room()
    else:
        dead("You stumble around the room until you starve.")



start()

当我运行它时,它会出现&#34;&gt;&#34;,这就是while循环,但当我输入&#34;拿蜂蜜时,它说死了不是&#39;我定义了,我不理解。 (对不起,如果我用英文写错了)

3 个答案:

答案 0 :(得分:1)

python中的缩进非常重要,看起来你没有缩进while语句,whilewhile包括def bear_room()本身的所有内容都属于bear_room

while应该是这样的,否则你会在start()来电之前运行def bear_room(): print "There is a bear here." print "The bear has a bunch of honey." print "The fat bear is in front of another door." print "How are you going to move the bear?" bear_moved = False while True: next = raw_input("> ") if next == "take honey": dead("The bear looks at you then slaps your face off.") elif next == "taunt bear" and not bear_moved: print "The bear has moved from the door. You can go through it now." bear_moved = True elif next == "taunt bear" and bear_moved: dead("The bear gets pissed off and chews your leg off.") elif next == "open door" and bear_moved: gold_room() else: print "I got no idea what that means." 循环:

%w(a b c).map { |s| Foo.new(s) }

答案 1 :(得分:0)

只需将dead的函数定义移到文件的顶部(在调用它的位置上方)。

from sys import exit

def dead(why):
    print why, "Good job!"
    exit(0)

def gold_room():

    print "This room is full of gold. How much do you take?"

    next = raw_input("> ")
    if "0" in next or "1" in next:
        how_much = int(next)
    else:
        dead("Man, learn to type a number.")

    if how_much < 50:
        print "Nice, you're not greedy, you win!"
        exit(0)
    else:
        dead("You greedy bastard!")


def bear_room():

    print "There is a bear here."
    print "The bear has a bunch of honey."
    print "The fat bear is in front of another door."
    print "How are you going to move the bear?"
    bear_moved = False

while True:

    next = raw_input("> ")

    if next == "take honey":
        dead("The bear looks at you then slaps your face off.")
    elif next == "taunt bear" and not bear_moved:
        print "The bear has moved from the door. You can go through it now."
        bear_moved = True
    elif next == "taunt bear" and bear_moved:
        dead("The bear gets pissed off and chews your leg off.")
    elif next == "open door" and bear_moved:
        gold_room()
    else:
        print "I got no idea what that means."


def cthulhu_room():

    print "Here you see the great evil Cthulhu."
    print "He, it, whatever stares at you and you go insane."
    print "Do you flee for your life or eat your head?"

    next = raw_input("> ")

    if "flee" in next:
        start()
    elif "head" in next:
        dead("Well that was tasty!")
    else:
        cthulhu_room()




def start():

    print "You are in a dark room."
    print "There is a door to your right and left."
    print "Which one do you take?"

    next = raw_input("> ")

    if next == "left":
        bear_room()
    elif next == "right":
        cthulhu_room()
    else:
        dead("You stumble around the room until you starve.")


start()

答案 2 :(得分:0)

您的代码中很可能出现空格错误。这意味着您忘记了某个地方的标签,因此永远不会达到dead(函数)的定义。当它被调用时(dead("..."))它没有被定义,你的脚本就停止了。

以下是您的代码的外观:

from sys import exit

def gold_room():
    print "This room is full of gold. How much do you take?"

    next = raw_input("> ")
    if "0" in next or "1" in next:
        how_much = int(next)
    else:
        dead("Man, learn to type a number.")

    if how_much < 50:
        print "Nice, you're not greedy, you win!"
        exit(0)
    else:
        dead("You greedy bastard!")

def bear_room():
    print "There is a bear here."
    print "The bear has a bunch of honey."
    print "The fat bear is in front of another door."
    print "How are you going to move the bear?"
    bear_moved = False
    while True:
        next = raw_input("> ")

        if next == "take honey":
            dead("The bear looks at you then slaps your face off.")
        elif next == "taunt bear" and not bear_moved:
            print "The bear has moved from the door. You can go through it now."
            bear_moved = True
        elif next == "taunt bear" and bear_moved:
            dead("The bear gets pissed off and chews your leg off.")
        elif next == "open door" and bear_moved:
            gold_room()
        else:
            print "I got no idea what that means."

def cthulhu_room():
    print "Here you see the great evil Cthulhu."
    print "He, it, whatever stares at you and you go insane."
    print "Do you flee for your life or eat your head?"

    next = raw_input("> ")

    if "flee" in next:
        start()
    elif "head" in next:
        dead("Well that was tasty!")
    else:
        cthulhu_room()

def dead(why):
    print why, "Good job!"
    exit(0)

def start():
    print "You are in a dark room."
    print "There is a door to your right and left."
    print "Which one do you take?"

    next = raw_input("> ")

    if next == "left":
        bear_room()
    elif next == "right":
        cthulhu_room()
    else:
        dead("You stumble around the room until you starve.")

start()

真的要注意空白!