Python编辑基础课后习题(持续更新)
学习Python编程基础及应用时第2章~第4章部分课后习题的代码整理出来,每题尽量用的本章节内容。
文章目录
- 第二章 变量及简单的数据类型
- 第三章 语法初步
- 第四章 列表
第二章 变量及简单的数据类型
【2-0】 有若干只鸡和兔在同一个笼子里,从上面数有35个头;从下面数有94只脚
(课本中有另外的解法这里未给出)
# 鸡兔同笼
for a in range(0,36):for b in range(0,36-a):if a+b == 35 and 2*a+4*b == 94:print('鸡的数量:',a,'\n兔的数量:',b)
鸡的数量: 23
兔的数量: 12
第三章 语法初步
【3-0】 地球时间-获取并打印系统当前的格林尼治时间,以及自1970年1月1日零时起至现在,总共流逝的秒数
# 地球时间
import timecurTime = time.time() # 获取当前的时间,从1970.1.1.00:00起经过的秒数,float型
totalSeconds = int(curTime)
curSecond = totalSeconds % 60 # 当前秒数=总秒数对60取余
totalMinutes = totalSeconds // 60
curMinute = totalMinutes % 60
totalHours = totalMinutes // 60
curHour = totalHours % 24print('现在是格林尼治时间', curHour, '时', curMinute, '分',curSecond, '秒', '1970.1.1 00:00到现在已经过了', totalSeconds, '秒')
现在是格林尼治时间 13 时 26 分 14 秒 1970.1.1 00:00到现在已经过了 1631021174 秒
上述最后print()中可以用‘/'分成两行写,美观。
或者
# 地球时间
import datetime
curDate = datetime.datetime.now()
print(curDate.year, '-', curDate.month, '-', curDate.day, '\n',curDate.hour, ':', curDate.minute, ':', curDate.second)
print(type(curDate))
2021 - 9 - 7 21 : 39 : 5
<class 'datetime.datetime'>
【3-4/5】 请写出 0x0310 和 0b01111010 的十进制数,0x8F的二进制数
a = 0x0310
b = 0b01111010
c = 0x8F
print('0x0310=', a, '0x01111010=', b)
print('0x8F=', c, '=' bin(c)) # bin()函数用于将数字转换为二进制的字符串
0x0310= 784 0x01111010= 122
0x8F= 143 = 0b10001111
【3-6】 编写程序,从键盘上输入3个整数,输出他们的和与平均值
num_1 = int(input('第1个数:'))
num_2 = int(input('第2个数:'))
num_3 = int(input('第3个数:'))
print('sum=', num_1+num_2+num_3)
print('average=', (num_1+num_2+num_3)/3)
第1个数:99
第2个数:88
第3个数:66
sum= 253
average= 84.33333333333333
【3-7】鸡兔同笼见第二章
【3-8】输入三角形的三条边边长,求三角形面积,其中面积计算用户自定义函数实现。
步骤:1.定义一个函数;
2.判断能构成三角形的条件;
a. p<–(l1+l2+l3)/2;
b. 返回执行结果三角形的面积;
3.否则输出无法构成三角形;
4.输入三角形的三条边;
5.输出通过函数计算的结果;
import mathdef demo(l1, l2, l3):""":param l1::param l2::param l3::return:"""if l1+l2 >= l3 and l1+l3 >= l2 and l2+l3 >= l1:p = (l1+l2+l3)/2return math.sqrt(p*(p-l1)*(p-l2)*(p-l3))else:print('输入的三边无法构成三角形')a = float(input('第1条边'))
b = float(input('第2条边'))
c = float(input('第3条边'))
print(demo(a, b, c))
第1条边3
第2条边4
第3条边5
6.0
【3-9】编程实现华氏温度到摄氏温度的转换,其公式为:c=5/9*(f-32),其中f表示华氏温度,c表示摄氏温度。
第3行中占位符 %s 表示一个字符串;%.1f 表示一个浮点数,保留一位小数
F = float(input('请输入华氏温度:'))
C = 5/9*(F-32)
s = "%s\t%.1f\t%s" % ('对应的摄氏温度:', C, '℃')
print(s)
请输入华氏温度:99
对应的摄氏温度:37.2℃
【3-10】输入圆半径计算周长,面积,圆球表面积,计算结果保留3位小数。
import math
r = float(input('半径:'))
L = math.pi*r*2
s = math.pi*r**2
s_q = 4*math.pi*r**2
print('周长:', L)
print('面积:', s)
print('球表面积:', s_q)
半径:66.6
周长: 418.4601414581604
面积: 13934.722710556742
球表面积: 55738.89084222697
【3-11】读取英里数然后偶将他转换成公里数并显示结果。1英里约等于1.609km
做法类似上面两题,这里不给出代码
【3-12】假设某飞机的加速度是a,起飞的速度是v下述公式可以计算出该飞机起飞所需要的的最短跑道长度:L=v2/(2a)L=v^2/(2a)L=v2/(2a)。编写一个程序,提示用户输入起飞速度vvv(m/sm/sm/s)和加速度aaa(m/s2m/s^2m/s2),计算飞机起飞的最短跑道长度。计算过程宜封装成一个函数,该函数接受参数v,av,av,a,返回计算所得的LLL。
# 计算最短跑到
def l_min(v, a):""":param v::param a::return:"""return v**2/(2*a)num_1 = float(input('请输入起飞速度:'))
num_2 = float(input('请输入加速度:'))
print('起飞速度:', num_1, 'm/s', '\n', '加速度:', num_2, 'm.s^-2')
_var = l_min(num_1, num_2)
print('飞机起飞的最短跑道长度:%.4f' % _var, 'm')
请输入起飞速度:340
请输入加速度:9.8
起飞速度: 340.0 m/s 加速度: 9.8 m.s^-2
飞机起飞的最短跑道长度:5897.9592 mProcess finished with exit code 0
【3-13】输入平面上两个点A和B的坐标,即(x1,y1)和(x2,y2),要求完成如下操作;
1.逐一要求操作者输入A,B两点的坐标
# 画图
import turtledef l_(x_1, y_1, x_2, y_2):""":param x_1::param y_1::param x_2::param y_2::return:"""return ((x_1-x_2)**2+(y_1-y_2)**2)**(1/2)x1 = float(input('点A的横坐标:'))
y1 = float(input('点A的纵坐标:'))
x2 = float(input('点B的横坐标:'))
y2 = float(input('点B的纵坐标:'))
print('AB两点之间的距离:%.4f' % l_(x1, y1, x2, y2))turtle.screensize(800, 600, 'green')
t = turtle.Pen()
t.goto(x1, y1)
t.pendown()
t.write('%.4f' % l_(x1, y1, x2, y2))
t.goto(x2, y2)
t.pendown()
turtle.done()
点A的横坐标:20
点A的纵坐标:20
点B的横坐标:200
点B的纵坐标:200
AB两点之间的距离:254.5584
第四章 列表
【4-0】抓扑克牌
# 抓扑克牌
import random
suits = ['fk', 'ht', 'ht', 'mh'] # 花色
ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'] # 牌面
cards = [x+'_'+y for x in suits for y in ranks]+['red joker', 'black joker']
cards_hold = []
for item in range(17):i = random.randint(0, len(cards)-1) # 生成0~剩余牌数-1的随机数qu = cards.pop(i)cards_hold.append(qu) # 将取出的牌放到手牌列表中cards_hold.sort() # 给手牌排序
print(cards_hold)
['fk_5', 'fk_8', 'fk_Q', 'ht_2', 'ht_3', 'ht_3', 'ht_5', 'ht_6', 'ht_6', 'ht_7', 'ht_8', 'ht_9', 'mh_10', 'mh_4', 'mh_A', 'mh_J', 'mh_Q']
【4-5】数字121从左往右读与从右往左读是一样的,这种数被称为回文数。请使用for循环语句以及切片方法设计一个程序,找到10000以内的回文数。
# 100000以内回文数
for item in range(1, 100001):if str(item) == str(item)[::-1]: # 利用字符串反转print(item)
这题还有另外做法,结果篇幅过长不在这展示。
【4-6】 使用快速列表生成方式生成一个长度 为10的列表,并循环左移一个位置。
import random
lst=[random.randint(1,100) for i in range(1,11)] # 随机生成元素在100以内的列表
print(lst)
def demo(lst,k):return lst[k:] + lst[:k] # 左移k位
tmp = lst[:]
print(demo(tmp,2))
结果:
[26, 37, 37, 24, 65, 80, 69, 30, 8, 31]
[37, 24, 65, 80, 69, 30, 8, 31, 26, 37]
【4-7】编写程序找出整数列表中最大元素的下标,如果最大元素的个数超过1,那么打印输出所有的下标。
此题还有其他做法,在此未全部给出。
# 找出整数列表[1, 2, 9, 8, 9, 7]中的最大元素及下标
lst = eval(input('请输入整数列表:'))
max_index = 0
num = 0
lst_ = list()
for i in range(len(lst)):if lst[i] > lst[max_index]:max_index = i
for item in range(len(lst)):if lst[item] == lst[max_index]:lst_.append(item)
print('最大元素的下标集合:', lst_)
print('最大元素:', lst[max_index])
请输入整数列表:[1, 2, 9, 8, 9, 7]
最大元素的下标集合: [2, 4]
最大元素: 9
【4-8】编写程序删除列表中的重复值。
本题做法较多。例如:1.使用内置函数set。2.使用del函数或者remove函数。3.numpy.unique()方法去重。或者把列表转换成集合,等等做法都可以。(这里就只给第一种其他做法可以自己动手试试)
list1 = [1, 1, 2, 7, 6, 6, 4, 2, 8, 7, 9, 3, 6, 4]
list2 = list(set(list1))
print(list2)
[1, 2, 3, 4, 6, 7, 8, 9]
【4-9】生成一个8行6列的矩阵,其元素值等于该元素所在的行号与列号之和,其中行,列号均从1开始计。
a = [[i+j for i in range(1, 11)] for j in range(1, 9)]
print(a)
[[2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [5, 6, 7, 8, 9, 10, 11, 12, 13, 14], [6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [7, 8, 9, 10, 11, 12, 13, 14, 15, 16], [8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [9, 10, 11, 12, 13, 14, 15, 16, 17, 18]]
【4-12】修改【4-0】抓扑克的程序,将54张牌中的51张随机地分发给3位玩家,其中每人17张牌。
# 扑克牌发牌
import random
suits = ['♦', '♠', '♥', '♣'] # 花色
ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'] # 牌面
cards = [x+'_'+y for x in suits for y in ranks]+['red joker', 'black joker']
random.shuffle(cards) # 打乱牌堆的顺序
r = [cards[0:17], cards[17:34], cards[34:51], cards[51:54]] # 分牌
player_1 = r[0],
player_2 = r[1],
player_3 = r[2]
landlord_board = [r[3]]print('player_1的牌:', player_1)
print('player_2的牌:', player_2)
print('player_3的牌:', player_3)
print('地主牌:', landlord_board)
player_1的牌: ([['♦_K', '♦_9', '♣_5', '♣_7', '♠_4', '♥_7', '♥_Q', '♣_8', '♥_3', '♥_9', '♥_6', '♦_5', '♥_2', '♠_K', '♦_J', '♠_2', '♦_4']],)
player_2的牌: ([['♥_5', '♥_8', '♣_6', '♣_10', '♣_J', '♠_10', '♠_J', '♦_6', '♦_10', '♠_Q', '♣_A', '♣_K', 'black joker', '♠_A', '♥_4', '♦_2', '♣_4']],)
player_3的牌: [['♠_6', '♦_7', '♣_2', '♥_K', '♣_3', '♣_Q', '♥_A', '♠_5', '♣_9', '♥_10', '♦_3', '♠_9', '♦_A', '♥_J', '♦_Q', 'red joker', '♠_8']]
地主牌: [['♠_7', '♦_8', '♠_3']]
Python编辑基础课后习题(持续更新)相关推荐
- 小甲鱼python零基础课后习题001我和Python的第一次亲密接触
一.测试题: 0. python是什么语言? 1. IDLE是什么? 2. print()的作用是什么? 3. python中表示乘法的符号是什么? 4. 为什么print("i love ...
- 计算机网路基础课后习题答案 主编刘建友
计算机网路基础课后习题答案 第一章 计算机网络概述 一.填空题 二.单项选择题 第二章 物理层 一.填空题 二.单项选择题 三.简答题 第三章 数据链路层 一.填空题 二.单项选择题 三.简答题 第四 ...
- python语言程序设计课后习题(嵩天老师)
嵩天老师的python语言程序设计课后习题记录 用以记录自己写过的题 四位玫瑰数 四位玫瑰数是4位数的自幂数.自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身. ...
- pwn学习总结(四)—— 堆基础知识(持续更新)
pwn学习总结(四)-- 堆基础知识(持续更新) 前言 chunk 使用中(分配后) 空闲中(释放后) 堆块大小 空间复用 bins fastbin unsorted bin small bin 前言 ...
- pwn学习总结(二) —— 基础知识(持续更新)
pwn学习总结(二) -- 基础知识(持续更新) Canary PLT表&GOT表 格式化字符串漏洞 GCC编译参数 ASLR 危险函数 输入流 syscall条件 shellcode 其它 ...
- 计算机科学基础第二版答案,浙江大学计算机科学基础课后习题参考答案new-PXY.doc...
浙江大学计算机科学基础课后习题参考答案new-PXY 第一章课后习题参考答案 一.填空题 处理.处理 黑盒.程序 输入设备.运算器.存储器.控制器.输出设备 运算器.控制器.中央处理器 存储器.数据 ...
- 河南理工大学计算机课d,河南理工大學计算机基础课后习题答案.doc
河南理工大學计算机基础课后习题答案 习题1 1. 选择题 (1)计算机的软件系统可分为 D . A)程序和数据 B)操作系统和语言处理系统 C)程序.数据和文档 D)系统软件和应用软件 (2) 一个完 ...
- 【干货】Python:load_workbook用法(持续更新)
[干货]Python中load_workbook用法(持续更新) 功能 方法 示例文件 模块读取 导入excel表格 获取Sheet 查看行与列 查看单元格 批量访问数据 功能 读取excel文件,并 ...
- jQuery基础文档(持续更新)
文章目录 jQuery基础文档(持续更新) 1 jQuery入门仪式: jQuery基础文档(持续更新) 1 jQuery入门仪式: 还是先上一段代码吧,对照这看: <!DOCTYPE html ...
最新文章
- leetcode-152 乘积最大子序列
- 不是吧!程序员今年在相亲市场上这么受欢迎?
- 伪代码的写法(转载)
- Linux文件压缩与归档
- Linux下安装rlwrap
- 初学者python编辑器-分享|Mu 入门:一个面向初学者的 Python 编辑器
- git设置忽略文件和目录
- 抽象工厂+反射=反射工厂
- 怎么确定自己是第几层递归_递归(1)——理解递归思想
- 【鬼网络】之Linux网络设置
- python求平行四边形面积_python 已知平行四边形三个点,求第四个点的案例
- CSS兼容IE/Firefox要点
- 【TypeScript】TypeScript 学习 3——类
- PostgreSQL条件表达式 case when then end
- 可关闭与最小化的右下角浮动广告代码
- foxmail占cpu 100%解决办法
- RF+Excel实现数据驱动接口自动化
- 杭电acm--2154跳舞毯
- 海信电视全记录:法国再度闯入世界杯决赛,剑指蝉联冠军
- kubectl源码分析之rollout restart
热门文章
- 微信防封汇总,解决办法及数据分析
- AVFoundation学习记录
- 游戏图片文件和声音文件的隐藏
- 知数堂全网通缉这个人
- 从目标检测到小目标检测
- FDMS86252 实现低导通电阻 高效率的N沟道屏蔽栅极MOSFET管 150V 16A 51mΩ
- 海伦司的酒何时“醒”
- NOI Online 2020 Round1 准备计划
- 【机器学习炼丹炉】使用便宜的x99和二手显卡,单显卡的学习机器在3000元,多显卡更贵,可以用支架,架起显卡,用做算法的学习使用,模型训练需要显卡的算力支持,低成本做算法研究,万一从入门到放弃了呢
- 【送豪礼】死了都要爱!不告白不痛快!