Python не выбирает правую часть функции с помощью предложений if - PullRequest
1 голос
/ 12 марта 2019

Я новичок в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...