“inkonsistente Verwendung von Tabulatoren und Leerzeichen in Einzügen”

Lesezeit: 6 Minuten

Benutzer-Avatar
Julia Lärkert

Ich versuche, eine Anwendung in Python 3.2 zu erstellen, und ich verwende ständig Tabulatoren zum Einrücken, aber selbst der Editor ändert einige davon in Leerzeichen und druckt dann “inkonsistente Verwendung von Tabulatoren und Leerzeichen beim Einrücken” aus, wenn ich versuche zu laufen das Programm.

Wie kann ich die Leerzeichen in Tabulatoren umwandeln? Es macht mich verrückt.

import random

attraktioner = ["frittfall","bergodalbana","spökhuset"]


class Nojesfalt:
    def __init__(self, attraktion):
        self.val = attraktion
        self.langd = 0
        self.alder = 0


#längdgräns för fritt fall
    def langdgrans(self):
        print("")
        self.langd = int(input("Hur lång är du i cm? "))
        if self.langd < 140:
            print("tyvärr, du är för kort, prova något annat")
            return 0
        elif self.langd >= 140:
            print("håll dig hatten, nu åker vi!")
            print(" ")
            return 1

#åldersgräns för spökhuset
    def aldersgrans(self):
        print("")
        self.alder = int(input("Hur gammal är du? "))
        if self.alder < 10:
            print("tyvärr, du är för ung, prova något annat")
            return 0
        elif self.alder >= 10:
            print("Gå in om du törs!")
            print(" ")
            return 1


#åker attraktion frittfall lr bergodalbana
        def aka(self):
                print("")
        print(self.val)
        tal = random.randint(0,100)
        if tal < 20:
            print("åkturen gick åt skogen, bättre lycka nästa gång")
        elif tal >= 20:
            print("jabbadabbbadoooooooo")
            return 1

#går i spökhuset
        def aka1(self):
                print("")
        print(self.val)
        tal = random.randint(0,100)
        if tal < 20:
            print("du är omringad av spöken och kan inte fortsätta")            return 0
        elif tal >= 20:
            print("Buhuuuuuu, buuuhuuuu")
            return 1

#programkod
print("Välkommen till nöjesfältet, vad vill du göra?")
print(" ")

while 1:
    vald_attr = input("Vad vill du göra?\n1. frittfall\n2. bergodalbana\n3. spökhuset\n4. Avsluta\n")
    if vald_attr == "1":
        val = Nojesfalt(attraktioner[0])
        if val.langdgrans() == 1:
            val.aka()
    elif vald_attr == "2":
        val = Nojesfalt(attraktioner[1])
        val.aka()
    elif vald_attr == "3":
        val = Nojesfalt(attraktioner[2])
        if val.aldersgrans() == 1:
            val.aka1()
    elif vald_attr == "4":
        break

  • Das ist ein Problem mit Ihrem Code-Editor, nicht wirklich mit Python. Sie sollten Ihre Frage ändern, um dies widerzuspiegeln, und angeben, welchen Editor Sie verwenden.

    – Jeff Mercado

    16. April 2011 um 8:49 Uhr


  • Wie Sie dies ändern, hängt von Ihrem Editor ab. Ich bin mir nicht sicher, ob dies hier überhaupt zum Thema gehört, es könnte eine Frage für den Superuser sein.

    – Lennart Regebro

    16. April 2011 um 10:10 Uhr


  • Ändern Sie Ihren Editor so, dass sichtbare Leerzeichen am Anfang der Zeile angezeigt werden. Zum Beispiel habe ich meinen Editor so konfiguriert, dass transparente Tabulatoren und sichtbare Leerzeichen angezeigt werden, da ich Tabulatoren zum Einrücken von Code verwende. Wenn ich am Anfang der Zeile Geräusche sehe, weiß ich, dass ein oder mehrere zusätzliche Leerzeichen vorhanden sind. Wenn Sie darauf bestehen, es falsch zu machen, können Sie Ihren Editor so konfigurieren, dass Leerzeichen ausgeblendet und Tabulatoren angezeigt werden. (Ja, ich weiß über PEP-8 Bescheid, aber ich stimme dem nicht zu.)

    – Mikko Rantalainen

    16. Oktober 2019 um 7:45 Uhr


  • Diese Probleme können abhängig von der von Ihnen gewählten ide gelöst werden

    – Zina

    4. Januar 2021 um 9:45 Uhr

  • @Zina Es gibt bestimmte Verpflichtungen bei der Verwendung von Code-Editoren, da Sie keinen anderen Editor verwenden können, während Sie Ihre Aufgabe auf Coursera erledigen.

    – Stimmung

    10. Juli 2021 um 16:29 Uhr

Benutzer-Avatar
Lennart Regebro

Verwenden Sie keine Tabulatoren.

  1. Stellen Sie Ihren Editor auf die Verwendung von 4 ein Räume für Einzug.
  2. Führen Sie eine Suche und Ersetzung durch, um alle Tabulatoren durch 4 Leerzeichen zu ersetzen.
  3. Stellen Sie sicher, dass Ihr Editor auf eingestellt ist Anzeige Tabulatoren als 8 Leerzeichen.

Hinweis: Der Grund für 8 Leerzeichen für Tabulatoren ist, dass Sie sofort bemerken, wenn Tabulatoren versehentlich eingefügt wurden – etwa beim Kopieren und Einfügen aus Beispielcode, der Tabulatoren anstelle von Leerzeichen verwendet.

  • Gibt es Gründe für diese Dogmen?

    – RocketR

    25. Juli 2011 um 22:24 Uhr

  • @RocketR: Die Antwort ist für Python. Wenn Sie nur Tabulatoren verwenden, erhalten Sie einen Einzug von 8 Leerzeichen, es sei denn, Sie erweitern Tabulatoren auf etwas anderes als 8 Leerzeichen, in diesem Fall sieht es in anderen Editoren schlecht aus. Wenn Sie Tabulatoren und Leerzeichen mischen, kann es brechen (siehe Frage) oder gebrochen aussehen, wenn Sie eine andere als 8-Leerzeichen-Erweiterung von Tabulatoren haben. Zusammenfassend: Die Verwendung von Tabs zum Einrücken ist unglaublich schlecht. Mach das niemals (außer für Sprachen/Dateiformate, die dies erfordern). Das Ende.

    – Lennart Regebro

    26. Juli 2011 um 9:28 Uhr


  • @RocketR Python hat Pep8, ein Dokument, das “guten Python-Stil” auflistet, in dem ausdrücklich angegeben ist, dass 4 Leerzeichen die akzeptierte Form beim Einrücken sind.

    – Daniel Gratz

    14. September 2013 um 12:13 Uhr

  • Link zum relevanten PEP 8-Abschnitt über „Tabs vs. Leerzeichen“ Spoiler: Die erste Zeile ist “Leerzeichen sind die bevorzugte Einzugsmethode.”

    – Tadhg McDonald-Jensen

    12. Mai 2016 um 19:01 Uhr

  • Für vim: set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab dann %s/\t/ /g

    – Morris

    30. Juli 2019 um 16:03 Uhr


Benutzer-Avatar
Akavall

Verwendung der autopep8 Befehl unten hat es für mich behoben:

 autopep8 -i my_file.py

Dokumentation für autopep8 hier verlinkt.

  • es funktioniert nicht..

    – Bruce Wayne – Der Geek-Killer

    28. Februar um 15:05 Uhr

Für VSCode-Benutzer

Strg+Umschalt+P oder Ansicht->Befehlspalette.

Typ

>Einrückungen in Leerzeichen umwandeln

Drücken Sie Enter.

  • Wenn Sie lieber mit Tabs arbeiten, können Sie den Code erneut umwandeln, indem Sie die obigen Anweisungen wiederholen und stattdessen Folgendes eingeben: >Convert Indentation to Tabs

    – carloswm85

    5. Mai 2021 um 15:44 Uhr

Benutzer-Avatar
arsb48

Mit dem LEERLAUF Editor können Sie dies verwenden:

  • Speisekarte BearbeitenWählen Sie Alle
  • Speisekarte FormatUntabify-Region
  • Angenommen, Ihr Editor hat 8 Leerzeichen durch einen Tabulator ersetzt, geben Sie 8 in das Eingabefeld ein.
  • Klicken Sie auf Auswählen, und es repariert das gesamte Dokument.

Benutzer-Avatar
Dulangi_Kanchana

Bei Verwendung des erhabenen Texteditors konnte ich das Segment meines Codes auswählen, das mir die inconsistent use of tabs and spaces in indentation Fehler und wählen Sie:

view > indentation > convert indentation to spaces

was das Problem für mich gelöst hat.

Es ist möglich, dieses Problem mit zu lösen notepad++ Durch Ersetzen Tabs mit 4 Platzs:

  1. Wählen Suchen -> Finden… oder drücken Strg + F
  2. Wähle aus Ersetzen Tab
  3. In der benannten Box Suchmodus wählen Erweitert(\n, \r, \t, \0, \x…)
  4. Im Feld Finde was : schreiben \t
  5. Im Feld Ersetzen mit : Drücken Sie Platz 4 Mal. Stellen Sie sicher, dass es in diesem Feld nichts anderes gibt.
  6. Klicken Sie auf die Schaltfläche Alles ersetzen

So ersetzen Sie Tabulatoren durch Leerzeichen

Benutzer-Avatar
Peter Mortensen

Im Allgemeinen bevorzugen Menschen das Einrücken mit Leerzeichen. Es ist in allen Editoren konsistenter, was zu weniger Fehlanpassungen dieser Art führt. Sie dürfen jedoch mit Tabulatoren einrücken. Es ist Ihre Wahl; Sie sollten sich jedoch bewusst sein, dass der Standard von 8 Leerzeichen pro Tabulator etwas breit ist.

In Bezug auf Ihr Problem hat Ihr Redakteur höchstwahrscheinlich einen Fehler gemacht. Das Konvertieren von Tabs in Leerzeichen ist wirklich Editor-abhängig.

Auf Emacs können Sie beispielsweise die Methode ‘untabify’ aufrufen.

Auf der Befehlszeile können Sie eine sed-Zeile verwenden (passen Sie die Anzahl der Leerzeichen nach Belieben an):

   sed -e 's;\t;       ;' < yourFile.py > yourNedFile.py

  • Und wenn Sie dies mit einer geöffneten Datei in Vim tun möchten, können Sie Folgendes eingeben: :%s/\t/ /g Dadurch wird jedes Tabulatorzeichen durch 4 Leerzeichen ersetzt.

    – jsaigle

    10. November 2021 um 15:02 Uhr

1093200cookie-check“inkonsistente Verwendung von Tabulatoren und Leerzeichen in Einzügen”

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy