Je regardais la page des tendances de Qiita dans ma routine habituelle, et j'ai vu un article comme celui-ci!
Compte tenu de la réponse de Conner Davis, "Imprimer les nombres de 1 à 100 sans boucle, récursivité ou aller" https://qiita.com/xtetsuji/items/19d07c629852876da401
Non non Non
N'est-ce pas trop intéressant et étonnant de pouvoir obtenir un nombre de 1 à 100 avec ça?
Bien qu'il soit reproduit en perl et ruby dans l'article, il semble qu'il ne soit pas reproduit en python que j'utilise habituellement, alors je l'ai essayé.
make_num.py
from decimal import *
import re
getcontext().prec = 298
data = Decimal(1000) / Decimal(999**2) #Partie calcul
data = (str(data).split(".")[1])
print(re.findall(r'...', data)) #Divisé+Partie de sortie
@shiracamus @ Louisa0616 La partie calcul et la partie division ont été modifiées selon les suggestions des deux personnes. ↓ Avant le changement data = Decimal("1000")/Decimal(str(999**2)) print(re.split('(...)',data)[1::2])
Avec une division python normale, le résultat est un flottant, et il n'est pas possible de sortir jusqu'à 300 chiffres. Par conséquent, la bibliothèque décimale est utilisée pour générer le nombre de chiffres spécifié. De plus, comme les résultats du calcul sont collés ensemble comme 0.001002003 ...., j'utilise une expression régulière pour les séparer.
La sortie ressemble à ceci:
$ python make_num.py
['001', '002', '003', '004', '005', '006', '007', '008', '009', '010',
'011', '012', '013', '014', '015', '016', '017', '018', '019', '020',
'021', '022', '023', '024', '025', '026', '027', '028', '029', '030',
'031', '032', '033', '034', '035', '036', '037', '038', '039', '040',
'041', '042', '043', '044', '045', '046', '047', '048', '049', '050',
'051', '052', '053', '054', '055', '056', '057', '058', '059', '060',
'061', '062', '063', '064', '065', '066', '067', '068', '069', '070',
'071', '072', '073', '074', '075', '076', '077', '078', '079', '080',
'081', '082', '083', '084', '085', '086', '087', '088', '089', '090',
'091', '092', '093', '094', '095', '096', '097', '098', '099', '100']
Je ne peux pas prédire où il sera utilisé à l'avenir, mais l'idée de pouvoir afficher des nombres de 1 à 100 sans utiliser l'instruction for était intéressante.
Références
- https://techacademy.jp/magazine/19130
- https://kaworu.jpn.org/python/Python%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E3%82%922%E6%96%87%E5%AD%97%E3%81%9A%E3%81%A4%E5%88%86%E5%89%B2%E3%81%99%E3%82%8B
Recommended Posts