Как добавить модули определения?

#python

#python

Вопрос:

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

Вот пока код. (Я не знаю, как сделать это намного аккуратнее на сайте, извините.)

 import string

def Datawrite ():
    forename = []
    surname = []
    distance = []
    data = open("members.txt","r")
    for line in data:
        value = line.split(',')
        forename.append(value[0])
        surname.append(value[1])
        distance.append(value[2])
    data.close()

def FarthestWalker(distance):
    farthest_walk = distance[0]
    for counter in range(len(distance)):
        if float(distance[counter]) >= float(farthest_walk):
            farthest_walk = distance[counter]
            farthest_walk = float(farthest_walk)
            Calcandstore()

def Calcandstore(forename,surname,distance,farthest_walk):
    Results = open("Results.txt","w ")
    Results.write("The prize winnning memberes are:n")
    seventy = 0.7*farthest_walk
    Winning = []
    for count in range(len(distance)):
        if float(distance[count]) >= float(seventy):
            Winning.append([count])
            for count in range(len(Winning)):
                Results.write(forename[count] ":")
                Results.write(surname[count] ":")
                Results.write(distance[count])
            Results.close()

Datawrite()
FarthestWalker(distance)
Calcandstore(forename,surname,distance,farthest_walk)
  

Когда я запускаю код, он возвращает это.

 Traceback (most recent call last):
  File "E:AssignmentTest.py", line 58, in <module>
    FarthestWalker(distance)
  File "E:AssignmentTest.py", line 29, in FarthestWalker
    farthest_walk = distance[0]
IndexError: list index out of range
  

Я возился с этим уже несколько дней, и я не могу заставить это работать.

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

1. Этот код не похож на тот, который выдает ошибку. Вы не объявляете distance нигде перед вызовом FarthestWalker(distance) . Например, если вы объявили distance = [] имя для пустого списка, это distance[0] вызовет ошибку, поскольку в списке нет значений.

2. Вы могли бы объявить distance = [] вне функций

3. ‘def ‘ — это не модули, они называются функциями.

Ответ №1:

Вот некоторые проблемы: 1) Datawrite ничего не возвращает, поэтому создаваемые вами списки теряются в эфире. 2) Вы вызываете FarthestWalker с расстоянием, которое никогда не инициализируется. 3) Вы вызываете Calcandstore со значениями, которые не инициализированы.

Чтобы передавать значения из функций, вам нужно возвращать значения и объявлять их. Например:

 def make_cat():
    return 'Cat'

def print_animal(animal):
    print(animal)

c = make_cat()
print_animal(c)