python - 艰难地学习 python 练习 35 帮助

标签 python

出于某种原因,当游戏进入黄金房间时无法正常运行。当我输入任何数字时,我都会收到死亡消息“伙计,学会输入数字”

谢谢

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 how to type a number')


    if how_much < 50:
        print 'nice! your not too 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 fromt 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 pimp slaps you in the face')
        elif next == 'taunt bear' and not bear_moved:
            print 'the bear has moved from the door now. you can go through.'
            bear_moved = True
        elif next == 'taunt bear' and bear_moved:
            dead('the bear gets pissed off and chews your crotch off')
        elif next == 'open door' and bear_moved:
            gold_room()
        else:
            print 'i have no idea what that means.'


def bolofumps_room():
    print 'here you see the great evil bolofump'
    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:
        bolofumps_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 left and right'
    print 'which one do you take?'

    next = raw_input('> ')

    if next == 'left':
        bear_room()
    elif next == 'right':
        bolofumps_room()
    else:
        dead('you stumble around the room until you starve to death')


start()

编辑:输入 1 有效,但 2 无效

最佳答案

您在 gold_room 中执行此操作:

next = raw_input('> ')
if '0' in next or '1' in next:
    how_much = int(next)
else:
    dead('man, learn how to type a number')

它只检查 下一个是“0”还是下一个是“1”,所以“2”不起作用并不奇怪,对吧?

你想要的是沿着这些线

next = raw_input('> ')
try:
    how_much = int(next)
except ValueError:
    dead('man, learn how to type a number')

无异常(exception)地执行此操作也是可能的,但请记住,避免像异常(exception)一样重要和基本的事情是一个非常糟糕的主意。我希望这本书至少能在以后阐明这一点。

无论如何,我们知道 int 只接受数字,所以我们只检查一下:

if next.isdigit():
    how_much = int(next)

关于python - 艰难地学习 python 练习 35 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5300506/

相关文章:

python - 正则表达式多行 - 如何获取页面源的一部分

python - 在python中动态构建类型

python - python 列表的元素级 'and'?

python - __init__ 和 self 在 Python 中做了什么?

python - 在 for/if-else 循环中填充 np.nan 条件

python - skfuzzy无法识别

python - Theano 出现奇怪的类型错误

c++ - 几个带有 SWIG 的 numpy 数组

python - 编写一个 for 循环,在使用 python-docx 模块迭代时创建单独的 docx 文件?

python - 如何在sklearn中使用make_scorer自定义评分函数