python程序语言设计基础(第二版)

课后习题答案解析(56页程序设计题)

2.1 题

实例1的修改。改造实例代码1.1,采用eval(input(<提示内容>))替换现有的输入部分,并使输出的温度值为整数。

实例1代码如下:

TempStr = eval(input("请输入带无单位的温度值:"))
Unit = input("请输入单位:")
if Unit in ['F','f'] :
    C = (TempStr - 32)/1.8
    print("{:.2f}C".format(C))
elif Unit in ['C','c'] :
    F = 1.8 * TempStr +32
    print("{:.2f}F".format(F))
else :
    print("格式错误")

由于eval函数的作用是将input函数获取到的字符转化为Python语句,因此只需要在input函数外嵌套一个eval函数,但需要注意的是,eval无法转换混合的字符串,例如输入45F,eval函数是无法将其转换的,需要使用新的变量unit来存放单位;输出温度为整数只需要将实例1中的2f改为0f,代表着这个槽位置只保留整数输出

#这里使用了一个异常捕获,你也可以使用if elif else 格式来写
try:
       TempStr=eval(input("请输入无符号的温度值:"))
       Unit=input("请输入温度单位:")
       if Unit in ['F','f']:
              C=(TempStr-32)/1.8
              print("转换后的温度为{:.0f}C".format(C))
       elif Unit in ['C','c']:
              F=1.8*TempStr+32
              print("转换后的温度为{:.0f}F".format(F))
except:
       print("输入的格式错误")
       

2.2 题

汇率兑换程序。按照温度转换程序的设计思路,按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序。

只要按照1美元=6人民币这个规则,参照实例1就可以直接修改,无需多说

Money=input("请输入带符号的金钱值:")
if Money[-1] in ['R','r']:
       #这里注意一定要用eval转换,不然获取到的依旧是字符串,不能用于计算
       Dollor=eval(Money[0:-1])*6
       print("转换后的金钱值为{:.2f}$".format(Dollor))
elif Money[-1] in '$':
       Renminbi=eval(Money[0:-1])/6
       print("转换后的温度为{:.2f}R".format(Renminbi))
else:
       print("输入的格式错误")

2.3 题

实例2的修改,改造实例代码2.1,绘制一条彩色蟒蛇,即在绘制python蟒蛇的每个小段时,画笔的绘制颜色会发生变化。

实例2代码如下:

import turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
    turtle.circle(40,80)
    turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)

由于绘制一条彩色蟒蛇需要多种颜色出现,因此要使用一个列表color来存放即将绘制的各个颜色,然后使用下标来索引每一个颜色,放入每一小段绘制循环中即可出现彩色蟒蛇

代码答案:

import turtle
turtle.setup(650,350,200,200)
color=['red','green','blue','yellow']
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.seth(-40)
for i in range(4):
    turtle.pencolor(color[i])
    turtle.circle(40,80)
    turtle.circle(-40,80)
turtle.pencolor("purple")
turtle.circle(40,80/2)
turtle.fd(40)
turtle.pencolor("grey")
turtle.circle(16,180)
turtle.fd(40*2/3)

2.4 题

等边三角形的绘制。使用turtle库中的turtle.fd()函数和turtle.seth()函数绘制一个叠加等边三角形,效果如图2.8所示。

 turtle.seth()用于调整海龟的绘制角度,turtle.fd()用于海龟的前进长度

代码答案:

import turtle
turtle.setup(600,600,500,200)
turtle.penup()
turtle.seth(90)
turtle.fd(200)
turtle.pendown()
turtle.pensize(5)
turtle.pencolor("black")
turtle.seth(-60)
turtle.fd(300)
turtle.seth(180)
turtle.fd(300)
turtle.seth(60)
turtle.fd(300)

2.5 题

叠加等边三角形的绘制,使用turtle库中的turtle.fd()函数和turtle.seth()函数绘制一个叠加等边三角形,效果如图2.9所示

 在2.4的基础上增加代码:

turtle.penup()
turtle.seth(-120)
turtle.fd(150)
turtle.pendown()
turtle.seth(0)
turtle.fd(150)
turtle.seth(-120)
turtle.fd(150)
turtle.seth(120)
turtle.fd(150)

代码答案:

import turtle
turtle.setup(600,600,500,200)
turtle.penup()
turtle.seth(90)
turtle.fd(200)
turtle.pendown()
turtle.pensize(5)
turtle.pencolor("black")
turtle.seth(-60)
turtle.fd(300)
turtle.seth(180)
turtle.fd(300)
turtle.seth(60)
turtle.fd(300)
turtle.penup()
turtle.seth(-120)
turtle.fd(150)
turtle.pendown()
turtle.seth(0)
turtle.fd(150)
turtle.seth(-120)
turtle.fd(150)
turtle.seth(120)
turtle.fd(150)

2.6 题

无角正方形的绘制。利用turtle库函数绘制一个没有角的正方形,效果如图2.10所示

 这里由于使用单一动作太过繁琐,因此可以采用更加简洁的for循环方法,设置好下面的横线绘制动作,只需改变每一次绘制的角度就可以完美实现了

代码答案:

import turtle
turtle.setup(600,600,300,300)
turtle.penup()
turtle.seth(-90)
turtle.fd(250)
turtle.seth(-180)
turtle.fd(150)
turtle.pendown()
turtle.pensize(5)
turtle.pencolor("black")
turtle.seth(0)
for i in range(90,450,90):
    turtle.penup()
    turtle.fd(70)
    turtle.pendown()
    turtle.fd(200)
    turtle.penup()
    turtle.fd(70)
    turtle.seth(i)

2.7 题

六角形的绘制,利用turtle库绘制一个六角形,效果如图2.11所示

 代码答案:

import turtle
turtle.setup(620,600,300,300)
turtle.penup()
turtle.seth(-180)
turtle.fd(250)
turtle.pendown()
turtle.pensize(5)
turtle.pencolor("black")
turtle.seth(30)
turtle.fd(480)
turtle.seth(-90)
turtle.fd(480)
turtle.seth(150)
turtle.fd(480)
turtle.penup()
turtle.seth(30)
turtle.fd(160)
turtle.pendown()
turtle.seth(90)
turtle.fd(160)
turtle.seth(-30)
turtle.fd(480)
turtle.seth(-150)
turtle.fd(480)
turtle.seth(90)
turtle.fd(320)

2.8 题

正方形螺旋线的绘制,利用turtle库绘制一个正方形螺旋线,效果如图2.12所示

 只需要使用for循环不断绘制+90度和+5长度的线条就可以实现了

代码答案:

import turtle
turtle.setup(600,600,300,300)
turtle.pendown()
turtle.pensize(3)
turtle.pencolor("black")
turtle.seth(90)
for i in range(5,300,5):
    turtle.seth(i*18)
    turtle.fd(i)

  • 17
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值