2017-06-09 5 views
0

Ich bin neu in Python.Ich mache Addition von zwei Zahlen in cmd mit Eingabeparameter .Ich bekomme Ausgabe auf cmd, aber Fehler auf Python-Shell. Ich benutze Windows 7 und Python-Shell 3.3.2. so kann mir jeder sagen, warum mein Code nicht auf Python Shell läuft?Python Shell zeigt Fehler, aber Cmd läuft das Programm

Code:

import sys 
n=int(sys.argv[1]) 
m=int(sys.argv[2]) 
print(n+m) 

Fehler:

Traceback (most recent call last):

File "C:/pythonprogram/add.py", line 4, in

n=int(sys.argv[1]) 

IndexError: list index out of range

+0

Sie sind Ihr Programm mit der richtigen Menge von Argumenten ausgeführt wird? Bitte zeigen Sie, wie Sie das Skript in der Shell – kuro

+0

ausführen, wenn ich den obigen Code ausführen zeigt seinen Fehler. Nehmen Python Shell Parameter wie cmd? –

Antwort

0

sys.argv enthält die Parameter Befehlszeile. Wenn Sie Ihr Skript in der Python-Shell ausführen, senden Sie höchstwahrscheinlich keine Parameter. Ich würde vorschlagen, einen Scheck verlängern, wenn die Befehlszeilenargumente vorhanden wie diese sind:

import sys 

if len(sys.argv) > 2: 
    n=int(sys.argv[1]) 
    m=int(sys.argv[2]) 
    print(n+m) 

prüfen this mehr über Python, um herauszufinden, und sys.argv

+0

nein es funktioniert nicht –

+0

** Was genau ** ist das Problem? – moritzg

+0

'sys.argv' enthält immer mindestens ein Element. Sie müssen in diesem Fall mindestens 3 Punkte prüfen. – Euphe

0

Ihr Programm erwartet zwei Befehlszeilenargumente. sys.argv ist eine Liste von Befehlszeilenargumenten. Der Fehler IndexError: list index out of range sagt Ihnen, dass Sie versucht haben, Listenelement Nummer 2 (mit Index 1) zu erhalten, aber die Liste hat nicht so viele Werte.

Sie können diesen Fehler in der Schale reproduzieren:

>> alist = ['Item 0'] 
>> print(alist[1]) 

Da alist hat nur Artikel mit dem Index 0 Produkte mit höheren Indizes beantragt wird, dass Fehler verursachen.

Nun zu Ihrem genauen Problem. Das Programm teilt Ihnen die erwarteten Befehlszeilenargumente mit, aber sie wurden nicht bereitgestellt. Biete sie an! Führen Sie diesen Befehl ein:

python add.py 1 2 

Dies wird das Skript ausführen und 1 als erstes Argument übergeben, 2 als zweites Argument. In Ihrem Fall das allgemeine Format ist

python add.py [n] [m] 

Nun diesem Punkt an werden Sie vielleicht fragen (Sie sollten sein), was sys.argv[0] ist dann jeder, warum Ihre n Nummer nicht zu sys.argv[1] zugewiesen bekommen. sys.argv[0] ist der Name des laufenden Skripts.

Literaturhinweise auf Befehlszeilenargumente:

http://www.pythonforbeginners.com/system/python-sys-argv

Zusatz. könnten Sie Ihr Skript ändern kräftigeren zu sein:

import sys 
if len(sys.argv) < 3: #script name + 2 other arguments required 
print("Provide at least two numbers") 
else: 
n=int(sys.argv[1]) 
m=int(sys.argv[2]) 
print(n+m) 
Verwandte Themen