Почему Except: ValueError не работает в моем коде? - PullRequest
0 голосов
/ 07 октября 2018

Это мой исходный код:

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 Traceback (последний вызов был последним): файл "", строка 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 голосов
/ 07 октября 2018

Вопрос : Почему в моем коде не работает исключение: ValueError?

Как указал 'Майк Скотти', вы try .. except ошиблисьстрока кода!

Примечание : try .. except только одна строка кода!
Это дает вам контроль над тем, какая строка кода выбрасываетсяисключение.

Изменить на следующее:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...