在上述练习中,有以下代码:
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.
我不明白什么是错的。
感谢您的帮助
答案 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.")