In diesem Fall müssen Sie tun, um eine Art und Weise try
/except
zu vermeiden, obwohl ich es nicht empfehlen würde (vorausgesetzt, Ihr Eingabestring s
benannt ist, und Sie in einer Funktion sind, die etwas zurückgeben müssen):
xs = s.strip()
if xs[0:1] in '+-': xs = xs[1:]
if xs.isdigit(): return int(s)
else: ...
der ...
an der else
ist, wo Sie zurückkommen, was auch immer es ist, Sie wollen, wenn, sagen wir, s
'iamnotanumber'
war, '23skidoo'
, leer, alle Räume oder dergleichen.
Es sei denn viele Ihrer Eingabezeichenfolgen sind nicht-Zahlen, try/except besser ist:
try: return int(s)
except ValueError: ...
Sie die Verstärkung in Prägnanz zu sehen, und die knifflig String-Manipulation und Test bei der Vermeidung -)
Ich sehe viele Antworten tun int(s.strip())
, aber das ist überflüssig: das Strippen wird nicht benötigt!
>>> int(' 23 ')
23
int
weiß genug, um zu ignorieren führende und Leerzeichen wie von selbst nachlauf!-)
"Ich möchte nie, dass die Methode fehlschlägt, aber ich möchte nicht so weit gehen wie versuchen, außer, pass nur um Fehler zu verstecken" Das scheint sicherlich widersprüchlich. "Niemals scheitern" bedeutet "Catch Exceptions". Was meinst du mit "Niemals fehlschlagen" und "KEINE Catch-Ausnahmen"? Was ist dieses No-Failure, No-Exception-Ding, das Sie erwarten? Können Sie Ihre Erwartungen klären? –