Я буду go по частям кода, чтобы объяснить, что происходит:
def sum_sides(side1, side2, side3, side4):
side1=0
side2=0`
side3=0
side4=0
side1=int(input("Enter side 1"))
side2=int(input("Enter side 2"))
side3=int(input("Enter side 3"))
side4=int(input("Enter side 4"))
Ваша функция начинается с четырех аргументов (side1...4
), но она не использует ценности, которые были переданы в; вместо этого он заменяет эти значения сначала на 0, а затем на ввод от пользователя. Если вы хотите, чтобы эта функция принимала параметры, то вход должен поступать извне функции; если вы хотите, чтобы эта функция обрабатывала ввод, тогда ей не нужно принимать параметры.
sum = side1 + side2 + side3 + side4
Пока все хорошо! Теперь sum
содержит сумму четырех сторон (тех, которые вы получили от input()
), а не тех, которые были переданы в вашу функцию). Обратите внимание, что присвоение имени переменной sum
обычно является плохой идеей, поскольку оно конфликтует с именем очень полезной функции sum
, встроенной в Python (работа которой, как вы уже догадались, заключается в получении суммы вещей). Было бы лучше назвать это perimeter
, так как это то, что мы называем суммой сторон формы.
return ()
И теперь мы закончили - мы возвращаем ()
( пустой кортеж) звонящему. Значение sum
никогда не используется и исчезает в пустоте.
if (x % 4 == 0):
print("Forms a square with perimeter of ",sum)
elif (x % 2==0):
print("Forms a rectangle with perimeter of ",sum)
else:
print("Does not form a rectangle or square.")
Этот код никогда не будет выполнен, но если он это сделает, он немедленно вызовет ошибку, потому что x
никогда не был определен.
Вот пример того, как вы могли бы реализовать часть, которую вы сделали до сих пор (предлагая пользователю четыре стороны и затем суммируя их) таким образом, чтобы сделать возможным выполнение следующей части:
from typing import List
def get_sides_from_user() -> List[int]:
"""Prompts the user to enter four ints,
representing the four sides of a quadrilateral."""
return [int(input(f"Enter side {n}: ")) for n in range(1, 5)]
def get_and_sum_sides() -> None:
"""Get sides from the user and then print interesting information."""
# Get the four sides.
sides = get_sides_from_user()
# Sum them up!
perimeter = sum(sides)
print(f"The perimeter is {perimeter}.")
# Now how do we figure out whether it's a square or not?
if __name__ == '__main__':
get_and_sum_sides()