2017-12-25 12 views
0

Ich habe dieses Stück Code:Python Typeerror: 'str' Objekt kann nicht als Integer interpretiert werden

  if current_ins[0] == "REPEAT": 
       for i in range(current_ins[1]): 
        if last_ins != "": 
         instructions.append(last_ins) 
         if delay != -1: 
          instructions.append(["DELAY", delay]) 
        else: 
         print ("ERROR: REPEAT can't be the first instruction") 
         sys.exit(-1) 

und leider bekomme ich diesen Fehler:

Duck Encoder 0.1.1 by Roger Serentill & GoldraK 
Traceback (most recent call last): 
    File "D:\devloc\Encoders-decoders\USB-Rubber-Ducky-master\Encoder\Encoder.py", line 379, in <module> 
    p.compile(sys.argv) 
    File "D:\devloc\Encoders-decoders\USB-Rubber-Ducky-master\Encoder\Encoder.py", line 56, in compile 
    instructions = self.__read_file() 
    File "D:\devloc\Encoders-decoders\USB-Rubber-Ducky-master\Encoder\Encoder.py", line 263, in __read_file 
    for i in range(current_ins[1]): 
TypeError: 'str' object cannot be interpreted as an integer 

Was kann ich tun?

BTW, ich benutze Python3.

+1

Was bedeutet 'current_ins [1]' enthalten? Möglicherweise könnte es ein String sein, der eine Zahl enthält und konvertiert werden muss: 'range (int (current_ins [1]))' – Elisha

+0

Danke! Bereich (int (current_ins [1])) funktioniert perfekt! – devlime26

Antwort

0

Versuchen Sie range(len(current_ins[1])): oder range(int(current_ins[1])):. Es hängt davon ab, was sich in current_ins [1] befindet.

+0

Vielen Dank! Bereich (int (current_ins [1])): funktioniert perfekt! – devlime26

0

Ich nehme an, Sie versuchen, so etwas zu analysieren: -

Inst1 
Inst2 
REPEAT 5 

Jetzt versuchen Sie vorherige Anweisungen zu wiederholen, was auch immer die „Nummer“ Sie wiederholen angegeben haben.

Sie können sicher, dass es nur zu int, z. int(currenct_inst[1]), aber das ist wirklich ambig. Nach dem zen of python ich rate Ihnen, expliziter zu sein, vielleicht

if current_instruction[0] = repeat: 
    # strip here removes the leading and trailing whitespace 
    times_repeat = int(current_instrucitons[1].strip()) 

Wenn Sie eine instruciton wie REPEAT (::) zu handhaben möchten, dann sollten Sie einen Blick auf Ausnahme hadnling nehmen.

Wenn Sie interessiert sind, werfen Sie einen Blick auf: -
https://www.programiz.com/python-programming/exception-handling

Verwandte Themen