Ir para conteúdo
Fórum Script Brasil
  • 0

Programação Python " : " dando invalid syntax


jeffersonfrancisco

Pergunta

Boa tarde...

   Estou iniciando com a linguagem Python e de cara já peguei vários problemas, um é o " : " na extensão do " print algo < o : " ocorre Syntaxerror: Invalid syntax.

Não tem jeito, se alguém souber preciso de ajuda para continuar aprendendo.

 

Editado por jeffersonfrancisco
Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0
2 horas atrás, jeffersonfrancisco disse:

segue:

 

temp = raw_input('Entre com a temperatura:')

 if temp < 0:
    print 'Congelando...'
  elif 0 <= temp <= 20:
    print 'Frio'
  elif 21 <= temp <= 25:
    print 'Normal'
  elif 26 <= temp <= 35:
    print 'Quente'
  else:
    print 'Muito quente!'

 

Que erro tá dando ?

Link para o comentário
Compartilhar em outros sites

  • 0

Agora sim dá pra ver qual é o problema. Não se pode fazer o tipo de comparação que você está tentando no elif:

elif 0 <= temp <= 20:

O correto é:

elif (temp > 0) & (temp <= 20):

Toda operação desse tipo precisa de 2 elementos e um operador, então no caso fazemos as duas comparações e depois realizamos uma operação AND (E) entre eles, ou seja, podemos ler como está escrito: "SE (temp for maior que 0) E (temp for menor que 20)". O programa completo seria:

temp = int(raw_input('Entre com a temperatura:'))

 if temp <= 0:
    print 'Congelando...'
  elif (temp > 0) & (temp <= 20):
    print 'Frio'
  elif (temp >= 21) & (temp <= 25):
    print 'Normal'
  elif (temp >= 26) & (temp <= 35):
    print 'Quente'
  else:
    print 'Muito quente!'

Outro detalhe é que raw_input() retorna uma string, então você não teria como comparar com inteiros, por isso a função int() para transformar o que for lido em um inteiro.

Certo? ;)

Link para o comentário
Compartilhar em outros sites

  • 0
6 minutos atrás, Graymalkin disse:

Agora sim dá pra ver qual é o problema. Não se pode fazer o tipo de comparação que você está tentando no elif:


elif 0 <= temp <= 20:

O correto é:


elif (temp > 0) & (temp <= 20):

Toda operação desse tipo precisa de 2 elementos e um operador, então no caso fazemos as duas comparações e depois realizamos uma operação AND (E) entre eles, ou seja, podemos ler como está escrito: "SE (temp for maior que 0) E (temp for menor que 20)". O programa completo seria:


temp = int(raw_input('Entre com a temperatura:'))

 if temp <= 0:
    print 'Congelando...'
  elif (temp > 0) & (temp <= 20):
    print 'Frio'
  elif (temp >= 21) & (temp <= 25):
    print 'Normal'
  elif (temp >= 26) & (temp <= 35):
    print 'Quente'
  else:
    print 'Muito quente!'

Outro detalhe é que raw_input() retorna uma string, então você não teria como comparar com inteiros, por isso a função int() para transformar o que for lido em um inteiro.

Certo? ;)

Obrigado! Me refrescou a memória aki haha

Link para o comentário
Compartilhar em outros sites

  • 0

Seus erros provavelmente estão acontecendo por causa de má indentação do código. Ou seja, o número de espaços em branco no começo de cada linha tem ser consistentes e indicar corretamente a que agrupamento os comandos pertencem.

 

Em Python essa sintaxe é válida sim:

elif 0 <= temp <= 20:

E funciona exatamente como esperado, ou seja a condição será satisfeita se o valor de temp for maior ou igual a 0 e menor ou igual a 20. (Obs: Em várias outras linguagens de programação essa sintaxe não funciona.)

 

E o operador 'E/AND lógico' em Python é o operador and, enquanto o operador & é um operador 'E/AND binário'. Logo, o modo alternativo de escrever a mesma comparação acima em Python corretamente seria assim:

elif (temp >= 0) and (temp <= 20):

Mas ambos farão a mesma coisa em Python.

 

 

Fora a indentação errada a única coisa que está faltando no seu código original é converter o valor obtido pelo raw_input() para um número inteiro, visto que essa função retorna uma string não um número. Pra isso basta usar a função int(), e o código fica assim (em Python 2):

temp = int( raw_input('Entre com a temperatura:') )

if temp < 0:
    print 'Congelando...'
elif 0 <= temp <= 20:
    print 'Frio'
elif 21 <= temp <= 25:
    print 'Normal'
elif 26 <= temp <= 35:
    print 'Quente'
else:
    print 'Muito quente!'

 

 

E em Python 3 ficaria assim:

temp = int( input('Entre com a temperatura:') )

if temp < 0:
    print('Congelando...')
elif 0 <= temp <= 20:
    print('Frio')
elif 21 <= temp <= 25:
    print('Normal')
elif 26 <= temp <= 35:
    print('Quente')
else:
    print('Muito quente!')

 

Editado por isrnick
Link para o comentário
Compartilhar em outros sites

  • 0
3 horas atrás, jeffersonfrancisco disse:

Certoooo!!

 Resolvido... não sabia que os espaços na frente do if,elif e else poderia ocorrer esse erro, pois no IDLE Python 3 não é relevante...Grato.

Em outras linguagens é usado abre e fecha chaves { }, ou algo do tipo "comando e fim_do_comando", para indicar onde começa e termina um bloco de comandos.

 

Mas em Python a indentação é que indica quais comandos pertencem a um mesmo bloco.

<comando 1>
if <condicao>:
    <comando 1 dentro do bloco de comandos do if>
    <comando 2 dentro do bloco de comandos do if>
<comando 2>
<comando 3>

 

Ex:

a = 7
print "fora do if"
if a < 10:
    print "dentro do if"
    a = 15
    print "ainda dentro do if"
print "fora do if novamente"

 

Logo, é muito importante sempre usar a indentação corretamente, de forma consistente.

E isso é muito bom pra quem está aprendendo a programar, pois aprende dês de cedo a deixar o código bem organizado, já que em Python indentar corretamente é obrigatório.

 

Editado por isrnick
Link para o comentário
Compartilhar em outros sites

  • 0
with open('input.txt','r')as arq:
   texto = arq.readline ()

import math

with open ('output.txt', 'w')as arqout:
    for linha in texto:
     lista= linha.split()
     x = float (lista [0])
     y = float (lista[1])
     logx = math.log10 (x)
     logy = math.log10 (y)
arqout.with('{:.4f}{:.4f}' .format (logx, logy))

 

Cara o prog ta apontando algum erro na linha 13 não consigo achar, alguém da um help ??}

Agora, emiiiiii disse:

with open('input.txt','r')as arq:
   texto = arq.readline ()

import math

with open ('output.txt', 'w')as arqout:
    for linha in texto:
     lista= linha.split()
     x = float (lista [0])
     y = float (lista[1])
     logx = math.log10 (x)
     logy = math.log10 (y)
arqout.with('{:.4f}{:.4f}' .format (logx, logy))

 

Cara o prog ta apontando algum erro na linha 13 não consigo achar, alguém da um help ?? no caso a ultima linha 

 

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...