Python: perché il mio if non funziona? Aiuto!

👤 Iniziato da @erminiaorlando57
📅 30/06/2025 04:20
📁 Programmazione 🌐 IT
Avatar di erminiaorlando57
Ragazzi, ho un problema stupido ma non riesco a capire dove sbaglio. Ho questo pezzo di codice Python che dovrebbe stampare 'Accesso consentito' se l'età è maggiore di 18, ma non funziona! Ve lo mostro:

```python
eta = input('Quanti anni hai? ')
if eta > 18:
print('Accesso consentito')
else:
print('Accesso negato')
```

Il problema è che mi dà sempre 'Accesso negato' anche quando inserisco numeri alti come 25. Ho provato a cambiare il 18 con '18' ma niente. Dove sto sbagliando? È così ovvio che non lo vedo? Qualcuno mi illumini please!

PS: Sono alle prime armi con Python, abbiate pietà :)
Avatar di deltabruno93
Ciao @erminiaorlando57, il problema è che `input()` restituisce sempre una stringa, quindi stai confrontando una stringa con un numero intero. Per risolvere, devi convertire l'input in un numero intero usando `int()`. Ecco il tuo codice corretto:

```python
eta = int(input('Quanti anni hai? '))
if eta > 18:
print('Accesso consentito')
else:
print('Accesso negato')
```

Ora dovrebbe funzionare correttamente. Buona fortuna con il tuo apprendimento di Python! Se hai altre domande, non esitare a chiedere.
Avatar di manuelanegri
Ah, ma che classico! @deltabruno93 ha già centrato il problema, ma lo spiego con parole mie perché so bene quanto sia frustrante quando il codice non fa quello che ti aspetti.

Il punto è che `input()` ti restituisce sempre una stringa, anche se tu digiti un numero. Quindi quando scrivi `eta > 18`, stai confrontando una stringa con un numero, e Python non sa che farsene di quel confronto. È come chiedere a un gatto di fare i conti: non capisce e ti guarda strano.

La soluzione è semplice: devi trasformare quella stringa in un numero con `int()`, come ha detto @deltabruno93. Ma attenta! Se l’utente digita qualcosa che non è un numero (tipo "venti"), il programma va in errore. Se vuoi essere più robusta, potresti aggiungere un controllo con `try-except`, ma per ora vai con la versione semplice e vedrai che funziona.

E non ti scoraggiare, questi errori li facciamo tutti all’inizio! Io la prima volta ho passato un’ora a cercare un bug che era solo un `=` invece di `==`. Python è così: ti fa impazzire per un dettaglio, ma poi ti fa sentire una dea quando finalmente funziona. 😉
Avatar di luxgatti
Eh già, classico errore da principiante! @deltabruno93 e @manuelanegri hanno già spiegato bene, ma ci tengo a sottolineare una cosa: questo è uno di quei bug che ti fanno bestemmiare per ore prima di accorgerti dell’ovvio.

Se vuoi evitare che il programma crashi se qualcuno scrive "venti" invece di 20, potresti aggiungere un `try-except` così:

```python
try:
eta = int(input('Quanti anni hai? '))
if eta > 18:
print('Accesso consentito')
else:
print('Accesso negato')
except ValueError:
print("Scusa, ma devi inserire un numero, non lettere!")
```

Python può essere stronzo con questi dettagli, ma una volta che ci prendi la mano diventa un gioco. Continua così, e se ti serve altro, chiedi pure. (E sì, pure io ho perso mezz’oggi una volta per un indentazione sbagliata, quindi non sentirti sola!)
Avatar di erminiaorlando57
Ahahah, grazie mille @luxgatti! Il try-except è proprio quella ciliegina sulla torta che mi mancava! Adesso il codice funziona alla grande e non mi manda più in tilt se scrivo "venti" invece di 20. Che sollievo! E poi sapere che anche voi avete perso tempo per cose simili mi fa sentire meno sola in questa giungla di Python 😂 Avete risolto tutti il mio dubbio, grazie mille!

La Tua Risposta

💬

Vuoi partecipare alla discussione?

Accedi o registrati per scrivere la tua risposta e unirti alla conversazione!