大家好,小编来为大家解答以下问题,python程序设计题库及答案第二章答案大全,python程序设计题库及答案第二章答案解析,现在让我们一起来看看吧!
2.2思考与练习(p46)
答案:
2.4:C (不能以数字开始)
2.5:保留字即关键字(p39)
2.6:
print (input("")) #简单的输入输出
2.7:简单点说就是无法区分变量名和数字类型。
具体解释:
如果允许变量名开头是数字,则无法区分变量名和数字类型,例如:如果变量名 091合法,则程序无法区分这个变量和数字 091用python绘制满天星100颗。另外,有些数字可能含有字母,如浮点数 1E10。程序设计语言不能存在歧义,因此,需要约定变量名开头不能是数字,以便区分变量与数字
2.3思考与练习(p49)
答案:
原程序运行结果:
2.8:蛇的颜色变为粉红色
2.9:增加了蛇的长度,由4变为5
2.10:会有一条黑色的直线线从起始位置向左边延伸250像素,但由于画笔尺寸为25较粗,所以运行结果视觉上并不会有变化
2.4思考与练习(p55)
2.11:请使用turtle库的turtle.fd()函数绘制一条直线。
import turtle
# turtle.hideturtle() #可去掉箭头
turtle.fd(200)
turtle.done()
运行结果:
2.12 请使用turtle库中的turtle.circle()函数绘制一个完整的圆。
import turtle
turtle.hideturtle() #可去掉箭头
turtle.circle(40) #圆的半径为40
turtle.done()
运行结果:
2.13请使用turtle库函数绘制一个包含9个同心圆的靶盘。
from turtle import *
pensize(5) #画笔宽度5
pencolor("red") #画笔颜色为红色
penup() #包括以下两行只是因为圆的半径太大需要全屏才能看见(可能因为我电脑尺寸太小),我又懒得全屏,所以让画笔下移200像素,可注释掉
goto(0,-200)
pendown()
for i in range(200,20,-20):
circle(i)
left(90) #画笔左转90°,即向上,便于下边上移20像素
penup() #penup(),pendown()分别对应抬起画笔,落下画笔,如果直接fd(20)则会留下一条直线,课本p51有简单解释
fd(20) #画笔移动20像素
pendown()
right(90) #再右转回来
hideturtle() #取消掉最后的画笔,如不介意也可注释掉
done()
运行结果:
此题有更简便的方法,也可先画最里面的圆,再依次向外扩展,代码如下(因为只改了少量代码,就没再注释):
from turtle import *
pensize(5)
pencolor("red")
j = 20
for i in range (10):
circle(i * j)
right(90)
penup()
fd(j)
left(90)
pendown()
hideturtle() #取消掉最后的画笔,如不介意也可注释掉
done()
程序练习题:
2.1
实例1的修改。改造实例代码1.1,采用eval(input(<提示内容>))替换现有的输入部分,并使输出的温度值为整数。
TempStr = eval(input("请输入温度值")) #eval可将字符串转化成字典、列表和元组
Str = input("请输入温度值符号F或者C: ")
if Str in ['F','f']:
c = (TempStr-32)/1.8
print("转化后的温度是{:.0f}".format(c)) #输出为整数就是{:.0f}
elif Str in ['C','c']:
F = 1.8*TempStr + 32
print("转化后的温度是{:.0f}".format(F))
else:
print("输入格式错误")
关于eval的使用:eval
运行结果:
2.2汇率兑换程序。按照温度转换程序的设计思路,按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序。
TempStr = eval(input("请输入货币值:")) #eval可将字符串转化成字典、列表和元组
Str = input("请输入货币符号$或者¥(美元为$,人民币为¥):")
if Str in ['$']:
c = TempStr*6
print("转化后的人民币是{:.2f}¥".format(c)) #因为货币值不一定为整数,因此保留两位小数
elif Str in ['¥']:
c = TempStr/6
print("转化后的美元是{:.2f}$".format(c))
else:
print("输入格式错误")
运行结果:
2.3 实例2的修改。改造实例代码2.1,绘制一条彩色蟒蛇,即在绘制Python蟒蛇的每个小段时,画笔的绘制颜色会发生变化。
import turtle
turtle.setup(650,350,200,200) #窗口位置setup(width, height, startx, starty)
#width -- 如为一个整型数值,表示大小为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 50%
#height -- 如为一个整型数值,表示高度为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 75%
#startx -- 如为正值,表示初始位置距离屏幕左边缘多少像素,负值表示距离右边缘,None 表示窗口水平居中
#starty -- 如为正值,表示初始位置距离屏幕上边缘多少像素,负值表示距离下边缘,None 表示窗口垂直居中
turtle.penup()
turtle.fd(-250) #画笔左移250像素
turtle.pendown()
turtle.pensize(25) #画笔宽度25
turtle.seth(-40) #设置画笔朝向 seth(X),X为角度,逆时针为正,即最上边为90.最下边为270/-90
turtle.pencolor("purple")
for i in range(4):
turtle.circle(40,80) #circle(radius(半径), extent(弧度), steps(以radius为半径圆的内切多边形边数))
turtle.circle(-40,80)
if(i%2==0): #判断段数是否为偶数,若为偶数及为蓝色
turtle.pencolor("blue")
else: #从第二段开始,若为奇数段即为黄色
turtle.pencolor("yellow")
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)
运行结果:
2.4等边三角形的绘制。使用turtle库中的turtle.fd()函数和turtle.seth()函数绘制一个等边三角形。
from turtle import *
pensize(5) #画笔宽度25
pencolor("red")
fd(200) #三角形边长60
seth(120) #旋转角度为120
fd(200)
seth(-120)
fd(200)
done()
运行结果:
2.5叠加等边三角形的绘制。使用turtle库中的turtle.fd()函数和turtle.seth()函数绘制一个叠加等边三角形。
from turtle import *
pensize(5) #画笔宽度25
pencolor("red")
seth(-120)
fd(100)
seth(0)
fd(100)
seth(120)
fd(100)
seth(0)
fd(100)
seth(-120)
fd(100)
seth(0)
fd(100)
seth(120)
fd(200)
seth(-120)
fd(100)
seth(0)
done()
运行结果:
我水平不行,写不短,只用seth()和fd()实在太长了。若它的小箭头不是在这个位置这个方向。用right,abs(pos())会简短一点代码。等我再学习学习,有更简便的方法再更新(这个的关键其实就是几何问题,只要算好角度,其实很简单)
2.6 五角正方形的绘制。利用turtle库函数绘制一个没有角的正方形。
from turtle import *
pensize(5) #画笔宽度25
pencolor("red")
for i in range(3): #也可以直接把3改为4,去掉下面的四行。这样跟课本上的区别就是少了个小箭头,(我这个强迫症就非要跟书上一样)
penup()
fd(40)
pendown()
fd(160)
penup()
fd(40)
pendown()
left(90)
penup()
fd(40)
pendown()
fd(160)
done()
运行结果:
2.8正方形螺旋线的绘制。利用turtle库绘制一个正方形螺旋线。
from turtle import *
pensize(5) #画笔宽度25
pencolor("red")
for i in range(6): #画6个三角形
fd(100) # 六角形边长100
left(120)
fd(100)
left(120)
fd(100)
left(120) # 画完一个三角形
fd(100)
right(60) # 正六边形一个内角120°,因此转60度换方向
done()
运行结果:
2.8 正方形螺旋线的绘制。利用turtle库绘制一个正方形螺旋线。
from turtle import *
pensize() #这个画笔不宜太宽,就没设置尺寸
pencolor("red")
j = 10
n = 5
for i in range(51): #若达到与课本上一样的位置,range(X),X一定要是三的倍数
left(90)
fd(j)
j = j+n
seth(0) #转换小箭头方向(强迫症)
done()
运行结果:
2.9 自定义Python蟒蛇绘制。根据实例2的设计思想,结合读者喜好,绘制一条区别于实例2的Python蟒蛇。
作者的喜好就是换个颜色,把purple换成blue。就这样,因为太简单就不贴代码了。
总结一下:第二章主要还是turtle库的运用,在第一章的结尾,已经贴了turtle的官方解释。但官方的解释始终有点抽象,具体的用法还要在具体的解题运用中感悟。
另外一点题外话,编程语言的学习在我看来还是要自己去写代码,创造属于自己风格的代码。现在的大多数题网上都可以找到答案,但每个人写代码的思路不一样,或许每一题的答案你都可以理解,但你不可能每一次找到的答案都是一个人写出来的,这样很大可能导致只记住了一道题的答案,出现新的问题时,一旦找不到答案就没有自己的思路。所以我认为,面对一个问题,一定要根据自己的知识储备先尝试自己解题,写不出来时再去找答案,理解别人的代码后再用自己的风格写出来。当然看别人的代码最大的好处应该就是可以打开思路,几乎每道题的答案都不唯一,不同的解题方法可以让你的思路更加开阔,不拘泥于一条脑回路。(以上种种仅代表个人看法,如有不同意见,别杠,杠就是你赢。)
注:写博客只是为了当笔记看,有任何问题可以评论说,一起互相交流学习