1. 程式人生 > >python自學解題彙總,持續更新

python自學解題彙總,持續更新

還是看書自學好,關鍵還得找到好書,真是困難,開始連互動模式和指令碼模式都分辨不清楚,走了很多彎路。慢慢的才感覺自己開始步入正軌。

廢話不多說,正式開始 練習1 寫一個名叫right_justify的函式,形式引數是名為s的字串,將字串列印,前面流出足夠的 空格,讓字串最後一個字幕在第70列顯示。

>>> def right_justify(s):
...     print((71-len(s))*(' ')+s);

輸出結果

>>> right_justify('abc')
                                                                    abc

也沒人幫我檢查,不知道對不對,方程大概是len(s)-1+x=70. x是空格的數目。

練習2 你可以把一個函式物件作為一個值賦給一個變數或者作為一個實際引數來傳遞給其他函式。 比如,do_twice就是一個把其他函式物件當做引數的函式,它的功能是呼叫物件函式兩次:

def	do_twice(f):
	f()
	f()											

下面是另一個例子,這裡用了do_twice來呼叫一個名叫print_spam的函式兩次。

def print_spam():
print('spam')
do_twice(print_spam)

1.把上面的例子寫成指令碼然後試一下。 2.修改一下do_twice這個函式,讓它接收兩個實際引數,一個是函式物件,一個是值,呼叫對 象函式兩次,並且賦這個值給物件函式作為實際引數。 3.把print_twice這個函式的定義複製到你的腳本里面,去本章開頭找一下這個例子哈。 4.用修改過的這個do_twice來呼叫print_twice兩次,用字串『spam』傳遞過去作為實際參 數。 5.定義一個新的函式,名字叫做do_four,使用一個函式物件和一個值作為實際引數,呼叫這 個物件函式四次,傳遞這個值作過去為物件函式的一個形式引數。這個函式體內只要有兩個 語句就夠了,而不是四個。 1.

def do_twice(f):
    f()
    f()

def print_spam():
    print('spam')
do_twice(print_spam)
def do_twice(func,arg):
	"""runs a function twice.
	func: function object
	arg: argument passed ti the function
	"""
	func(arg)
	func(arg)
def print_twice(arg):
	"""prints the argument twice.
	arg: anything printable
	"""
	print(arg)
	print(arg)
do_twice(print_twice,'spam')
def do_four(func,arg):
	do_twice(func,arg)
	do_twice(func,arg)

(1)寫一個函式叫做square(譯者注:就是正方形的意思),有一個名叫t的引數,這個t是一個 turtle。用這個turtle來畫一個正方形。寫一個函式呼叫,把bob作為引數傳遞給square,然後 再執行這個程式。

import turtle
bob=turtle.Turtle()
def square(t):
    for i in range(4):
        t.fd(100)
        t.lt(90)

       
square(bob)

(2) 給這個square函式再加一個引數,叫做length(譯者注:長度)。把函式體修改一下,讓長 度length賦值給各個邊的長度,然後修改一下呼叫函式的程式碼,再提供一個這個對應長度的參 數。再次執行一下,用一系列不同的長度值來測試一下你的程式。


import turtle
bob=turtle.Turtle()
def square(t,length):
    for i in range(4):
        t.fd(length)
        t.lt(90)

       
square(bob,165)#165隨便改成其他數字

(3) 複製一下square這個函式,把名字改成polygon(譯者注:意思為多邊形)。另外新增一個 引數叫做n,然後修改函式體,讓函式實現畫一個正n邊的多邊形。提示:正n多邊形的外角為 360/n度。


import turtle
bob=turtle.Turtle()
def polygon(t,length,n):
    for i in range(n):
        t.fd(length)
        t.lt(360/n)

       
polygon(bob,165,5)#165和5隨便改成其他數字

(4) 在寫一個叫做circle(譯者注:圓)的函式,也用一個turtle類的物件t,以及一個半徑r,作 為引數,畫一個近似的圓,通過呼叫polygon函式來近似實現,用適當的邊長和邊數。用不同 的半徑值來測試一下你的函式。

import math
import turtle
bob=turtle.Turtle()
def polygon(t,length,n):
    for i in range(n):
        t.fd(length)
        t.lt(360/n)
def circle(r,n):
    circumference=2*math.pi*r
    length=circumference/n
    polygon(bob,length,n)
circle(5,50)

(5)在circle基礎上做一個叫做arc的函式,在circle的基礎上新增一個angle(譯者注:角度)變 量,用這個角度值來確定畫多大的一個圓弧。用度做單位,當angle等於360度的時候,arc函 數就應當畫出一個整團了。

import math
import turtle
bob=turtle.Turtle()
def polygon(t,length,step_angle,n):
    for i in range(n):
        t.fd(length)
        t.lt(step_angle)
def circle(r,angle):
    circumference=2*math.pi*r*angle/360
    n=int(circumference/3)+1
    length=circumference/n
    step_angle=angle/n
    polygon(bob,length,step_angle,n)

circle(100,60)