Powrót do początku listy zrealizowany za pomocą jednej i tej samej pętli

0

Witajcie

Mam taki oto prosty program służacy tylko jako przykład:

>>> for i in range(5):
...     print i
...     if i == 4:
...         print('x')
... 
0
1
2
3
4
x

Chciałbym, aby po wydrukowanym znaku 'x' pętla zaczęła się raz jeszcze i wypisywała cyfry 0 - 5. Jest możliwość zaimplementowania takiego rozwiązania bez używania funkcji? Tak jak w tytule wątku napisałem - chciałbym tego rozwiązania użyć do powrotu na początek listy. (konkretnie chodzi tutaj o implementację kodu służącego do obsługiwania pętli w Brainfucku)

1

Nie wystarczy po prostu wykonać pętlę jeszcze raz?

r = 5
while r <= 6:
    for i in range(r):
        print(i)
        if i == r - 1:
            print('x')
    r += 1

//teraz na jednej pętli, nie doczytałem tytułu

rang = 5
t = list(range(rang))

i = 0
repet = 1 #ile razy ma sie wykonac petla o jedna iteracje dluzsza
ri = 0
while(i < len(t)):
    print(t.index(i))
    i+=1

    if i == len(t):
        print('x')

    if ri < repet and i == len(t):
        t.insert(len(t), i)
        ri += 1
        i = 0
3
import itertools

for i in itertools.chain(range(5), 'x', range(6)):
    print(i)
1

Alternatywnie bez chain'a.

for i in [_ for _ in range(5)]+['x']+[_ for _ in range(6)]:
    print(i)
1

No to jeszcze tak głupie że aż śmieszne. Ani to wydajne ani (szczególnie) logiczne :-)

from random import randrange, seed

lst = [0, 1, 2, 3, 4, 5, 'x']

seed(48143)
for i in range(6):
    print(lst[randrange(7)])
seed(9260)
for i in range(6):
    print(lst[randrange(7)])

PS. NIe chciało mi się dłużej czekać na znalezienie pełnej sekwencji, więc jest "w 2 podejściach".

0

@Mokrowski
Pełnej sekwencji nie znajdziesz w krótkiej postaci, to po prostu wykorzystanie przewidywalności pseudolosowości (Crack Random Integrer) dla zbioru siedmio elementowego :).
Stąd zmiana seed'a.
Jedyną opcją na jedną sekwencję to zastosowanie if'a i przypisania.

from random import randrange, seed
 
lst = [0, 1, 2, 3, 4, 5, 'x']
 
seed(48143)
for i in range(12):
    lotto = lst[randrange(7)]
    print(lotto)
    if lotto == "x":
        seed(9260)

1 użytkowników online, w tym zalogowanych: 0, gości: 1