Topic: Operazioni condizionali : IF  (Letto 144 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline domchiar

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Operazioni condizionali : IF
« il: Ottobre 20, 2020, 12:50 »
Per piacere, visionate queste righe di codice poiché non capisco in che consiste l'errore.
Alla compilazione mi viene segnalato un errore di sintassi sul "print" e non riesco a capire a che si riferisce. Non guardate l'assenza dei due punti alla fine della riga con IF poiché non viene segnalato errore.
Grazie a tutti.

def profiliacciaio():
    profilo=int(input("Inserisci il tipo di profilo IPE in mm =  ")
          if profilo==80
              print(profilo)
         

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 317
  • Punti reputazione: 0
    • Mostra profilo
Re:Operazioni condizionali : IF
« Risposta #1 il: Ottobre 20, 2020, 13:07 »
beh ... saresti più chiaro se comprendessi il codice nei campi ottenuti con il pulsante "pythoncode"
def profiliacciaio():
    profilo=int(input("Inserisci il tipo di profilo IPE in mm =  ")
          if profilo==80
              print(profilo)
una prima cosa che si nota subito sono i livelli di indentazione, oltre che la mancanza di una parentesi allo "input" e dei due punti nello "if", prova così :
>>> def profiliacciaio():
profilo = int(input('Inserisci il tipo di profilo IPE in mm = '))
if profilo == 80:
print(profilo)


>>> profiliacciaio()
Inserisci il tipo di profilo IPE in mm = 75
>>> profiliacciaio()
Inserisci il tipo di profilo IPE in mm = 80
80
>>>


[Edit] dimenticavo, non Ti da errore nella mancanza dei due punti allo if per la precedente mancanza della parentesi allo "int(input())", credo che il parser si attenda la fine dell'istruzione per la chiamata ad int e quindi "tarda" ad interpretare l'istruzione errata.
« Ultima modifica: Ottobre 20, 2020, 13:14 da nuzzopippo »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.138
  • Punti reputazione: 9
    • Mostra profilo
Re:Operazioni condizionali : IF
« Risposta #2 il: Ottobre 20, 2020, 16:10 »
Per chiarezza: un sintax error viene segnalato alla posizione SUCCESSIVA del parser, rispetto a dove succede.

>>> foo bar baz
  File "<stdin>", line 1
    foo bar baz
          ^
SyntaxError: invalid syntax
>>>

Qui l'errore è segnato su "baz", ma ovviamente è già capitato sul token "foo".

>>> def foo():
...     print(10
...     print(12)
  File "<stdin>", line 3
    print(12)
        ^
SyntaxError: invalid syntax

Qui l'errore è segnalato al secondo "print", ma ovviamente succede nella riga precedente (manca la parentesi).

Una lettura accurata di un buon manuale è sempre un'opzione da non trascurare, se l'obbiettivo è quello di imparare Python.
Tra l'altro, anche il tutorial della documentazione ufficiale dice queste cose, se ben ricordo. Ne esiste anche una traduzione italiana aggiornata, qui https://pytutorial-it.readthedocs.io

Offline domchiar

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Re:Operazioni condizionali : IF
« Risposta #3 il: Ottobre 20, 2020, 18:41 »
Ho risolto io stesso il problema. Applicavo l'indentazione con scelta personale. Ho cominciato a scrivere il programma da capo facendo fare alla macchina l'indentazione. Ho corretto soltanto la posizione di "else" perché in automatico viene indentata ulteriormente rispetto a "if" e quindi l'ho riportata in allineamento verticale con quest'ultimo comando.