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)
