2016-12-03 12 views
1

Ich schreibe ein einfaches Zahlen Ratespiel und ich kann meinen Code nicht in SublimeREPL oder meiner Konsole ausführen. Der einzige Weg, wie ich es in Team Treehouse Workspaces Programm ausführen kann, und es funktioniert genau so, wie es soll. Aber sowohl in meiner Konsole als auch in SublimeREPL heißt es, dass es mehrere Einrückungsfehler gibt. Was gibt?? Ich weiß, Python ist nervig über seine Einrückung, so dass ich meine sublime Einstellungen so geändert habe, dass jede Registerkarte vier Leerzeichen ist, aber es immer noch nicht ausgeführt wird - wirft etwa zehn Einrückungsfehler, aber soweit ich sagen kann, ist alles genau eingerückt sollte sein. Ich habe mehrere Suchen ohne Ergebnisse ausprobiert, und ich bin am Ende meines Wissens nicht in der Lage, ein so einfaches Programm zum Laufen zu bekommen! Ich meine, warum würde Code in einer Umgebung arbeiten, aber nicht in einer anderen? Ich kopieren und den Code einfügen, damit es nicht anders ...Warum läuft mein Code auf einem Programm, aber nicht auf dem anderen?

Hier ist der Code:

import random 

#safely make an int 
#limit guesses 
#too high, too low, messages 
#play again 

def game(): 
    #generate number 
    secret_number = random.randint(1, 10) 
    guesses = [] 

    while len(guesses) < 5: 
     try: 
      #get num guess from user 
      guess = int(input("Guess a number between 1 and 10: ")) 
     except ValueError: 
      print("That's not a valid number, try again.") 

     else: 
      #compare guess to secret number 
      if guess == secret_number: 
       #print hit/miss 
       print("You got it! My number was {}".format(secret_number)) 
       break 
      else: 
       print("That's not it! Guess again!") 
      guesses.append(guess) 

game() 

Hinweis: dieser Code perfekt auf Team Treehouse arbeitet. Hier ist der Fehler, den ich in SublimeREPL und mein Terminal erhalten:

Guess a number between one and ten: Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
    File "<string>", line 1 
    if guess == secret_num: 
    ^
SyntaxError: invalid syntax 
>>> File "<stdin>", line 1 
    print("You got it!") 
    ^
IndentationError: unexpected indent 
>>> File "<stdin>", line 1 
    break 
    ^
IndentationError: unexpected indent 
>>> File "<stdin>", line 1 
    else: 
    ^
IndentationError: unexpected indent 
>>> File "<stdin>", line 1 
    print("That's not it!") 
    ^
IndentationError: unexpected indent 
>>> >>> 

würde ich ernsthaft Werkzeuge bevorzugen andere als Workspaces zu verwenden, so kann ich meine eigenen Code auf meinem Rechner, aber ich weiß nicht, ob dieser Code wird sogar tatsächlich arbeiten, oder wenn ich nur verschwende meine Zeit lernen Müll ...

+2

Das bedeutet wahrscheinlich, dass Sie Leerzeichen und Tabs zum Einrücken mischen, was Sie nicht tun sollten. Einige IDEs handhaben das gut, andere nicht. – Carcigenicate

+0

Ich weiß, dass pycharm automatisch viel davon für Sie reparieren kann. Ich denke, viele andere Redakteure werden das auch tun. – bravosierra99

+0

Überprüfen Sie in der IDE, in der es funktioniert, ob es eine Option zum Konvertieren aller Einrückungen in Leerzeichen oder Registerkarten gibt. Stellen Sie dann sicher, dass Sie konsistent sind in was Sie einrücken. – Carcigenicate

Antwort

0

Öffnen Sie Ihren Code in erhaben, klicken Sie auf Spaces:4/Tab Size: 4 in der unteren rechten Ecke. Klicken Sie im Drop-down auf Indent using spaces. Es sollte Ihr Problem mit gemischten Tabs und Leerzeichen beheben.

+0

Ich habe das getan und löschte alle Einrückung und wieder eingegeben, wie Registerkarten, und dann gelöscht und und sie als Leerzeichen auch eingegeben und keiner funktionierte .. –

0

Gemäß PEP-8, dem Python Style Guide, sollte die Einrückung aus 4 Leerzeichen bestehen. Registerkarten sollten nicht verwendet werden, es sei denn, Sie arbeiten an einem großen älteren Python 2-Projekt, das bereits Registerkarten verwendet.

Um die Vertiefung zu allen Räumen zu ändern, wählen View → Indentation und sicher Indent Using Spaces und Tab Width: 4 ausgewahlt machen. Wählen Sie dann View → Indentation → Convert Indentation to Spaces, um alle vorhandenen Registerkarten in Leerzeichen zu ändern. Überprüfen Sie Ihre gesamte Datei, um sicherzustellen, dass der Einzug korrekt ist, und speichern und führen Sie sie dann aus.

+0

Just tat, dass und genau den gleichen Fehler. Die lustige Sache ist, wenn ich diesen Code in Arbeitsbereichen verwende (eine Teilidee von Team Treehouse), läuft er perfekt und funktioniert wie erwartet. Aber ich möchte keine Software schreiben, die in Arbeitsbereichen verwendet wird. Ich will, dass es in anderen Programmen und anderen Maschinen funktioniert, sonst ist das, was ich lerne, nutzlos ..... –

+0

@LouieWilliford editieren Sie bitte Ihre Frage, um den ** Volltext ** von irgendwelchen Fehlern oder Rückverfolgungen, die Sie erhalten, also wir kann genau sehen, was schief läuft. – MattDMo

+0

Für Sie bearbeitet!Vielen Dank für Ihre Hilfe, das hat mich ernsthaft für zwei Tage festhalten lassen !! –

Verwandte Themen