Python语言程序设计基础 第二版(嵩天著)课后答案第二章

时间:2021-1-18 作者:admin

2.2思考与练习(p46)
答案:

2.4:C (不能以数字开始)
2.5:保留字即关键字(p39)
2.6:

print (input("")) #简单的输入输出

2.7:简单点说就是无法区分变量名和数字类型。
具体解释:
如果允许变量名开头是数字,则无法区分变量名和数字类型,例如:如果变量名 091合法,则程序无法区分这个变量和数字 091。另外,有些数字可能含有字母,如浮点数 1E10。程序设计语言不能存在歧义,因此,需要约定变量名开头不能是数字,以便区分变量与数字
2.3思考与练习(p49)
答案:
原程序运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
2.8:蛇的颜色变为粉红色
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
2.9:增加了蛇的长度,由4变为5
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
2.10:会有一条黑色的直线线从起始位置向左边延伸250像素,但由于画笔尺寸为25较粗,所以运行结果视觉上并不会有变化
Python语言程序设计基础 第二版(嵩天著)课后答案第二章

Python语言程序设计基础 第二版(嵩天著)课后答案第二章
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
2.4思考与练习(p55)
2.11:请使用turtle库的turtle.fd()函数绘制一条直线。

import turtle
# turtle.hideturtle()   #可去掉箭头
turtle.fd(200)
turtle.done()

运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章

2.12 请使用turtle库中的turtle.circle()函数绘制一个完整的圆。

import turtle
turtle.hideturtle()   #可去掉箭头
turtle.circle(40)   #圆的半径为40
turtle.done()

运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
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()

运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
此题有更简便的方法,也可先画最里面的圆,再依次向外扩展,代码如下(因为只改了少量代码,就没再注释):

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
运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章

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("输入格式错误")

运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
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)

运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
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()

运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
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()

运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
我水平不行,写不短,只用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()

运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
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()

运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
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()

运行结果:
Python语言程序设计基础 第二版(嵩天著)课后答案第二章
2.9 自定义Python蟒蛇绘制。根据实例2的设计思想,结合读者喜好,绘制一条区别于实例2的Python蟒蛇。
作者的喜好就是换个颜色,把purple换成blue。就这样,因为太简单就不贴代码了。

总结一下:第二章主要还是turtle库的运用,在第一章的结尾,已经贴了turtle的官方解释。但官方的解释始终有点抽象,具体的用法还要在具体的解题运用中感悟。

另外一点题外话,编程语言的学习在我看来还是要自己去写代码,创造属于自己风格的代码。现在的大多数题网上都可以找到答案,但每个人写代码的思路不一样,或许每一题的答案你都可以理解,但你不可能每一次找到的答案都是一个人写出来的,这样很大可能导致只记住了一道题的答案,出现新的问题时,一旦找不到答案就没有自己的思路。所以我认为,面对一个问题,一定要根据自己的知识储备先尝试自己解题,写不出来时再去找答案,理解别人的代码后再用自己的风格写出来。当然看别人的代码最大的好处应该就是可以打开思路,几乎每道题的答案都不唯一,不同的解题方法可以让你的思路更加开阔,不拘泥于一条脑回路。(以上种种仅代表个人看法,如有不同意见,别杠,杠就是你赢。)

注:写博客只是为了当笔记看,有任何问题可以评论说,一起互相交流学习

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。