You are working too hard in creating your string literal. The *Python Language Reference Manual* says:
> 2.4.2. String literal concatenation Multiple adjacent string literals > (delimited by whitespace), possibly using different quoting conventions, > are allowed, and their meaning is the same as their concatenation. Thus, > "hello" 'world' is equivalent to "helloworld". This feature can be used > to reduce the number of backslashes needed, to split long strings > conveniently across long lines, [...] > Also, the output is hard to really comprehend. So, may I humbly submit... from __future__ import print_function > > digits = > "1.61803398874989484820458683436563811772030917980576286213544862270526046281890" > \ > "244970720720418939113748475408807538689175212663386222353693179318006076672635" > \ > "443338908659593958290563832266131992829026788067520876689250171169620703222104" > \ > "321626954862629631361443814975870122034080588795445474924618569536486444924104" > \ > "432077134494704956584678850987433944221254487706647809158846074998871240076521" > \ > "705751797883416625624940758906970400028121042762177111777805315317141011704666" > \ > "599146697987317613560067087480710131795236894275219484353056783002287856997829" > \ > > "778347845878228911097625003026961561700250464338243776486102838312683303724292" > > import decimal > > def compress_print(d): > s = str(d) > reps = 0 > digit = s[2] > i = 3 > while s[i] == digit: > i += 1 > reps += 1 > return '{} and {} more "{}"s then {}'.format(s[:3], reps, digit, s[i:]) > > with decimal.localcontext() as context: > context.prec = len(digits)-1 > phi = decimal.Decimal(digits) > id1 = phi**2 + phi**-2 # Identity 1 (== 3) > id2 = 8 * phi**2 - phi**6 # Identity 2 (== 3) > print('Phi is {} digits long, {}...{}'.format(len(digits) - 1, > digits[:5], digits[-5:])) > print('The 1st identity is', compress_print(id1)) > print('The 2nd identity is', compress_print(id2)) > print('Equal?', id1 == id2) > print('The difference is=', id2 - id1) > > Phi is 624 digits long, 1.618...24292 The 1st identity is 2.9 and 621 more "9"s then 8 The 2nd identity is 3.0 and 620 more "0"s then 2 Equal? False The difference is= 2.2E-622
_______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig