Jul-07-2018, 03:01 PM
(This post was last modified: Jul-07-2018, 03:01 PM by arjunsingh2908.)
Hey All,
I am a beginner in Python and I am still in the learning stage. While I was learning an Example of Dual Mode code in my book, I came across the code below which I coded in a file as is but when I run it, it gives me an 'Invalid Syntax' error and highlights the import coded towards the end (Line 54). I tried running the file through command prompt, IDLE, checked indentation but to no avail. I am sure I am probably missing something very silly but can anyone please help.
-Arjun
I am a beginner in Python and I am still in the learning stage. While I was learning an Example of Dual Mode code in my book, I came across the code below which I coded in a file as is but when I run it, it gives me an 'Invalid Syntax' error and highlights the import coded towards the end (Line 54). I tried running the file through command prompt, IDLE, checked indentation but to no avail. I am sure I am probably missing something very silly but can anyone please help.
-Arjun
#!python """ File: formats.py (2.X and 3.X) Various specialized string display formatting utilities. Test me with canned self-test or command-line arguments. To do: add parens for negative money, add more features. """ def commas(N): """ Format positive integer-like N for display with commas between digit groupings: "xxx,yyy,zzz". """ digits = str(N) assert(digits.isdigit()) result = '' while digits: digits, last3 = digits[:-3], digits[-3:] result = (last3 + ',' + result) if result else last3 return result def money(N, numwidth=0, currency='$'): """ Format number N for display with commas, 2 decimal digits, leading $ and sign, and optional padding: "$ -xxx,yyy.zz". numwidth=0 for no space padding, currency='' to omit symbol, and non-ASCII for others (e.g., pound=u'\xA3' or u'\u00A3'). """ sign = '-' if N < 0 else '' N = abs(N) whole = commas(int(N)) fract = ('%.2f' % N)[-2:] number = '%s%s.%s' % (sign, whole, fract) return '%s%*s' % (currency, numwidth, number) if __name__ == '__main__': def selftest(): tests = 0, 1 # fails:-1, 1.23 tests += 12, 123, 1234, 12345, 123456, 1234567 tests += 2 ** 32, 2 ** 100 for test in tests: print(commas(test)) print('') tests = 0, 1, -1, 1.23, 1., 1.2, 3.14159 tests += 12.34, 12.344, 12.345, 12.346 tests += 2 ** 32, (2 ** 32 + .2345) tests += 1.2345, 1.2, 0.2345 tests += -1.2345, -1.2, -0.2345 tests += -(2 ** 32), -(2 ** 32 + .2345) tests += (2 ** 100), -(2 ** 100) for test in tests: print('%s [%s]' % (money(test, 17), test) import sys if len(sys.argv) == 1: selftest() else: print(money(float(sys.argv[1]), int(sys.argv[2])))