程序大多数为自己编写,程序可能不是最优,复杂度不是最好,也有可能存在理解错题意的问题,敬请谅解。

习题内容为高等教育出版社出版的由嵩天教授等编写的《Python语言程序设计基础(第2版)》中的习题内容。

第二章:Python程序实例解析

 

1.请使用turtle库函数绘制一个包含9个同心圆的靶盘

import turtledef 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 = 0if 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 turtlecolor=['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 turtledef 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 turtleturtle.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.165print("你现在在地球上的体重为{:.2f}kg,你现在在月球的体重为{:.2f}kg"\      .format(weight,wei_mon))for i in range(11):    weight +=0.5wei_mon = weight*0.165print("你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=1try:    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 stringfrom collections import namedtupledef 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+=1print("不改选择:{}".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("输入错误,请严格按照规定输入信息!")