学习python的难点,练习35:放置正则表达式

时间:2014-02-11 09:46:58

标签: python regex

在上述练习中,有以下代码:

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!")

在第7行中,我想放置正则表达式[0-9]而不是0或1,这样任何插入的数字都会被传递给下一个if语句,所以我将其替换为:

    if next == [0-9]:

但插入任何数字后,我收到错误消息:

Man, learn to type a number.

我不明白什么是错的。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

试试这个:

try:
    how_much = int(next)
except ValueError:
    dead("Man, learn to type a number.")

除非next无法转换为整数,否则会将输入转换为整数。 Read this to learn more about errors and exceptions

如果你坚持使用正则表达式,那绝对不应该:

if re.match("\d+", next):
    how_much = int(next)

请不要使用正则表达式。

答案 1 :(得分:0)

如果您特别关注使用正则表达式,请使用此

import re
try:
  re.match(r"[0-9]", next).group()
  how_much = (int)next
except:
  dead("Man, learn to type a number.")