In questo caso si ha un modo per evitare try
/except
, anche se io non lo consiglio (supponendo che lo stringa di input è chiamato s
, e tu sei in una funzione che deve restituire qualcosa):
xs = s.strip()
if xs[0:1] in '+-': xs = xs[1:]
if xs.isdigit(): return int(s)
else: ...
la parte ...
nel else
è dove si ritorna tutto ciò che vuoi se, per esempio, era s
'iamnotanumber'
, '23skidoo'
, vuoto, tutti-gli spazi, o simili.
A meno che un sacco di vostri stringhe di input sono i non-numeri, provare/eccezione è meglio:
try: return int(s)
except ValueError: ...
si vede il guadagno in concisione, e ad evitare la manipolazione di stringhe poco pratici e di prova -)
Vedo molte risposte int(s.strip())
, ma questa è una supererogazione: lo spogliamento non è necessario!
>>> int(' 23 ')
23
int
sa abbastanza per ignorare spazi iniziali e finali da sola!-)
fonte
2010-03-24 15:27:00
"Non voglio mai che il metodo fallisca, ma non voglio andare così lontano come provare, tranne, passare solo per nascondere gli errori" Questo certamente sembra contraddittorio. "Never Fail" significa "Eccezioni di cattura". Cosa intendi per "Never Fail" e "NOT Catch Exceptions"? Cos'è questa cosa senza eccezioni, senza eccezioni che ti aspetti? Puoi chiarire le tue aspettative? –