8-2
f = int(raw_input('from: '))
t = int(raw_input('to: '))
i = int(raw_input('increment: '))
for n
8-4
def isprime(num):
for i in range(2, num):
if num % i == 0:
return False
return True
8-5
def getfactors(num):
factors = []
for i in range(1, num+1):
if num % i == 0:
factors.append(i)
return factors
8-6
from getfactors import getfactors
from isprime import isprime
def prime_factorization(num):
prime_arr = []
factors = getfactors(num)
primes = [i for i in factors if isprime(i)]
j = 1
while not isprime(num):
factors = getfactors(num)
if primes[j] in factors:
prime_arr.append(primes[j])
num = num / primes[j]
else:
j += 1
prime_arr.append(num)
return prime_arr
print prime_factorization(20)
print prime_factorization(50)
print prime_factorization(1)
8-7
from getfactors import getfactors
def isperfect(num):
factors = getfactors(num)
factors_sum = 0
for factor in factors:
factors_sum += factor
if factors_sum - num == num:
return 1
else:
return 0
print isperfect(6)
print isperfect(1)
print isperfect(100)
8-8
def factorial(num):
N = 1
for n in range(1,num+1):
N = N * n
return N
print factorial(4)
8-9
def fibonacci(N):
num1 = 1
num2 = 1
for i in range(1,(N+1)/2):
num2 = num1 + num2
num1 = num1 + num2
if N % 2 == 0 :
return num1
else:
return num2
print fibonacci(1)
print fibonacci(2)
print fibonacci(3)
print fibonacci(4)
print fibonacci(5)
8-10
#!/user/bin/env python
# -*- coding:utf-8 -*-
import string
words = "It is a sentence to check the function."
# 只統計常規情況的元音和輔音
def counting(sentences):
# 統一大寫方面後面情況討論
sentences = sentences.upper()
# 用列表解析計算句子的單詞書
words = len([word for word in sentences.split()])
vowels = 0
consonnants = 0
for i in sentences:
if i in string.uppercase:
if i in ['A','E','I','O','U']:
vowels += 1
else:
consonnants += 1
return 'vowels %s, consonnants %s, words %s' % (vowels,consonnants,words)
print counting(words)
8-11
total = raw_input('Enter total number of names')
namelist = []
time = 0
wrongcount = 1
while time < int(total) or wrongcount > 3:
name = raw_input('Please enter name[%s](Lastname, Firstname): '%time).strip()
if ',' not in name:
print '>>Wrong format ... should be Last, First.'
print '>>You have done this %s time(s) already. Input again ...'%wrongcount
wrongcount += 1
else:
namelist.append(name)
time += 1
print 'The sorted list (by last name) is:'
for name in sorted(namelist):
print name
8-12
#!/user/bin/env python
# -*- coding:utf-8 -*-
def dec2other(startnum, endnum):
print '-------------------------------'
print '\tstart:%s\n\tend:%s'%(startnum, endnum)
Ascii = ''
if endnum>32 and endnum<127:
Ascii = 'ASCII'
dl,bl,ol,hl,al = \
len(str(endnum))+5,len(bin(endnum))+3,len(oct(endnum))+4,len(hex(endnum))+3,len(Ascii)
# 輸出標題,居中
print 'DEC'.center(dl),'BIN'.center(bl),'OCT'.center(ol),'HEX'.center(hl),Ascii.center(al)
# 輸出橫線
print '-'*(sum([dl,bl,ol,hl,al])+5)
ascii = ''
for i in range(startnum, endnum + 1):
print str(i).center(dl), bin(i)[2:].center(bl),oct(i)[1:].center(ol),hex(i)[2:].center(hl),ascii.center(al)
if i>32 and i <127:
ascii = chr(i)
dec2other(9, 18)
dec2other(26, 41)