http://d.hatena.ne.jp/shindannin/20111202/1322833089 Oui, la référence de ce soir provient du lien ci-dessus
Problème 1 Count FizzBuzz Combien d'entiers de A à B qui sont divisibles par 3 ou 5? Avec ça Réimprimer l'exemple de l'autre partie est déroutant, donc juste pour moi
Round-robin en utilisant la boucle for.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
import io
import re
import math
####Préparation du contrôle de l'utilisation de la mémoire et du temps de fonctionnement
from guppy import hpy
import time
h = hpy()
start = time.clock()
####Jusqu'ici
i=0
j=0
#ex1
for x in range(5, 11):
if x%3==0 or x%5==0:
i+=1
#ex2
for y in range(14, 17):
if y%3==0 or y%5==0:
j+=1
print 'ex1:'+str(i),'ex2:'+str(j)
####Utilisation de la mémoire et sortie du temps de fonctionnement
end = time.clock()
print h.heap()
print end-start
La plage (5,11) est-elle trop intuitive pour passer de 5 à 10 avec for? Je ne pense pas que ce soit le cas, mais je n'aimais pas ça quand j'ai écrit un entier entre A et B dans une déclaration while.
Lorsqu'il est écrit dans la déclaration while.py
i=0
a,b =5,10
#↓ sera spécifié pour être exécuté entre A et B
while a<=b:
#Lorsqu'il est divisible par 3 ou 5, ajoutez 1 au compteur
if a%3==0 or a%5==0:
i+=1
#Ajouter 1 par un avant de revenir à la condition jugement d'exécution de la partie while
a+=1
Hmmm, je pense que c'est mieux dans ce cas. Et ensuite
Problème 2 Count FizzBuzz (2) x est un entier de 0 à X, y est un entier de 0 à Y et z est un entier de 0 à Z. Combien de combinaisons de (x, y, z) y a-t-il dans lesquelles x + y * y + z * z * z * z est divisible par 3 ou 5?
Round-robin utilisant plusieurs boucles for
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
import io
import re
import math
####Préparation du contrôle de l'utilisation de la mémoire et du temps de fonctionnement
from guppy import hpy
import time
h = hpy()
start = time.clock()
####Jusqu'ici
i=0
for x in range(0,101):
for y in range(0,101):
for z in range(0,101):
tmp=x + y*y + z*z*z*z
if tmp%3==0 or tmp%5==0:
i+=1
else:
pass
print i
####Utilisation de la mémoire et sortie du temps de fonctionnement
end = time.clock()
print h.heap()
print end-start
Pour le moment, je l'ai écrit pendant, mais ce n'est toujours pas beau. .. .. Et la vitesse d'exécution était d'environ 0,61 seconde pour l'instruction for et de 0,70 seconde pour l'instruction while.
Lors de l'utilisation pendant.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
import io
import re
import math
####Préparation du contrôle de l'utilisation de la mémoire et du temps de fonctionnement
from guppy import hpy
import time
h = hpy()
start = time.clock()
####Jusqu'ici
i=0
x=y=z=0
while x<=100:
while y<=100:
while z<=100:
tmp=x + y*y + z*z*z*z
if tmp%3==0 or tmp%5==0:
i+=1
else:
pass
z+=1
y+=1
z=0
x+=1
y=0
print i
####Utilisation de la mémoire et sortie du temps de fonctionnement
end = time.clock()
print h.heap()
print end-start
Je pense avoir vu ailleurs cela: passer est inutile, inutile et ne doit pas être écrit, mais je l'écris souvent. .. .. De plus, si vous quittez while une fois, puis revenez dans une boucle pour exécuter l'instruction while qui est un enfant, vous pouvez rechercher une méthode autre que la réaffectation de 0 au compteur à la sortie. .. ..
from __future__ import print_function
Sera incorporé à partir de demain.
C'est tout pour ce soir.
Recommended Posts