Продолжайте получать ошибку типа: неподдерживаемые типы операндов для*=: ошибка «функция» и «поплавок» для триплета пифагора

#python #turtle-graphics

Вопрос:

Я пытался создать код, который определяет, является ли прямоугольный треугольник триплетом пифагора или нет. Затем я попытался нарисовать треугольник в черепахе. Однако, когда я пытаюсь получить градусы между основанием и гипотенузой, я получаю это:

 TypeError: unsupported operand type(s) for *=: 'function' and 'float'
 

Это мой код:

    import math
   isrightangled = int(input('is your triangle right-angled? enter 1 for no. if it is, press any other number'))
   if isrightangled == 1:
       print('your triangle is not a pythagorean triplet.')
   else:
       a = int(input('Please enter the perpendicular height of your triangle.'))
       b = int(input('please enter the base length of your triangle.'))
       apowerof2 = a * a
       bpowerof2 = b * b
       cpowerof2 = apowerof2   bpowerof2
       c = math.sqrt(cpowerof2)
       degrees = int(math.degrees(math.atan(a/b)))
       print(degrees)
       cinput = int(input('Please enter the length of the hypotenuse of the triangle.'))
       if c == cinput:
           print ('your triangle is a pythagorean triplet')
           from turtle import *
           drawing_area = Screen()
           drawing_area.setup(width=750, height=900)
           shape('circle')
           left(90)
           forward(a * 100)
           backward(a*100)
           right(90)
           forward(b*100)
           left(degrees)
           forward(c*100)
           done()
       else:
           print ('your triangle is not a pythagorean triplet.')
 

Любая помощь будет очень признательна!

Комментарии:

1. Пожалуйста, обновите свой вопрос с помощью полной обратной трассировки ошибок.

Ответ №1:

Проблема заключается в имени переменной degrees, она сталкивается с функцией turtle.degrees (). (https://www.geeksforgeeks.org/turtle-degrees-function-in-python/)

Просто измените имя переменной

Кроме того, вот две заметки:

  • нет необходимости создавать такое количество переменных для вычисления c. вы можете просто написать c = math.sqrt(a * a b * b)
  • left(degrees) этого недостаточно, вам нужно сделать left(180-degrees)

вот код после этих изменений:

 import math
from turtle import *
isrightangled = int(input('is your triangle right-angled? enter 1 for no. if it is, press any other number'))
if isrightangled == 1:
    print('your triangle is not a pythagorean triplet.')
else:
    a = int(input('Please enter the perpendicular height of your triangle.'))
    b = int(input('please enter the base length of your triangle.'))
    c = math.sqrt(a * a   b * b)
    degs = int(math.degrees(math.atan(a/b)))
    cinput = int(input('Please enter the length of the hypotenuse of the triangle.'))
    if c == cinput:
        print ('your triangle is a pythagorean triplet')
        drawing_area = Screen()
        drawing_area.setup(width=750, height=900)
        shape('circle')
        left(90)
        forward(a * 100)
        backward(a*100)
        right(90)
        forward(b*100)
        left(180-degs)
        forward(c*100)
        done()
    else:
        print ('your triangle is not a pythagorean triplet.')
 

Комментарии:

1. кстати, о какой degrees() функции вы думаете?

2. @quamrana черепаха.градусы(), отредактированный ответ

3. Ладно, я понял. Итак, это то from turtle import * , что перезаписывает degrees имя в публикации из ОП.