Использование цикла for для печати временной последовательности - PullRequest
0 голосов
/ 09 июня 2019

Я хочу создать цикл, который печатает:

"The train will leave at 13:36"
"The train will leave at 13:56"
"The train will leave at 14:16"
"The train will leave at 14:36"
"The train will leave at 14:56"
"The train will leave at 15:16"
etc. etc...

У меня есть код, который говорит:

h = 13 
m = 36

for i in range(5):
    print("The train will leave at {}:{} ".format(h,m))
    m = m + 20

    if 60 <= m:
        break
    print("The train will leave at {}:{} ".format(h,m))
    h = h+1
    m = m-60+20

Вывод:

The train will leave at 13:36 
The train will leave at 13:56 
The train will leave at 14:16 
The train will leave at 14:36 
The train will leave at 15:-4 
The train will leave at 15:16 
The train will leave at 16:-24 
The train will leave at 16:-4
The train will leave at 17:-44
The train will leave at 17:-24

Как я могу это исправить, чтобы минуты увеличивались на 20 минут, и каждый раз, когда они достигают 60 минут, они должны выводить правильное время ...

Ответы [ 5 ]

1 голос
/ 09 июня 2019

Вы можете использовать datetime модуль из стандартной библиотеки:

from datetime import timedelta, datetime

t = datetime(hour=13, minute=36, year=2019, month=6, day=9)

for i in range(5):
    print("The train will leave at {}:{} ".format(t.hour,t.minute))
    t += timedelta(minutes=20)

Печать:

The train will leave at 13:36 
The train will leave at 13:56 
The train will leave at 14:16 
The train will leave at 14:36 
The train will leave at 14:56 
1 голос
/ 09 июня 2019

Используйте двоичные арифметические операции для обработки минут и часов, а именно, оператор по модулю % и деление по полу //:

h = 13 
m = 36

for i in range(10):
    print("The train will leave at {}:{} ".format(h,m))
    h = h+((m+20)//60)
    m = (m+20)%60
    if h == 24:
        h = 0

Обратите внимание на две последние строки: вы должны проверитьзначение часа, чтобы вернуться к 0, когда h==24.

0 голосов
/ 09 июня 2019

Используйте следующую инструкцию if для проверки изменения часов, я изменил час и минуты для двойной проверки

h = 15 
m = 53

for i in range(5):
    print("The train will leave at {}:{} ".format(h,m))
    m = m + 20
    if m >= 60:
        h = h+1
        m-=60
        print("The train will leave at {}:{} ".format(h,m))
        m = m + 20

Исполнение будет:

The train will leave at 15:53 
The train will leave at 16:13 
The train will leave at 16:33 
The train will leave at 16:53 
The train will leave at 17:13 
The train will leave at 17:33 
The train will leave at 17:53 
The train will leave at 18:13
0 голосов
/ 09 июня 2019

Вы должны попробовать оператор%.

Оператор % - это оператор по модулю , который можно легко представить как оператор, обеспечивающий остаток от деления между левым операндом и правым. Определение этого оператора может стать более техническим, если вы изучали теорию групп или абстрактную алгебру в колледже.

Обычно начинается с определенной минуты и увеличивается на 20 минут. Всякий раз, когда количество минут превышает 60 минут, нам нужно увеличивать час. Но нам нужно сбросить количество минут. Таким образом, в первый раз m достигает 76, мы устанавливаем его обратно на 76 - (1 * 60) = 16. Обратите внимание, что m никогда не будет идти дальше 120, если для него не установлено число больше 99 с самого начала.

Я думаю, что вы действительно хотите это, хотя

h = 13 
m = 36

for i in range(5):
    print("The train will leave at {}:{} ".format(h,m))
    m = m + 20
    if  m >= 60:
        h += 1
        m = m % 60

выход

# The train will leave at 13:36 
# The train will leave at 13:56 
# The train will leave at 14:16 
# The train will leave at 14:36 
# The train will leave at 14:56 

Но вы, вероятно, также должны учитывать, когда h проходит мимо 24. так что if h >= 24: h = 0.

Еще раз предполагается, что вы всегда начинаете с m ниже 60.

0 голосов
/ 09 июня 2019

Небольшая модифицированная версия вашего кода. Просто проверьте минуты, используя if. Если минуты больше 60, увеличьте час на единицу и перемотайте минуты назад, вычтя 60

h = 13 
m = 36

for i in range(5):
    if 60 <= m:
        m = m-60
        h = h+1
    print("The train will leave at {}:{} ".format(h,m))       
    m = m + 20

# The train will leave at 13:36 
# The train will leave at 13:56 
# The train will leave at 14:16 
# The train will leave at 14:36 
# The train will leave at 14:56     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...