Я новичок в Python и уже давно сталкиваюсь с какой-то глупой проблемой. У меня есть простая функция, которая вычисляет самозагрузку объекта.
В случае, если объект имеет тип 'la', ввод запрашивает две толщины этого объекта. Я думал, что функция должна сделать вектор для каждого входа.
например. количество слоев = 2
В результате получается вектор из двух элементов с толщиной, выбранной
пользователь.
толщина = [4 6]
Проблема в том, что Python не выбирает правильную операцию для функции и возвращает выходные данные другой части этой функции. Python возвращает значение self_load, когда types! = 'La'. Вдобавок к этому Python не рассматривает другой параметр в выражениях if number_edges.
Зачем?
Здесь ниже вы можете найти функцию и основную программу с уже предварительно выбранными правильными значениями ввода.
Кто-нибудь может мне помочь?
# FUNCTION
class load:
def __init__(self, thicknesses, width, height, thick, types, number_edges, inclination=90, density=2500):
self.width = width
self.height = height
self.thick = thick
self.types = types
self.number_edges = number_edges
self.density = density
self.thicknesses = thicknesses
self.inclination = inclination
self.a = min(self.width, self.height)
self.b = max(self.width, self.height)
def self_load(self, gravity=9.81):
if self.types == 'la':
for i in self.thicknesses:
if self.number_edges == 'four':
G = np.array(self.density * self.thicknesses * gravity * math.cos(math.radians(self.inclination)) / 1000) # Self load in kN/m^2
self.self_load = G
# print(self.self_load)
else :
G = np.array(self.a * self.density * self.thicknesses * gravity * math.cos(math.radians(self.inclination)) / 1000) # Self load in kN/m
self.self_load = G
# print(self.self_load)
else :
if self.number_edges == 'four':
G = self.density * self.thick * gravity * math.cos(math.radians(self.inclination)) / 1000 # Self load in kN/m^2
self.self_load = G
#print(self.self_load)
else :
G = self.a * self.density * self.thick * gravity * math.cos(math.radians(self.inclination)) / 1000 # Self load in kN/m
self.self_load = G
print(self.self_load)
# MAIN
import function_try
"""
INPUT
"""
width = 0.66
height = 2.2
thick = 0.006
inclination = 45
number_edges = 'four'
types = 'la'
if types == 'la':
n_layers = 2 # Enter number of layers
thicknesses = [] # Create a vector
for i in range(0, n_layers): # Set up loop to run n times
number = int(input('Enter the thickness: '))
thicknesses.append(number) # append to our_list
else:
thicknesses = 0
test = function_try.load(thicknesses, width, height, thick, number_edges, types, inclination)
test.self_load()
print('Self load is:', test.self_load)