python pętla while w pętli for

0

hej, mam takie pytanko jak zrobić takie coś:

for i in range(n):
    print(l[i], f)

gdzie f chciałabym, aby f działało tak:

a=2
while a<=n:
    a*l[i]
    a=a+1

Przykładowo l=[2,3,4,5,6]
wybieram n=4, to chciałabym wydrukować mniej więcej takie coś:
2 4 3 9 4 16

jak to zrobić?

0

Spróbuj tak:

n=4
l=[2,3,4,5,6]
print(list((i,i**2) for i in l)[:n])

Formatowanie danych wynikowych można łatwo zmienić, ale IMHO lepiej jest dać na wyjściu pary, tak jak w moim przykładzie.

Jeśli chcesz koniecznie zrobić program na bazie aktualnego kodu, to z "działania f" zrób sobie funkcję, do której będziesz w istniejącej pętli for przekazywała l[i] jako argument. Jeśli chcesz dane wynikowe wypisać w jednej linijce, to za nawiasem printa dopisz przecinek:

n=4
l=[2,3,4,5,6]

def f(argument):
	return argument*argument

for i in range(n-1):
    print(l[i], f(l[i]),end=" ")
print()

Według przykładowego wyjścia chodzi Ci o l[i] podniesioną do potęgi drugiej, Twój kod z pętlą while jest bez sensu. Po tym jak zapisałaś print, wnioskuję, że używasz Python3.

0

nie no po prostu chyba źle napisałam, to co chciałam. Chcę wydrukować taką talbiczke monżenia, mam tak:

l1=[1,2,3,4,5,6,7]
n=int(input('podaj:\n'))
for a in range(n):
    print('',end='%10d'%l1[a])
for b in range(n):
    print('\n, ',l1[b], 1*l1[b], 2*l1[b], 3*l1[b],4*l1[b])

I właśnie w tym miejscu gdzie jest ręcznie wpisane 1l1[b], 2l1[b], 3l1[b],4l1[b] chcę aby to było od 1 do n, bo to ma być n na n. Stąd moja pętla while s<=n.

0

Coś takiego?

n=6

for j in range(1,n+1):
	for i in range(1,n+1):
		print("%dx%d=%d"%(i,j,i*j),end="\t")
	print()

Wyjście (na terminalu jakoś lepiej wychodzą te tabulatory...):

1x1=1	2x1=2	3x1=3	4x1=4	5x1=5	6x1=6	
1x2=2	2x2=4	3x2=6	4x2=8	5x2=10	6x2=12	
1x3=3	2x3=6	3x3=9	4x3=12	5x3=15	6x3=18	
1x4=4	2x4=8	3x4=12	4x4=16	5x4=20	6x4=24	
1x5=5	2x5=10	3x5=15	4x5=20	5x5=25	6x5=30	
1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36

to end=" " (czy też end="t"), służy do tego, żeby po tej funkcji print, następna wypisała tekst w tej samej linijce po spacji/tabulacji.
Potem jest print(), żeby zrobić nową linię.

0

super dziekuje

0

@AgataM, porównaj tytuł wątku, treść pierwszego postu i to co naprawdę było Ci potrzebne.

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