和数字有关的try except break问题

a=0
b=0
while True:
    try:
        astr=input('enter hours')
        bstr=input('enter_rate')
    except:
        print('wrong,please enter numeric input')
    a=float(astr)
    b=float(bstr)
    if astr=='done' or bstr=='done':
        break
    if  a<=40:
        pay=a*b
        print(pay)
    elif a>40:
        pay=40*b+(a-40)*1.5*b
        print(pay)

```python
问题在于,如果我输入的是非数字,那么tryexcept就无法使用,如果我改成比如说a=float(input(''))这样的话,那么下面的break就无法使用,python初学者希望各位能够解答,谢谢。

你好同学,可以这样做,供参考:

a=0
b=0
while True:
    try:
        astr=input('enter hours')
        bstr=input('enter_rate')
        a=float(astr)#把转换放在这里
        b=float(bstr)
    except:
        if astr=='done' or bstr=='done':#把比较放在except里面
            break
        else:
            print('wrong,please enter numeric input')
    if  a<=40:
        pay=a*b
        print(pay)
    elif a>40:
        pay=40*b+(a-40)*1.5*b
        print(pay)

有帮助望采纳哟