python核心編程第八章練習

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)

發佈了30 篇原創文章 · 獲贊 7 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章