#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)