Emballage autour sur une liste lors de l'indice de la liste est hors de portée

Je suis à la recherche de quelques améliorations de code, ou d'une pré-version construite de ce que j'ai mis en place moi-même que je pense qu'il y a peut-être, ou devrait être, d'une façon plus propre à atteindre ce que je veux.

Je suis en train d'écrire un morceau de logiciel pour convertir les onglets de guitare en notation classique, j'ai besoin de convertir le nombre sur un onglet à la note correspondante, et il serait utile pour la construction d'une liste de chaque chaîne de caractères remarque depuis le début de la chaîne.

J'ai une liste de notes, (a - g#) et une liste de frettes (0, 21).

Notes[frette] fonctionne très bien pour les onze premières notes, mais après cela, j'ai évidemment obtenir un indice d'erreur.

Le code je dois le faire, c'est ici:

notes = ["a", "a#", "b", "c", "c#", "d", "e", "f", "f#", "g", "g#"]
note = 21
while note >= len(notes):
    note -= 11
    try:
        print notes[note]
    except:
        continue

Cela fonctionne, mais il semble un peu long, est-il une meilleure façon de le faire?

  • N'êtes-vous pas oublier "d#" ? Si donc, à l'aide de '%' comme "notes[note % len(notes)]" est une bonne façon d'aller, comme il va automatiquement corriger pour la modification de la liste des tailles.
InformationsquelleAutor DasSnipez | 2014-03-02