Как избежать двойной итерации и печатать выписку 2 раза - PullRequest
0 голосов
/ 21 июня 2019

У меня есть этот кусок кода, где он печатает числа от 0 до 24, и он печатает, что вам нужен перерыв, когда время равно 8, 16, 24, теперь точка, когда время равно 8, 16 и 24 печатает время и оператор «8, вам нужно сделать перерыв», но также после того, как он повторяет код, после времени и оператора он печатает время снова, не могли бы вы объяснить, как этого избежать?

time=0
while time!=25:
    if time%8==0 and time!=0:
        print (time,'you need to take a break')
    if time == 25:
        time=0
    print (time)
    time+=1

This is the result i get.
0
1
2
3
4
5
6
7
8 you need to take a break
8
9
10
11
12
13
14
15
16 you need to take a break
16
17
18
19
20
21
22
23
24 you need to take a break
24

And this is want i want to get
0
1
2
3
4
5
6
7
8 you need to take a break
9
10
11
12
13
14
15
16 you need to take a break
17
18
19
20
21
22
23
24 you need to take a break

Ответы [ 4 ]

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

вы всегда печатаете time, вы должны разветвлять это решение и делать это только в том случае, если вы не напечатали «принять участие в перерыве» ...

, чтобы быть еще более кратким, вывсегда можно распечатать время, но выбрать суффикс (пустой или «сделать перерыв»

time=0
while time!=25:
    print(time,'you need to take a break' if time%8==0 and time!=0 else '')
    if time == 25:
        time=0
    time+=1
1 голос
/ 21 июня 2019
time=0
while time!=25:
    if time%8==0 and time!=0:
        print(time,'you need to take a break')
    else:
        print(time)
    if time == 25:
        time=0
    time+=1
0 голосов
/ 11 июля 2019

Используйте else в первом операторе if и печатайте время в else, что даст вам необходимый вывод.

time=0
while time!=25:
    if time%8==0 and time!=0:
         print (time,'you need to take a break')
    else:
         print(time)
    if time == 25:
         time=0
#        print (time)
    time+=1
0 голосов
/ 21 июня 2019

Один вкладыш для одного и того же может быть реализован, как показано ниже:

print(*["{} you need to take a break".format(time) if time%8==0 and time!=0 else time for time in range(25)], sep="\n")

FYI: используйте для цикла, если вы уверены в количестве итераций !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...