Форум сайта python.su
Недавно появилась такая задача: нужно, используя цикл, сделать много папок. Проблема в том, что папка при первом прохождении цикла создается, при остальных - нет. Ошибки никакой не выбивает, программа работает, но свою работу не делает. Как исправить эту проблему?
Код прилагаю.
import hashlib import os i = 0.060000000000000000000000000000 end = 0.0666666666666666666666666666667 while i <= end: formatted = str(format(i, ".30f")) string = hashlib.sha224(formatted).hexdigest() if(os.path.exists("56/" + str(string)) == False): os.mkdir('56/' + str(string)) i = i + 0.000000000000000000000000000001 print "OK"
Отредактировано Moder5ly (Ноя. 14, 2017 18:06:07)
Офлайн
слишком много нулей после точки, более детально смотреть тут https://docs.python.org/3/tutorial/floatingpoint.html и тут https://docs.python.org/3/library/sys.html
пример:
import sys print(0.5+sys.float_info.epsilon) >>> 0.5000000000000002
import hashlib import os from decimal import Decimal, getcontext getcontext().prec = 29 i = Decimal(0.060000000000000000000000000000).quantize(Decimal('0.000')) end = Decimal(0.0666666666666666666666666666667) while i <= end: formatted = str(format(i, ".30f")) string = hashlib.sha224(formatted.encode('UTF-8')).hexdigest() print(i, formatted, string) #if(os.path.exists("56/" + str(string)) == False): #os.mkdir('56/' + str(string)) i = i + Decimal(0.000000000000000000000000000001) print ("OK") >>> 0.060 0.060000000000000000000000000000 8fa7b78dbccdcc900620e4453060774facd36bd0a446f1f91176d9dd 0.060000000000000000000000000001 0.060000000000000000000000000001 4e4065c98754420c8f49e4dbbb542790bcf25cbd8b391b8bafd61e39 0.060000000000000000000000000002 0.060000000000000000000000000002 a3119e54b99f91eb8151eefd5f69bc68339e0ca47f609c16e633c0d9 .....
[code python][/code]
Отредактировано PEHDOM (Ноя. 14, 2017 22:08:59)
Офлайн