为什么Except:ValueError在我的代码中不起作用?

时间:2018-10-07 02:21:57

标签: python typeerror valueerror

这是我的源代码:

def farmer_johns():

    r = int(input('Enter the radius of the circle in feet:'))
    #check for valid input
    try:
        while input >= 0 :
        # area of brown
        #area of square - area of circle
            import math

            pi = math.pi
            area_square = (r+r)**2
            area_circle = pi* r**2

            area_brown = area_square - area_circle
            print('The area of the brown shaded region is {:.2f} feet^2.'.format(area_brown))


            #turtle graphics set up
            import turtle
            wn = turtle.Screen()
            a = turtle.Turtle()
            a.pensize(5)

            #draw circles
            a.pencolor('green')

            a.penup()
            a.goto(r,r)
            a.pendown()
            a.circle(r)

            a.penup()
            a.goto(r,-r)
            a.pendown()
            a.circle(r)

            a.penup()
            a.goto(-r,-r)
            a.pendown()
            a.circle(r)

            a.penup()
            a.goto(-r,r)
            a.pendown()
            a.circle(r)

             #square
             a.pencolor('blue')

             a.penup()
             a.goto(r,r+r)
             a.pendown()
             a.goto(-r,r+r)
             a.goto(-r,-r+r)
             a.goto(r,-r+r)
             a.goto(r,r+r)

             #middle region
             a.pencolor('#654321')
             a.fillcolor('#b5651d')
             a.begin_fill()

             a.penup()
             a.goto(r,r)
             a.pendown()
             a.circle(r,-90)

             a.penup()
             a.goto(0,r+r)
             a.right(180)
             a.pendown()
             a.circle(r,-90)

             a.penup()
             a.goto(-r,r)
             a.left(-180)
             a.pendown()
             a.circle(r,-90)

             a.penup()
             a.goto(0,0)
             a.left(180)
             a.pendown()
             a.circle(r,-90)

             a.end_fill()

             #writing

             # a.write('The area of the brown shaded region is {:.2f} feet^2.'.format(area_brown))

    except ValueError:
        print('invaild input')
    except TypeError:
        print('invaild input')

问题是当我输入字母作为输入时,我得到了:

  
    
      

farmer_johns()       以英尺为单位输入圆的半径:Ee       追溯(最近一次通话):         文件“”,第1行,位于         文件“ C:\ Users \ SueAnn \ Desktop \ Comp Sci \ Projects \ project_3 \ farmer john again.py”,第19行,位于farmer_johns           r = int(input('以英尺为单位输入圆的半径:'))       ValueError:int()以10为底的无效文字:“ Ee”

    
  

代码“ Except:TypeError”行有效,但“ Except:ValueError”

1 个答案:

答案 0 :(得分:0)

  

问题:为什么Except:ValueError在我的代码中不起作用?

正如“迈克·斯科蒂”所指出的那样,您是try .. except错误的代码行!

  

注意try .. except 只有一行代码!
  这使您可以控制哪一行代码引发Exception。

更改为以下内容:

def farmer_johns():
    #check for valid input
    # This try ... except catches: input value != integer
    try:
        r = int(input('Enter the radius of the circle in feet:'))
    except ValueError as e:
        print('invaild input: {}'.format(e)

    ## Other code follows
  

这将引发错误,因为未定义 变量input

while input >= 0 :

您可以将while True:break结合使用。