程序大多数为自己编写,程序可能不是最优,复杂度不是最好,也有可能存在理解错题意的问题,敬请谅解。
习题内容为高等教育出版社出版的由嵩天教授等编写的《Python语言程序设计基础(第2版)》中的习题内容。
第二章:Python程序实例解析
1.请使用turtle库函数绘制一个包含9个同心圆的靶盘
import turtle
def bapan(radius):
turtle.penup()
turtle.goto(0,-radius)
turtle.pendown()
turtle.circle(radius,360)
turtle.pensize(2)
turtle.pencolor('red')
for i in range(10,100,10):
bapan(i)
turtle.done()
程序练习题2.1 实例1的修改。改造实例代码1.1,采用eval(input(<提示内容>))替换现有输入部分,并使输出的温度值为正数
TempStr = eval('input("请输入需要转换的温度:")')
if TempStr[-1] in ['F','f']:
C=int((eval(TempStr[0:-1])-32)/1.8)
print("转换后的温度速{:d}C".format(C))
elif TempStr[-1] in ['C','c']:
F=int(1.8*eval(TempStr[0:-1])+32)
print("转换后的温度速{:d}F".format(F))
else:
print("ERROR")
程序练习题2.2 汇率兑换程序。按照温度转换程序的设计思路,按照1美元=6.36人民币汇率编写一个美元和人民币双向兑换程序。
value = input("请输入要转换的数额,
务必在输入数值前输入USD或RMB以表明货币类型:\n")
result = 0
if value[0:3] == "RMB":
result = eval(value[3:]) / 6.36
print("USD{:.2f}".format(result))
elif value[0:3] == "USD":
result = (eval(value[3:])* 6.36)
print("RMB{:.2f}".format(result))
程序练习题2.3 实例2的修改。改造实例代码2.1,绘制一条彩色蟒蛇,即在绘制Python蟒蛇的每一小段,画笔的绘制颜色会发生变化。
import turtle
color=['grey','darkgreen','gold','violet']
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(14)
turtle.seth(-40)
for i in range(4):
turtle.pencolor(color[i])
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.pencolor("red")
turtle.circle(40, 80/2)
turtle.pencolor("blue")
turtle.fd(40)
turtle.pencolor("pink")
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()
程序练习题2.4 等边三角形的绘制。使用turtle库中的turtle.fd()函数和turtle.seth()函数绘制一个等边三角形。
import turtle
def Dengbian(N):
turtle.fd(N)
turtle.seth(120)
turtle.fd(N)
turtle.seth(240)
turtle.fd(N)
turtle.done()
Bc= input("请输入边长")
Dengbian(eval(Bc))
程序练习题2.8 正方形螺旋线的绘制。利用turtle库绘制一个正方形螺旋线。
import turtle
turtle.pensize(2)
turtle.pencolor("blue")
for i in range(90):
turtle.forward(2*i)
turtle.left(90)
turtle.done()
第三章:基本数据类型
实例3.2反转:凯撒密码解密
miwen = input("请输入密文:")
for p in miwen:
if ord("a")<=ord(p)<=ord("z"):
print(chr(ord("a")+(ord(p)-ord("a")-3)%26),end='')
else:
print(p,end='')
习题3.1 重量计算。月球上物体的体重是地球上的16.5%没加入你在地球上每年增长0.5kg,编写程序输出未来10年你在地球和月球上的体重状况。
weight = input("请输入你的体重(以千克为单位)")
weight = eval(weight)
wei_mon = weight*0.165
print("你现在在地球上的体重为{:.2f}kg,你现在在月球的体重为{:.2f}kg"\
.format(weight,wei_mon))
for i in range(11):
weight +=0.5
wei_mon = weight*0.165
print("你10年后在地球上的体重为{:.2f}kg,你10年后在月球的体重为{:.2f}kg"\
.format(weight,wei_mon))
习题3.4 回文数判断。设n是以任意自然数,如果n的个位数字反向排列所得到的结果与n相等,则n被称为回文数。从键盘输入一个5位数字,判断其是不是回文数。
num = input("请输入一个五位数字")
if(len(num)!=5):
print("不是回文数")
else:
if((eval(num[0])==eval(num[4])) and (eval(num[1])==eval(num[3]))):
print("是回文数")
else:
print("不是回文数")
第四章:程序的控制结构
习题4.1(按照习题4.4和4.5来做)猜数字游戏。让计算机随机产生一个预设数字,范围在0-9以内,让用户通过键盘输入所猜的数字,如果大于预设的数,显示“遗憾,太大了”;如果小于预设的数,显示“遗憾,太小了”,如此循环,直到猜中该数,显示“预测N次,终于猜中了!”。当用户输入的不是整数时,程序会自动退出执行并显示“输入内容必须为整数!”
from random import *
def input_num():
you_num = input("请输入您猜的数字")
you_num = eval(you_num)
return you_num
num = randint(0,9)
you_num = input_num()
print(num)
n=1
try:
while(num!=you_num):
n += 1
if(you_num<num):
print("遗憾,太小了")
if(you_num>num):
print("遗憾,太大了")
you_num = input_num()
print("预测{}次,终于猜中了!".format(n))
except:
print("输入内容必须为整数!")
习题4.2 统计不同字符个数。用户从键盘输入一行字符,统计并输出其中英文字符、数字和其它字符的个数。
import string
from collections import namedtuple
def str_count(s):
count_en = count_dg = count_sp = count_zh = count_oth = 0
s_len = len(s)
for c in s:
#英文
if c in string.ascii_letters:
count_en += 1
#数字
elif c.isdigit():
count_dg += 1
#空格
elif c.isspace():
count_sp += 1
#中文
elif c.isalpha():
count_zh += 1
#其它特殊字符
else:
count_oth += 1
total_chars = count_zh + count_en + count_sp + count_dg + count_oth
if total_chars == s_len:
return namedtuple('Count', ['total', 'zh', 'en', 'space',
'digit', 'othher'])(s_len, count_zh, count_en, count_sp, count_dg, count_oth)
else:
print('Something is wrong!')
return None
return None
s = input("请输入你想统计的字符串。")
count = str_count(s)
print(s, end='\n\n')
print('该字符串共有 {} 个字符,其中有 {} 个汉字,{} 个英文,{} 个空格,{}
个数字,{} 个标点符号。'.format(count.total, count.zh, count.en,
count.space, count.digit, count.othher))
习题4.6 羊车门问题。有3扇关闭的门,一扇门后面听着汽车,其余门后是山羊,只有主持人直到每扇门后面有什么,参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。请问:才塞着更换选择后能否增加猜中汽车的机会?其使用random库对这个随机事件进行预测,分别给出参赛者改变选择和坚持选择获胜的概率。
from random import*
TIMES = input("请输入你想做的测试次数")
TIMES = eval(TIMES)
my_first_choice_n=0#初始化不改选择的次数
my_change_choice_n=0#初始化更改选择的次数
for i in range(TIMES):
a="羊1","羊2","车"
car_inDoor=choice(a)
my_guess=choice(a)
if car_inDoor==my_guess:
my_first_choice_n+=1
else:
my_change_choice_n+=1
print("不改选择:{}".format(my_first_choice_n/TIMES))
print("更改选择:{}".format(my_change_choice_n/TIMES))
习题4.7 用异常处理改造实例1,使其能够接受并处理用户的任何输入。
TempStr = input("请输入带有符号的温度值:")
try:
if TempStr[-1] in ['F','f']:
C=(eval(TempStr[0:-1])-32)/1.8
print("转换后的温度是{:.2f} C".format(C))
elif TempStr[-1] in ['C','f']:
F=(eval(TempStr[0:-1]))*1.8+32#[0:-1]代表从第一位到倒数第二位
print("转换后的温度是{:.2f}F".format(F))
else:
print("Format Error!!")
except:
print("输入错误,请严格按照规定输入信息!")


文章评论