"Uso incoerente di tabulazioni e spazi nel rientro"


222

Sto provando a creare un'applicazione in Python 3.2 e utilizzo sempre le schede per il rientro, ma anche l'editor modifica alcune di esse in spazi e quindi stampa "uso incoerente di schede e spazi nel rientro" quando provo a eseguire il programma.

Come posso cambiare gli spazi in schede? Mi sta facendo impazzire. (Sono un principiante nella programmazione). Sarei felice se potessi ottenere alcuni suggerimenti generali sul mio codice, se avessi fatto molti errori sarei felice di sentire.

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

27
Questo è un problema con il tuo editor di codice, non proprio con Python. Dovresti cambiare la tua domanda per rispecchiarla e menzionare quale editor stai utilizzando.
Jeff Mercado,

3
Come cambi questo dipende dal tuo editor. Non sono sicuro che questo sia nemmeno un argomento qui, potrebbe essere una domanda per il superutente.
Lennart Regebro,

Cambia il tuo editor per mostrare spazi bianchi visibili all'inizio della riga. Ad esempio, ho configurato il mio editor per mostrare schede trasparenti e spazi visibili perché utilizzo le schede per indentare il codice. Se vedo del rumore all'inizio della linea, so che ci sono uno o più spazi extra. Se insisti nel farlo in modo errato, puoi configurare il tuo editor per nascondere gli spazi e mostrare le schede. (Sì, conosco PEP-8 ma non sono d'accordo.)
Mikko Rantalainen,

Risposte:


277

Non utilizzare le schede.

  1. Imposta il tuo editor per utilizzare 4 spazi per il rientro.
  2. Effettua una ricerca e sostituisci per sostituire tutte le schede con 4 spazi.
  3. Assicurati che il tuo editor sia impostato per visualizzare le schede come 8 spazi.

Nota: il motivo di 8 spazi per le schede è che si nota immediatamente quando le schede sono state inserite involontariamente, ad esempio quando si copia e si incolla dal codice di esempio che utilizza le schede anziché gli spazi.


7
C'è qualche ragionamento dietro questi dogmi?
RocketR,

1
@Lennart Regebro, intendo dire usare gli spazi. Li uso ma inconsciamente, le schede mi sembrano migliori. A proposito, nella programmazione di Ruby tutti usano 2 spazi, quindi non è una singola regola per tutti.
RocketR,

3
@RocketR: la risposta è per Python. Se si utilizzano solo le schede, si ottiene un rientro di 8 spazi, a meno che non si espanda le schede in qualcosa di diverso da 8 spazi, nel qual caso sembrerà male su altri editor. Se mescoli schede e spazi, potrebbe rompersi (vedi domanda) o apparire rotto se hai un'espansione delle schede diversa da 8 spazi. In breve: usare le schede per il rientro è incredibilmente male. Non farlo mai (tranne per le lingue / i formati di file che lo richiedono). La fine.
Lennart Regebro,

2
@RocketR Python ha Pep8, un documento che elenca "buon stile python" che afferma esplicitamente che 4 spazi è la forma accettata al rientro.
Daniel Gratzer,

4
Link alla pertinente sezione PEP 8 sullo spoiler "Tabs vs Spaces" : la prima riga è "Gli spazi sono il metodo di rientro preferito".
Tadhg McDonald-Jensen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.