2016-07-16 13 views
0

Im folgenden Code löst int(x) eine Ausnahme aus. Ich verstehe, dass x sollte eine Zeichenfolge aber -numerische oder nicht-numerische Zeichenfolge sein?Ist x in int (x) numerischer/nicht numerischer String?

def temp_convert(var): 
    try: 
     return int(var) 
    except ValueError, Argument: 
     print "The argument does not contain numbers\n", Argument 

# Call above function here. 
temp_convert("xyz") 
+0

Bitte beachten Sie Er überarbeitet das Codebeispiel, das Sie in dieser Frage gepostet haben. Wie es derzeit aussieht, machen es uns die Formatierung und der Umfang schwer, Ihnen zu helfen. Hier ist eine großartige Quelle, um dich damit anzufangen. -1, nimm es nicht falsch. Eine Down-Abstimmung zeigt, wie wir hier auf ein inhaltliches Problem hinweisen. Verbessere deine Formatierung und das Codebeispiel und ich werde es gerne rückgängig machen. Viel Glück mit deinem Code! Persönlich denke ich, es wäre gut, auf einer Liste von fraglichen Dingen zu arbeiten, die schlecht geschrieben sind. –

+0

@Darrel Lee: sieht aus wie Python –

+0

@Butters: Denken Sie auch an die Formatierung von 'int (x)', und formatieren Sie nachfolgende Verweise auf 'x' entsprechend? –

Antwort

1

Die Zeichenfolge, die Sie als Funktionsargument angeben, muss als Integer dargestellt werden können. Was würdest du für die numerische Darstellung von "xyz" halten?

Wenn Sie die Funktionszeichenfolgenrepräsentation von Zahlen übergeben, positive oder negative, dann werden Sie die Ausnahme nicht auslösen.

Wenn Zahlen codiert werden als Zeichenketten gibt es keine Probleme,

>>> int("10") 
10 
>>> int("-10") 
-10 

Wenn Symbole, die nicht ohne weiteres durch eine Zahl dargestellt werden, wird auf die Funktion geliefert die Ausnahme ausgelöst wird,

>>> int("-10a") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '-10a' 

int(x) akzeptiert auch Gleitkommazahlen nicht:

>>> int("10.0") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '10.0' 
Verwandte Themen