Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

msmsms

como fazer sequencia de 5 ate 1 for ciclo for ?

Mensagens Recomendadas

msmsms

eu tentei fazer a sequencia de 1 até 5 e deu certo:

for i in range(1, 6):
print (i)

mas quando tentei fazer de 5 ate 1 pelo processo inverso não dá

porquê?

for i in range (5,0):
	print (i)

pretendo obter a sequencia: 5,4,3,2,1

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

eu tenho de fazer 2 padroes e achei que invertendo o range eu conseguiria chegar ao segundo deles mas não

porquê?

objectivo (dado n=3) obter:

1

1 2

1 2 3

# 5.18 A
def padrao(n):
for i in range(1, n+1): # linhas
	for j in range(1,i+1): # elementos
		print (j, end=' ')
	print()

deu certo!

objectivo (dado n=3) obter:

1 2 3

1 2

1

# 5.18 B
def padrao2(n):
for i  in range(1, n+1)[::-1]:
	for j in range(1,n-1):
		print(j, end=' ')
	print()

deu errado!

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pedro C.

Acho que se definires o ciclo do "j" como fizeste para a outra solução deverá dar certo:

def padrao2(n):
  for i  in range(1, n+1)[::-1]:
  for j in range(1,i+1): # É AQUI QUE PROPONHO A ALTERAÇÃO.
	 print(j, end=' ')
  print()

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

Acho que se definires o ciclo do "j" como fizeste para a outra solução deverá dar certo:

def padrao2(n):
  for i  in range(1, n+1)[::-1]:
  for j in range(1,i+1): # É AQUI QUE PROPONHO A ALTERAÇÃO.
	 print(j, end=' ')
  print()

não dá certo

# 5.18 B
def padrao2(n):
   for i in range(1, n+1): # linhas
    for j in range(1,i+1)[::-1]: # elementos
	    print (j, end=' ')
    print()

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Slicing? What? Mas para que querem o terceito argumento do range?

Este é o protótipo do range:

def range(inf, sup, step=1):
   pass  # código...

Portanto:

>>> for i in range(5, 0, -1):
   print(i)


5
4
3
2
1

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

Slicing? What? Mas para que querem o terceito argumento do range?

Este é o protótipo do range:

def range(inf, sup, step=1):
pass  # código...

Portanto:

>>> for i in range(5, 0, -1):
print(i)


5
4
3
2
1

mas como é que faço para obter o padrao

1 2 3

1 2

1

?

def padrao(n):
for i in range(n,0,-1):
	for i in range(1,i+1):
		print (j, end=' ')
	print()

>>> padrao(3)

1 2 3

1 2 3

1 2 3

nao estou a conseguir...

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Duas coisas:

1) Usas duas vezes o iterador i. Cuidado, precisas de identificadores distintos.

2) No segundo ciclo, estás a correr de 1 até n+1. Se n é o argumento, é normal que faça sempre 1 2 3. Qual é, então, o limite do segundo ciclo?


Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

ja consegui

def p(n):
for i in range(n,0,-1):
 for j in range(1,i+1):
	 print(j, end=' ')
 print()

obrigado aqueles que responderam para ajudar ;)

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.