python for i range

python for i range
JA
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:4
0

Witam mam problem z napisaniem programu który mi poda poniższy kod:
0
2 1
4 8 16
6 5 4 3
8 16 32 64 128
z góry dziękuje za odp

PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
1

Co już masz zrobione i na czym konkretnie utknąłeś? Wrzuć kod, będzie łatwiej pomóc.


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
edytowany 1x, ostatnio: PerlMonk
JA
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:4
0

n=int(input())
x=0
for i in range(1,n+1):
'z=x'
'for j in range(1,i+1):'
'print(z , end=' ')'
'z = z-1'
'if i==4 or i==8:'
'x=x+2'
'else:'
'x=x+2'
'print()'

nie wiem jak zmienić aby mnożyło 3 i 5 linię

edytowany 1x, ostatnio: janosh
PerlMonk
Sformatuj kod i wrzuć w znaczniki (wstawianie kodu). Nijak teraz nie można odczytać czy instrukcje są w pętli, w ifie czy w ogóle nie są wcięte. Znaczniki masz na polem tekstowym. Nie dziwne, że ludzie mają problem z nauką programowania, jeśli sami nie dbają o styl.
Tasmanian Devil
Hej! Twój post prawdopodobnie zawiera niesformatowany kod. Użyj znaczników ``` aby oznaczyć, co jest kodem, będzie łatwiej czytać. (jestem botem, ta akcja została wykonana automatycznie, prawdopodobieństwo 0.9968877)
JA
przy kopiowaniu usunęło wcinki
PerlMonk
Usunęło, bo nie wrzuciłeś w znaczniki. Bot ci podpowiedział jak to zrobić.
JA
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:4
0
janosh napisał(a):

n=int(input())

x=0
for i in range(1,n+1):
z=x
for j in range(1,i+1):
print(z , end=' ')
z = z-1
if i==4 or i==8:
x=x+2
else:
x=x+2
print()

nie wiem jak zmienić aby mnożyło 3 i 5 linię

edytowany 1x, ostatnio: janosh
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
1

@janosh:

Wklej swój kod między znaczniki kodu


Tak jak na obrazku. Zamiast kod Pythona ma być twój kod.
title</p>

Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
edytowany 1x, ostatnio: PerlMonk
JA
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:4
0
Kopiuj
n=int(input())
> x=0
> for i in range(1,n+1):
>     z=x
>     for j in range(1,i+1):
>         print(z , end=' ')
>         z = z-1
>     if i==4 or i==8:
>         x=x+2
>     else'
>        x=x+2
>     2print()
> ```
> 
> 
> nie wiem jak zmienić aby mnożyło 3 i 5 linię
edytowany 2x, ostatnio: janosh
S7
co ma do tego kodu n?
JA
liczba linijek kodu
S7
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 4 godziny
  • Postów:354
0

" ``` " to nie to samo co ''' zrób:

```python
Twoj kod
```

Competitive Google searcher
S7
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 4 godziny
  • Postów:354
0

Spróbuj sprecyzować to pytanie, powiedz co to jest n, co to za ciąg (ciągi ?) jaki wzór jest tych ciągów, żeby wypisać ten kod w temacie to wystarczy

Kopiuj
print("""0
2 1
4 8 16
6 5 4 3
8 16 32 64 128
""")

Competitive Google searcher
Zobacz pozostałe 2 komentarze
JA
za n podaje się 5 i n wypisuje 5 linijek liczb kiedy poda się 10 to dziesięć linijek
S7
Okej wypisuje linijki, ale co ma być w tych linijkach?
JA
po prostu za pomocą for i range muszę wypisać ten kod: 0 2 1 4 8 16 6 5 4 3 8 16 32 64 128
S7
masz jakiś wzór na ten kod ?
JA
tak jak wysłałem wyżej
S7
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 4 godziny
  • Postów:354
0

Najpierw musisz zauważyć co się dzieje w tym ciągu, nie wiem czy to zauważyłeś ale o to właśnie pytałem jeśli chodziło mi o wzór:

  1. Od jakich wartości zaczyna się każda nowa linijka ciągu ?
  2. Ile wartości jest wypisywanych ?
  3. Co się dzieje w linijkach parzystych a co w nieparzystych ?

odpowiedź na te pytania


Competitive Google searcher
edytowany 2x, ostatnio: Suchy702
Delor
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
1
Kopiuj
for i in range(int(input())):
  print(' '.join([str(b) for b in (range(i * 2, int(i * 2 / 2) - 1, -1) if i&1 else  [0] if not i else [2**(a + 1) for a in range(int(i / 2), i + int(i / 2) + 1)])])) 
S7
na pewno osoba która uczy się działania pętli będzie ogarniać wyrażenia listowe z warunkiem
Pyxis
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 godziny
0
Kopiuj
for i in range(5):
    print(*[i*2**j if not i%2 else 2*i-j+1 for j in range(1, i+2)])

Przy czym dla 7 mam inny ostatni wiersz niż @Delor i trudno mi powiedzieć, które rozwiązanie jest to prawidłowe.

bearek
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad rok
  • Postów:85
0

Najprostszymi środkami:

Kopiuj
lines = int(input("Podaj liczbę linii: "))

for line in range(1, lines + 1):
    odd_line = line % 2 != 0
    start = (line - 1) * 2

    for index in range(line):
        if odd_line:
            print(start * (2 ** index), end="")
        else:
            print(start - index, end="")

        if index < line - 1:
            print(" ", end="")

    print()
edytowany 1x, ostatnio: bearek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.