python核心程式設計 第八章 8 15 練習

2021-06-22 10:50:04 字數 4554 閱讀 1711

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 8–2. 迴圈. 編寫乙個程式, 讓使用者輸入三個數字: (f)rom, (t)o, 和 (i)ncrement .

# 以 i為步長, 從 f 計數到 t , 包括 f 和 t . 例如, 如果輸入的是 f == 2,

# t == 26, i == 4 , 程式將輸出 2, 6, 10, 14, 18, 22, 26.

f = int(raw_input("please input from: "))

t = int(raw_input("please input to: "))

i = int(raw_input("please input increment: "))

print range(f, t+i, i)

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 8–3. range() . 如果我們需要生成下面的這些列表, 分別需要在 range() 內建函式中提供那些引數?

# (a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# (b) [3, 6, 9, 12, 15, 18]

# (c) [-20, 200, 420, 640, 860]

print range(0, 10)

print range(3, 21, 3)

print range(-20, 980, 220)

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 8–4. 素數. 我們在本章已經給出了一些**來確定乙個數字的最大約數或者它是否是乙個

# 素數. 請把相關**轉換為乙個返回值為布林值的函式,函式名為 isprime() .

# 如果輸入的是乙個素數, 那麼返回 true , 否則返回 false .

import math

def isprime(number):

num = int(math.sqrt(number))

while num > 1:

if number % num == 0:

return false

num -= 1

else:

return true

print zip(range(1, 12), (isprime(x) for x in range(1, 12)))

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 8–5. 約數. 完成乙個名為 getfactors() 的函式. 它接受乙個整數作為引數,

# 返回它所有約數的列表, 包括 1 和它本身.

def getfactors(number):

factorslist = [number]

num = number / 2

while num > 0:

if number % num == 0:

num -= 1

return factorslist

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 8–6. 素因子分解. 以剛才練習中的 isprime() 和 getfactors() 函式為基礎編寫乙個函式,

# 它接受乙個整數作為引數, 返回該整數所有素數因子的列表. 這個過程叫做求素因子分解,

# 它輸出的所有因子之積應該是原來的數字. 注意列表裡可能有重複的元素. 例如輸入 20 ,

# 返回結果應該是 [2, 2, 5] .

import math

def isprime(number):

num = int(math.sqrt(number))

while num > 1:

if number % num == 0:

return false

num -= 1

else:

return true

def getfactors(number):

factorslist = [number]

num = number / 2

while num > 0:

if number % num == 0:

num -= 1

return factorslist

def getprimefactors(number):

primefactors =

if isprime(number):

return primefactors

else:

factors = getfactors(number)

factor = factors[1]

if isprime(factor):

prime = getprimefactors(number/factor)

elif isprime(number/factor):

prime = getprimefactors(factor)

else:

prime = getprimefactors(factor)

primefactors += prime

primefactors.sort()

return primefactors

print getprimefactors(20)

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 8–7. 全數. 完全數被定義為這樣的數字: 它的約數(不包括它自己)之和為它本身.

# 例如: 6的約數是 1, 2, 3, 因為 1 + 2 + 3 = 6 , 所以 6 被認為是乙個完全數.

# 編寫乙個名為 isperfect()的函式, 它接受乙個整數作為引數, 如果這個數字是完全數,

# 返回 1 ; 否則返回 0 .

def getfactors(number):

factorslist = [number]

num = number / 2

while num > 0:

if number % num == 0:

num -= 1

return factorslist

def isperfect(number):

factorlist = getfactors(number)

factorlist.remove(number)

if sum(factorlist) == number:

return 1

else:

return 0

for i in range(1, 1000):

if isperfect(i) == 1:

print i

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 8–8. 階乘. 乙個數的階乘被定義為從 1 到該數字所有數字的乘積. n 的階乘簡寫為 n! .

# 寫乙個函式, 指定n, 返回 n! 的值.

def getfactorial(number):

product = 1

for i in range(2, number+1):

product *= i

else:

return product

print getfactorial(10)

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 8–9. fibonacci 數列. fibonacci 數列形如 1, 1, 2, 3, 5, 8, 13, 21, 等等. 也就是說,

# 下乙個值是序列中前兩個值之和. 寫乙個函式, 給定 n , 返回第 n 個 fibonacci 數字.

# 例如, 第1 個 fibonacci 數字是 1 , 第 6 個是 8 .

def getfibonacci(number):

if number == 1 or number == 2:

return 1

else:

befornumbers = [1, 1]

for i in range(3, number):

fibonacci = sum(befornumbers)

befornumbers.pop(0)

else:

return sum(befornumbers)

print getfibonacci(10)

Python核心程式設計 第八章

1.三元操作符 x,y 4,3 if x y smaller x else smaller y smaller 3 smaller 0 smaller x smaller 3 smaller x if x smaller 3x if c else y 2.迭代序列有三種方法。通過序列項迭代 name...

Python核心程式設計 第八章練習

再這個題中,我試圖用xrange代替range來解決問題,但是結果輸出了 xrange 2,26,4 這樣奇怪的答案。然後才理解了書上的 xrange不產生列表 這句話的含義。python ifname main numbers raw input please input from,to,incr...

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...