~/home_Python/apple_py/prime/prime.py
|INDEX| Python.use(better)
》作業中です《
#! /usr/bin/env python # coding: utf-8 ## ---------------------------------------- ## ## (C) Copyright 2000-2010, 小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部 ## ## ---------------------------------------- # ..+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8 """ >>> None >>> ## ---------------------------------------- >>> None version: #1.0.23 """ ## ---------------------------------------- ## ---------------------------------------- def step00x(): """def prime(n):""" def isPrime(n): r = False return r ## ---------------------------------------- local = locals() ex_isPrime(local, 30) ## ---------------------------------------- def step01x(): """if not n%e: break""" from math import sqrt def isPrime(n): r = False m = int(sqrt(n)) for e in range(2, m+1): if not n%e: break else: r = True return r ## ---------------------------------------- local = locals() ex_isPrime(local, 30) ## ---------------------------------------- def step02(): """if n<2: return r""" from math import sqrt def isPrime(n): r = False if n<2: return r m = int(sqrt(n)) for e in range(2, m+1): if not n%e: break else: r = True return r ## ---------------------------------------- local = locals() ex_isPrime(local, 30) ## ---------------------------------------- def step03(): """def prime(n):""" def prime(n): s = for e in range(n): if isPrime(e): s.append(e) return s from math import sqrt def isPrime(n): r = False if n<2: return r m = int(sqrt(n)) for e in range(2, m+1): if not n%e: break else: r = True return r ## ---------------------------------------- local = locals() ex_prime(local, 30) ## ---------------------------------------- def step04(): """all/any""" def prime(n): return [e for e in range(n) if isPrime(e)] from math import sqrt def isPrime(n): if n<2: return False return all(n%e for e in range(2, int(sqrt(n))+1)) #### return any(not n%e for e in range(2, int(sqrt(n))+1))) ## ---------------------------------------- local = locals() ex_prime(local, 30) ## ---------------------------------------- def step05(): """def filter(seq):""" from math import sqrt def prime(n): s = m = int(sqrt(n)) seq = range(2,n+1); seq = list(seq) e = 2 while e<=m: e, seq = filter(seq) s.append(e) else: s += seq return s def filter(seq): first,rest = seq[0],seq[1:] s = r = first, s for e in rest: if not e%first: continue s.append(e) else: r = first, s return r ## ---------------------------------------- local = locals() ex_prime(local, 30) #### for e in range(30): ex_prime(local, e) ## ---------------------------------------- def step06(): """[e for e in rest if e%first]""" from math import sqrt def prime(n): s = m = int(sqrt(n)) seq = range(2,n+1); seq = list(seq) e = 2 while e <= m: e, seq = filter(seq) s.append(e) else: s += seq return s def filter(seq): first,rest = seq[0],seq[1:] return first, [e for e in rest if e%first] ## ---------------------------------------- local = locals() ex_prime(local, 30) #### for e in range(30): ex_prime(local, e) ## ---------------------------------------- ## ---------------------------------------- def ex_isPrime(local, n): source = ( '''for e in range({0}): if isPrime(e): print(e,end=",") else: print("#") '''.format(n), ) for e in source: print_(e, local) def ex_prime(local, n): X = 'print(prime({0}))'.format(n) print_(X, local, "exec") ## ---------------------------------------- def print_(source, local, mode="single"): print(">>>",source) eval(compile(source,"",mode),globals(),local) ## ======================================== s = "step" DIR = [e for e in dir() if e.startswith(s)] DIR = dict((i,e) for i,e in enumerate(DIR)) DIR = sorted)*1 for k,v in DIR: source = ''' x = eval("%%s.__doc__"%%v) x = (x.split("\\n")[0], x)[s] print("%%%dd: %%s -- %%s"%%(k,v,x)) '''%n eval(compile(source,"","exec")) def do_all(): for k,v in DIR: do(k) def do(k=None): if k is None: ex(); return if k<0: ex(True); return try: k,v = DIR[k] print(">>> #","-"*50,v) eval("%s()"%v) except IndexError: print("(x_x) too bad ... %s"%k) ## ---------------------------------------- from time import ctime from sys import argv, version def inform(n=60): print("="*n) print("Version: %s"%version.split("\n")[0]) print("Module : %s"%argv[0].split("/")[-1]) print("Date : %s"%ctime()) print("="*n) ## ---------------------------------------- from doctest import testmod if __name__=='__main__': inform() testmod() ## ========================================
*1:DIR.items()))( def ex(s=False): n = len("%d"%(len(DIR)-1