2016-05-13 1 views
2

Il y a donc deux problèmes. J'ai ce morceau de code dans Sublime Text 3, où j'utilise le paquet Anaconda (les espaces pertinents seront affichés comme , tel qu'il est affiché dans ST3, les paramètres Python.sublime sont affichés à la fin de cet article):Erreur Linter "ligne trop longue" et espace excessif dans les chaînes multilignes dans ST3

elif choice == "taunt bear" and not bear_moved: 
••••••••print("The•bear•has•moved•from•the•door.•You•can•go•through•it•now" 
      ) 
     bear_moved = True 

premier problème:
J'ai Word Wrap activé et la règle fixée à 80, il enveloppe le code automatiquement, ayant exactement 79 caractères sur la ligne avec « impression ... » et 1 caractère sur la ligne suivante. Mais linter me donne une erreur "[W] PEP8 (E501): ligne trop longue (80> 79 caractères)". J'ai des parenthèses droites auto-indentées sur la ligne suivante, donc il n'y a pas de violation de la règle "79 caractères par ligne". Quel pourrait être le problème ici? Est-ce que la ligne devrait toujours être inférieure à 80 caractères, même si elle couvre plusieurs lignes?

Deuxième problème:

elif choice == "taunt bear" and not bear_moved: 
••••••••print("""The•bear•has•moved•from•the•door. 
•••••••••••••••••You•can•go•through•it•now""") 
     bear_moved = True 

Ici, je voulais me débarrasser de l'erreur « > 79 caractères » et faire une chaîne multi-ligne. La chose est, quand je divise deux phrases dans la chaîne sur deux lignes pour pouvoir les aligner selon les règles PEP8, je dois les indenter, et l'indentation signifie un espace excessif dans la chaîne, ce qui n'est pas ce que je veux. Voici comment cela devrait fonctionner idéalement, avec un espace nécessaire juste après la fin de la première phrase, et pas d'espace utilisé pour mettre en retrait la seconde moitié de la chaîne:

elif choice == "taunt bear" and not bear_moved: 
••••••••print("""The•bear•has•moved•from•the•door.• 
       You•can•go•through•it•now""") 
     bear_moved = True 

Python.sublime-paramètres:

{ 
    // editor options 
    "draw_white_space": "all", 

    // tabs and whitespace 
    "auto_indent": true, 
    "rulers": [80], 
    "smart_indent": true, 
    "tab_size": 4, 
    "trim_automatic_white_space": true, 
    "use_tab_stops": false, 
    "word_wrap": true, 
    "wrap_width": 80 
} 

Répondre

3

Vous pouvez utiliser des mécanismes concat de chaîne Python et écrire la chaîne entre guillemets simples comme on le voit dans l'exemple:

elif choice == "taunt bear" and not bear_moved: 
••••••••print("The•bear•has•moved•from•the•door.•" 
       "You•can•go•through•it•now") 
     bear_moved = True 

donc votre code est pep8 conforme et le STRI ng est dans le format désiré.