jeffersonfrancisco

Programação Python " : " dando invalid syntax

Recommended Posts

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.

 

Edited by jeffersonfrancisco

Share this post


Link to post
Share on other sites

Poste o código da maneira que está escrito, para termos uma ideia melhor de qual é o problema. O ":" normalmente só é usado no final de um if, for, while e nas declarações de classes (class) e funções/métodos (def).

Abraços!

Share this post


Link to post
Share on other sites

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!'

 

Share this post


Link to post
Share on other sites
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 ?

Share this post


Link to post
Share on other sites

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? ;)

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

Bom dia!!!

Muito obrigado pela ajuda...mas agora esta dando esse erro:

SyntaxError: multiple statements found while compiling a single statement

Será se é meu IDLE?

Preciso importar algum modulo antes?

Edited by jeffersonfrancisco
agregar conteudo

Share this post


Link to post
Share on other sites

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!')

 

Edited by isrnick

Share this post


Link to post
Share on other sites

A mensagem de erro já diz o que é, ou seja, significa que você colocou algum espaço em branco no começo da primeira linha quando você copiou e colou, e não deveria.

Share this post


Link to post
Share on other sites
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.

 

Edited by isrnick

Share this post


Link to post
Share on other sites
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 

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.