Problemas no laço IF [RESOLVIDO]

1. Problemas no laço IF [RESOLVIDO]

Wesley Soares Pires
engwsp

(usa Outra)

Enviado em 10/09/2016 - 19:32h

Amigos, compilei um código MDC, e funcionou perfeitamente, entretanto toda vez que retiro a tralha # do laço IF, dá o seguinte erro:

Tenho nenhuma experiencia com python,
A minha pergunta é, onde estou errando?

File "./tf.py", line 28
print("São primos entre si %d,%d" %(n,m))
^
IndentationError: expected an indented block



#!/usr/bin/python
# -*- coding: utf-8 -*-

def mdc(n,m):

print ( " Programa que lê um dois inteiro positivos n e m e imprime o máximo divisor comum (mdc) de n e m.")

anterior = n
atual = m
resto = anterior % atual

while (resto != 0):

anterior = atual
atual = resto
resto = anterior % atual
#end while
return atual

def main():

# leia o valor de n
n = int(input("Digite o valor de n (n > 0): "))
# leia o valor de m
m = int(input("Digite o valor de m (m > 0): "))
num = mdc(n,m)
#AO RETIRAR A TRALHA, DÁ PAU
#if (num == 1):
print("São primos entre si %d,%d" %(n,m))

main()






  


2. Re: Problemas no laço IF

felipe silva
lipman

(usa Debian)

Enviado em 10/09/2016 - 21:39h

amigo, eu não entendo de python, mas parece que deu um erro de identação:
IndentationError: expected an indented block
abraços!
edit:
vc definiu a variavel num???


3. Re: Problemas no laço IF [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/09/2016 - 22:59h

É que o programa dele perdeu a indentação ao colar o código no fórum.
Tá chatinho de ler ...

Precisaria colocar em:

    if a<b:
analise_isto()
else
analise_aquilo()


Aperte o botão verde QUOTE e veja como foi feito.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



4. Re: Problemas no laço IF

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 11/09/2016 - 00:30h

Python me chamou a atenção justamente por ter esta sintaxe bonita sem o uso de '{}' para isolar blocos de comando, como tudo tem seu preço a falta de '{}' torna a linguagem escrava da indentação para dividir os blocos de comando.

indentação > https://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o


5. Re: Problemas no laço IF [RESOLVIDO]

Mauricio Fraga
mrfrags

(usa Ubuntu)

Enviado em 11/09/2016 - 05:26h

Provavelmente você não está identando corretamente depois do if


6. Re: Problemas no laço IF

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 11/09/2016 - 08:08h

Olá. Coloquei a tag code no seu código para ficar melhor de ver aqui.
Quanto ao problema, faltou identar.
Sabe como você fez la na função mdc, recuando o bloco?
O if também é um bloco então o que vem depois dos dois pontos do if tem que estar recuado.
Faça como fez na função mdc e recue o print, não sei se você está usando 4 espaços como recomenda a PEP-8 ou está usando tab, mas mantenha o padrão e faça o mesmo no if.
Fica assim:

#!/usr/bin/python
# -*- coding: utf-8 -*-

def mdc(n,m):
print ( " Programa que lê um dois inteiro positivos n e m e imprime o máximo divisor comum (mdc) de n e m.")
anterior = n
atual = m
resto = anterior % atual

while (resto != 0):
anterior = atual
atual = resto
resto = anterior % atual
#end while
return atual


def main():
# leia o valor de n
n = int(input("Digite o valor de n (n > 0): "))
# leia o valor de m
m = int(input("Digite o valor de m (m > 0): "))
num = mdc(n,m)
if (num == 1):
print("São primos entre si %d,%d" %(n,m))


main()


Abraço.


7. Re: Problemas no laço IF [RESOLVIDO]

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 11/09/2016 - 08:17h

lipman escreveu:

amigo, eu não entendo de python, mas parece que deu um erro de identação:
IndentationError: expected an indented block
abraços!
edit:
vc definiu a variavel num???


Python não precisa que a variável seja declarada . ;-D


8. Re: Problemas no laço IF [RESOLVIDO]

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 11/09/2016 - 08:18h

Lisandro escreveu:

lipman escreveu:

amigo, eu não entendo de python, mas parece que deu um erro de identação:
IndentationError: expected an indented block
abraços!
edit:
vc definiu a variavel num???


Python não precisa que a variável seja declarada antes de usar. O problema é só identação mesmo. ;-D





9. Problemas no laço IF

Wesley Soares Pires
engwsp

(usa Outra)

Enviado em 12/09/2016 - 20:28h

Valeu, obrigado.

Consegui resolver.

substitui dev main():

por if __name__ == '__main__':



Topico encerrado


10. Re: Problemas no laço IF [RESOLVIDO]

Willian Moura
RWX

(usa Kali)

Enviado em 12/09/2016 - 20:29h

maninho, foi so dar um espaço antes do print, pra ele ficar dentro do bloco if, tipo assim: (sou novo aqui, entao nao sei colocar tudo bonitinho ainda)


#!/usr/bin/python
# -*- coding: utf-8 -*-

def mdc(n,m):

print ( " Programa que lê um dois inteiro positivos n e m e imprime o máximo divisor comum (mdc) de n e m.")

anterior = n
atual = m
resto = anterior % atual

while (resto != 0):

anterior = atual
atual = resto
resto = anterior % atual
#end while
return atual

def main():

# leia o valor de n
n = int(input("Digite o valor de n (n > 0): "))
# leia o valor de m
m = int(input("Digite o valor de m (m > 0): "))
num = mdc(n,m)
#AO RETIRAR A TRALHA, DÁ PAU
if (num == 1):
print("São primos entre si %d,%d" %(n,m))

main()



11. Re: Problemas no laço IF [RESOLVIDO]

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 12/09/2016 - 21:07h

engwsp escreveu:

Valeu, obrigado.

Consegui resolver.

substitui dev main():

por if __name__ == '__main__':



Topico encerrado


Parabéns! Usar o dunder é mais pythônico que chamar simplesmente a função, embora os dois funcionem.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts