Python 如何将try:和except:包含在异常处理中?

Python 如何将try:和except:包含在异常处理中?,python,python-2.7,exception,exception-handling,try-catch,Python,Python 2.7,Exception,Exception Handling,Try Catch,我试图在此程序中包含try:和except:,以捕获文本字符串异常,但无法确定如何实现。如何将try:和除外:包含在异常处理中 #!/usr/bin/python2.7 h = float(raw_input('Enter Hours: ')) r = float(raw_input('Enter Rate: ')) if h > 40 : p = h * r + (h - 40) * r * 0.5 else : p = h * r print 'Pay:', p 您

我试图在此程序中包含
try:
except:
,以捕获文本字符串异常,但无法确定如何实现。如何将
try:
除外:
包含在异常处理中

#!/usr/bin/python2.7

h = float(raw_input('Enter Hours: '))
r = float(raw_input('Enter Rate: '))
if h > 40 :
    p = h * r + (h - 40) * r * 0.5
else :
    p = h * r
print 'Pay:', p

您只需要使用一对try-except

def num(s):
    try:
        return float(s)
    except :
        return None
h = num(raw_input('Enter Hours: '))
现在您需要请求一个有效的响应。比如说

h = None
p = None
while (h is None):
    h = num(raw_input('Enter Hours: '))
while (p is None):
    p = num(raw_input('Enter Price: '))
这取决于您希望如何处理其余的处理。如果0是无效条目,有些人可能更愿意返回0,因为0 price或0 hours也将无效,因此测试>0

def num(s):
    try:
        return float(s)
    except :
        return 0.0
h = num(raw_input('Enter Hours: '))

h = 0.0
p = 0.0
while (h <= 0.0):
    h = num(raw_input('Enter Hours: '))
while (p <= 0.0):
    p = num(raw_input('Enter Price: '))
def num(s):
尝试:
返回浮动(s)
除:
返回0.0
h=num(原始输入('输入小时:'))
h=0.0
p=0.0
而(h
#!/usr/bin/python2.7)
def calc_pay(h,r):

如果h因为
raw_input
是触发错误消息的位置(例如,如果在提示时输入文本字符串)计算函数未包含在
try
子句中。返回
None
只是将问题推到了别处。@Holloway的要点是,在返回None之后,您需要执行if测试(或一段时间)要准确地处理错误。如果仍要对返回值进行检查,则最好在发生错误的地方进行处理。@Holloway是的,但这样,您就不需要为价格重复try-except对。与
None
相比,您应该使用
is
#!/usr/bin/python2.7

def calc_pay(h, r) :
    if h <= 0 or r <= 0 :
        return None
    elif h > 40 :
        return (h * r + (h - 40) * r * 0.5)
    else :
        return (h * r)

try :
    h = float(raw_input('Enter Hours: '))
    r = float(raw_input('Enter Rate: '))
    p = calc_pay(h, r)
    print 'Pay:', p
except :
    print "Enter Numeric Data"