Работа со списком

NikoPo

Новичок
Пользователь
Окт 13, 2020
3
0
1
Добрый день!
Ребенок в 10 классе начал изучать программирование и начали с языка phyton.
Вместе решали домашнее задание, безрезультатно и ничего не остается, как только обратится к Вам за помощью.

Имеем список расписания прибытия автобусов.
В этом списке необходимо определить максимальное время в пути от остановки до остановки по маршруту. Общее время в пути по каждому автобусу. Максимальное время в пути среди всех автобусов от остановки до остановки.

Заранее спасибо за код
и особое спасибо за комментарии к строкам кода.
 

Вложения

  • autobuss.txt
    7,4 КБ · Просмотры: 5

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 606
465
83
а что сами нарешали? покажите
 

NikoPo

Новичок
Пользователь
Окт 13, 2020
3
0
1
Python:
f=open("C:/Users/N P/Downloads/autobuss.csv","rt")

q=[]

for a in f:

    q.append(a.split(";"))

#print(q[1][0])



for a in zip(q[1],q[2]):

    if (a[0][0].isdigit())and(a[1][0].isdigit()):

##        print(a[0].strip(),a[1].strip())

      

        a1=a[0].strip().split(':')

        a2=a[1].strip().split(':')

        hd=int(a2[0])-int(a1[0])

        md=int(a2[1])-int(a1[1])

        print(hd,':',md)

    else:

        print("Not D")



for a in zip(q[3],q[4]):

    if (a[0][0].isdigit())and(a[1][0].isdigit()):

##        print(a[0].strip(),a[1].strip())

        a3=a[0].strip().split(':')

        a4=a[1].strip().split(':')

        hd=int(a2[0])-int(a1[0])

        md=int(a2[1])-int(a1[1])

        print(hd,':',md)

    else:

        print("Not D")



for a in zip(q[5],q[6]):

    if (a[0][0].isdigit())and(a[1][0].isdigit()):

##        print(a[0].strip(),a[1].strip())

        a3=a[0].strip().split(':')

        a4=a[1].strip().split(':')

        hd=int(a2[0])-int(a1[0])

        md=int(a2[1])-int(a1[1])

        print(hd,':',md)

    else:

        print("Not D")
 
Последнее редактирование модератором:

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Python:
f=open("C:/Users/N P/Downloads/autobuss.csv","rt")

q=[]

for a in f:

    q.append(a.split(";"))

#print(q[1][0])



for a in zip(q[1],q[2]):

    if (a[0][0].isdigit())and(a[1][0].isdigit()):

##        print(a[0].strip(),a[1].strip())

     

        a1=a[0].strip().split(':')

        a2=a[1].strip().split(':')

        hd=int(a2[0])-int(a1[0])

        md=int(a2[1])-int(a1[1])

        print(hd,':',md)

    else:

        print("Not D")



for a in zip(q[3],q[4]):

    if (a[0][0].isdigit())and(a[1][0].isdigit()):

##        print(a[0].strip(),a[1].strip())

        a3=a[0].strip().split(':')

        a4=a[1].strip().split(':')

        hd=int(a2[0])-int(a1[0])

        md=int(a2[1])-int(a1[1])

        print(hd,':',md)

    else:

        print("Not D")



for a in zip(q[5],q[6]):

    if (a[0][0].isdigit())and(a[1][0].isdigit()):

##        print(a[0].strip(),a[1].strip())

        a3=a[0].strip().split(':')

        a4=a[1].strip().split(':')

        hd=int(a2[0])-int(a1[0])

        md=int(a2[1])-int(a1[1])

        print(hd,':',md)

    else:

        print("Not D")
есть какие нибудь ошибки в консоли? кстати, вы файл закрыть забыли, вроде
 

NikoPo

Новичок
Пользователь
Окт 13, 2020
3
0
1
Ошибок в консоли нет, но этот алгоритм считает не правильно.
Зная синтаксис языка, я бы перевел время в секунды. Расчеты, сравнения, выбор производил бы в секундах.
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Python:
schedule = []
with open('data/autobuss.txt') as f:
    for line in f:
        next_line = []
        for time in line.split():
            hours, minutes = time.split(':')
            hours = int(hours) if hours != '0' else 24
            minutes = int(minutes)
            next_line.append(hours * 60 + minutes)
        schedule.append(next_line)

max_time_per_line = {n: max([y - x for x, y in zip(line, line[1:])]) for n, line in enumerate(schedule)}
total_time = {n: line[-1] - line[0] for n, line in enumerate(schedule)}
max_among_all = max(max_time_per_line.values())
 

Форум IT Специалистов