/
terminal_app.py
executable file
·52 lines (37 loc) · 1.3 KB
/
terminal_app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#! /usr/bin/env python
import argparse
from argparse import Namespace, ArgumentParser
from time import perf_counter
import chalk
from colorama import init as init_colorama
from happy_num import get_dist_happy
init_colorama()
def get_args() -> Namespace:
# set up argument parser
parser: ArgumentParser = argparse.ArgumentParser()
parser.add_argument('-r',
type=float,
default=1E06,
help='Range to be calculated?')
args: Namespace = parser.parse_args()
args.r = int(args.r)
return args
def format_dec(n: float) -> str:
a, b = ('%E' % n).split('E')
out: str = str(round(float(a.rstrip('0').rstrip('.')), 3))
if b != '+00':
out += 'e' + b
return out
def main() -> None:
args: Namespace = get_args()
# start main script
print(chalk.green('Distinct Happy Number Range Counter\n'))
print('Range:', chalk.red(args.r))
time_start: float = perf_counter() # start timer
count: int = get_dist_happy(args.r)
time_end: float = perf_counter() # end timer
time_delta: float = time_end - time_start
print('Count Total: {count}'.format(count=chalk.cyan(count)))
print('Calc Time (s): {}'.format(chalk.magenta(format_dec(time_delta))))
if __name__ == "__main__":
main()