小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Programming language
  4. Python
  5. 正文

《Python语言程序设计基础》课后习题程序整理(第2~4章)

2018年5月17日 5112点热度 0人点赞 0条评论

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

习题内容为高等教育出版社出版的由嵩天教授等编写的《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("输入错误,请严格按照规定输入信息!")

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: Python python学习
最后更新:2018年5月17日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程小奥看房之鸿荣源珈誉府论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
中考攻坚战•最终战役 我的清明节假期 周五去陈毅 Python语言程序设计(第6周)知识点整理 山东科技大学隆重举行2017届毕业生毕业典礼 决定还是用这个风格吧
标签聚合
鸟哥的linux私房菜 生活 linux leetcode Python python学习 Java 算法 高中 学习
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 9 个月前(10月20日) :wink:
niming 发布于 10 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号