Функции

gharta

Новичок
Пользователь
Окт 26, 2021
7
0
1
Здравствуйте, код к самой задаче есть, но мне не совсем понравилось как он написан. Был бы благодарен, если бы предложили свой вариант решения данной задачи. Сам код:
Код:
while True:
    def archery(x, y):              # Задаємо функцію def(x,y) для підрахунку вибитих очок.
        r = (x**2 + y**2) ** 0.5    # Визначаємо формулу нашого завдання.
        if r <= 0 and r >= 10:
            print("You have entered incorrect value!!!")
        elif 0 <= r <= 1:
            sum = 10                # s - кількість отриманих очок за попадання в конкретну мішень.
        elif 1 < r <= 2:
            sum = 9
        elif 2 < r <= 3:
            sum = 8
        elif 3 < r <= 4:
            sum = 7
        elif 4 < r <= 5:
            sum = 6
        elif 5 < r <= 6:
            sum = 5
        elif 6 < r <= 7:
            sum = 4
        elif 7 < r <= 8:
            sum = 3
        elif 8 < r <= 9:
            sum = 2
        elif 9 < r <= 10:
            sum = 1
        else:                       # "Молоко" - не приносить очок(за межі мішені).
            sum = 0
        return sum

    x1 = float(input("Enter x1: "))
    y1 = float(input("Enter y1: "))
    print("-" * 121)
    x2 = float(input("Enter x2: "))
    y2 = float(input("Enter y2: "))
    print("-" * 121)
    x3 = float(input("Enter x3: "))
    y3 = float(input("Enter y3: "))
    print("-" * 121)
    a = archery(x1, y1)
    b = archery(x2, y2)
    c = archery(x3, y3)

    print("The number of scored is: ", a + b + c)
    print("-" * 121)

    question = input('To exit, enter \'mi scusi\' in the input field: ')
    print("The work is completed.")

Само задание:
 

Вложения

  • Screenshot_5.png
    Screenshot_5.png
    30,4 КБ · Просмотры: 3

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Был бы благодарен, если бы предложили свой вариант решения данной задачи.
В задаче нужно написать функцию, которая принимает координаты трех точек и выдает количество полученных очков.
Вот пример решения:
Python:
def archery(*points):
    result = 0
    for point in points:
        r = (point[0]**2 + point[1]**2) ** 0.5
        if r < 10:
            result += 10 - int(r)

    return result


x1 = float(input("Enter x1: "))
y1 = float(input("Enter y1: "))
print("-" * 30)
x2 = float(input("Enter x2: "))
y2 = float(input("Enter y2: "))
print("-" * 30)
x3 = float(input("Enter x3: "))
y3 = float(input("Enter y3: "))
print("-" * 30)
score = archery((x1, y1), (x2, y2), (x3, y3))

print("The number of scored is: ", score)
 

Форум IT Специалистов