Conseils (structure de contrôle) à connaître lors de la programmation de la compétition avec Python2

La partie concernant la structure de contrôle de conseils à connaître lors de la programmation de compétitions avec Python2 a été divisée.

La version de Python est 2.7.5 (dans Python3, les spécifications telles que l'entrée et la sortie sont très différentes, il est donc recommandé de se référer à d'autres articles).

Branche conditionnelle

Passer des variables aux expressions conditionnelles

Personnellement, je n'aime pas beaucoup ça, mais pour réduire la quantité de code

while 1:
    a = input()
    if not a: 
        break
    # ...   

Je pense que les variables sont souvent passées à des conditions telles que les instructions if et while.

Résultat de la mise d'une variable dans l'instruction If en Python --LIFE WITH PYTHON

Moule résultat
int Faux si 0, Vrai sinon
float 0.Faux si 0, Vrai sinon
str ''(Caractères vides)Faux sinon, Vrai sinon
list []Faux sinon, Vrai sinon
tuple ()Faux sinon, Vrai sinon
dict {}Faux sinon, Vrai sinon
set set()Faux sinon, Vrai sinon
None False

Je veux terminer le processus au milieu

Dans certains cas, il peut être plus facile de terminer l'exécution du script au milieu, par exemple lorsqu'un symbole indiquant la fin de l'entrée ou une casse de coin est entré. Dans de tels cas, utilisez quit () ou sys.exit ().

a = input()
if a == 0:
    quit()
# ...
import sys

a = input()
if a == 0:
    sys.exit()
# ...  

répétition

range () et xrange ()

2. Fonctions intégrées - Documentation Python 2.7ja1

Si vous souhaitez implémenter une itération simple comme "faire XX n fois" en Python

n = 5

for i in range(n):
  print i
# 0
# 1
# 2
# 3
# 4

Ou

n = 5

for i in xrange(n):
  print i
# 0
# 1
# 2
# 3
# 4

Il est courant d'écrire comme ça.

Ici, «range (n)» et «xrange (n)» renvoient un objet liste et un objet xrange dans lesquels les entiers de 0 à n sont disposés respectivement par ordre croissant. L'objet xrange est un objet qui peut être récupéré lorsqu'une valeur est nécessaire à l'aide de l'évaluation du délai. Si n est très grand, range (n) générera une liste puis une boucle, ce qui augmentera l'utilisation de la mémoire, maisxrange (n)évitera cela. De plus, en ce qui concerne la vitesse, xrange () est plus rapide sauf dans certains cas. [python - Should you always favor xrange() over range()? - Stack Overflow] (http://stackoverflow.com/questions/135041/should-you-always-favor-xrange-over-range)

De plus, dans la plage (x), diverses plages peuvent être exprimées en utilisant les deuxième et troisième arguments ou en utilisant reverse ().

# range(start, stop)Alors, commencez à vous arrêter-Renvoie une liste de tous les nombres entiers jusqu'à 1 dans l'ordre croissant
print range(2, 6) # [2, 3, 4, 5]

# range(start, stop, step)Ainsi, parmi les entiers obtenus en augmentant la valeur à chaque pas depuis start, stop-Renvoie une liste de tout jusqu'à 1 dans l'ordre croissant
print range(5, 30, 5) # [5, 10, 15, 20, 25]

# reversed()Vous pouvez inverser la liste avec
for i in reversed(range(5)):
    print i
# 4
# 3
# 2
# 1
# 0

Développer les variables dans l'instruction for

Dans l'instruction for,

l = [1, 2, 3, 4, 5]
for e in l:
    print e

output


1
2
3
4
5

Vous pouvez développer chaque élément de la liste comme dans, mais c'est

l = [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
for i, e in l:
    print '#{0}: #{1}'.format(i, e)

output


0: a
1: b
2: c
3: d

Vous pouvez aussi faire comme ça.

enumerate

Lorsque vous tournez la boucle for, il peut être intéressant de pouvoir obtenir l'index et la valeur de la liste en même temps.

ʻEnumerate () `retourne un itérateur avec un index et sa valeur pour une liste d'arguments.

l = ['a', 'b', 'c', 'd']
for elem in enumerate(l):
    print elem
# (0, 'a')
# (1, 'b')
# (2, 'c')
# (3, 'd')

#Le code ci-dessus est équivalent au code suivant
for i in range(len(l)):
    print (i, l[i])

instruction for-else, while-else

En Python, des clauses else peuvent être ajoutées aux instructions for et while. À ce stade, la clause else est appelée uniquement si elle n'a jamais été interrompue en interne à la fin de la boucle.

a = [1, 2, 3, 4, 5]
b = [1, 2, 4, 5]
x = 3

def find_val(l, x):
    for i in range(len(l)):
        if l[i] == x:
            print i
            break
    else:
        print 'Not found...'

#Trouvez sur_val()Code équivalent
def find_val2(l, x):
    flag = False
    for i in range(len(l)):
        if l[i] == x:
            print i
            flag = True
            break
    if not flag:
        print 'Not found...'

find_val(a, x) # 2
find_val(b, x) # Not found...

Il est très facile et pratique à écrire car il n'est pas nécessaire d'avoir un drapeau pour poser une question telle que "Trouver x. Si non trouvé, afficher ''". Cependant, s'il y a plusieurs boucles, la visibilité sera pire, il vaut donc mieux ne pas l'utiliser.

Recommended Posts

Conseils (structure de contrôle) à connaître lors de la programmation de la compétition avec Python2
Conseils (structure de données) à connaître lors de la programmation de compétitions avec Python2
Conseils (entrée / sortie) à connaître lors de la programmation de compétitions avec Python2
Conseils à connaître lors de la programmation de compétitions avec Python2 (bibliothèque utile)
Connaissances à connaître lors de la programmation de concours avec Python2
Conseils à savoir lors de la programmation de la compétition avec Python2 (Autres spécifications du langage)
Programmation compétitive avec python
Connaissance de l'algèbre linéaire que vous devez savoir lorsque vous faites de l'IA
Programmation de compétition avec les paramètres de l'environnement local python
Conseils personnels lorsque vous faites diverses choses avec Python 3
Précautions lors du traitement des structures de contrôle dans Python 2.6
[python] [vscode] Lorsque vous vous fâchez avec space-tab-mixed
Résolution avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (053 --055 Méthode de planification dynamique: Autres)
Vous devez savoir si vous utilisez Python! 10 bibliothèques utiles
Qu'utilisez-vous lorsque vous testez avec Python?
Structure de répertoire lors de l'écriture de tests avec unittest standard Python 3
Programmation Python avec Atom
Programmation avec Python Flask
Je connais? Analyse de données à l'aide de Python ou de choses que vous souhaitez utiliser quand vous le souhaitez avec numpy
[Astuces] Traiter l'erreur qui se produit lors de la tentative d'installation de la série Python 3 inférieure à 3.5.3 avec pyenv
Utilisez une macro qui s'exécute lors de l'enregistrement de python avec vscode
Programmation avec Python et Tkinter
[Tutoriel Python] Outil de structure de contrôle
[Astuces] Gérez Athena avec Python
Erreur lors de la lecture avec python
Programmation réseau avec Python Scapy
J'essaierai de créer une structure de répertoires Python que je ne regretterai pas plus tard
Que dois-je faire avec la structure de répertoires Python après tout?
Résoudre avec Python [100 questions que les débutants et les intermédiaires devraient résoudre] (034-038 Méthode de planification dynamique: Knapsack DP basic)
Résolvez avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (039 --045 Méthode de planification dynamique: variante Knapsack DP)