学习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编辑基础课后习题(持续更新)相关推荐

  1. 小甲鱼python零基础课后习题001我和Python的第一次亲密接触

    一.测试题: 0. python是什么语言? 1. IDLE是什么? 2. print()的作用是什么? 3. python中表示乘法的符号是什么? 4. 为什么print("i love ...

  2. 计算机网路基础课后习题答案 主编刘建友

    计算机网路基础课后习题答案 第一章 计算机网络概述 一.填空题 二.单项选择题 第二章 物理层 一.填空题 二.单项选择题 三.简答题 第三章 数据链路层 一.填空题 二.单项选择题 三.简答题 第四 ...

  3. python语言程序设计课后习题(嵩天老师)

    嵩天老师的python语言程序设计课后习题记录 用以记录自己写过的题 四位玫瑰数 四位玫瑰数是4位数的自幂数.自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身.‪‬‪‬‪‬‪‬‪ ...

  4. pwn学习总结(四)—— 堆基础知识(持续更新)

    pwn学习总结(四)-- 堆基础知识(持续更新) 前言 chunk 使用中(分配后) 空闲中(释放后) 堆块大小 空间复用 bins fastbin unsorted bin small bin 前言 ...

  5. pwn学习总结(二) —— 基础知识(持续更新)

    pwn学习总结(二) -- 基础知识(持续更新) Canary PLT表&GOT表 格式化字符串漏洞 GCC编译参数 ASLR 危险函数 输入流 syscall条件 shellcode 其它 ...

  6. 计算机科学基础第二版答案,浙江大学计算机科学基础课后习题参考答案new-PXY.doc...

    浙江大学计算机科学基础课后习题参考答案new-PXY 第一章课后习题参考答案 一.填空题 处理.处理 黑盒.程序 输入设备.运算器.存储器.控制器.输出设备 运算器.控制器.中央处理器 存储器.数据 ...

  7. 河南理工大学计算机课d,河南理工大學计算机基础课后习题答案.doc

    河南理工大學计算机基础课后习题答案 习题1 1. 选择题 (1)计算机的软件系统可分为 D . A)程序和数据 B)操作系统和语言处理系统 C)程序.数据和文档 D)系统软件和应用软件 (2) 一个完 ...

  8. 【干货】Python:load_workbook用法(持续更新)

    [干货]Python中load_workbook用法(持续更新) 功能 方法 示例文件 模块读取 导入excel表格 获取Sheet 查看行与列 查看单元格 批量访问数据 功能 读取excel文件,并 ...

  9. jQuery基础文档(持续更新)

    文章目录 jQuery基础文档(持续更新) 1 jQuery入门仪式: jQuery基础文档(持续更新) 1 jQuery入门仪式: 还是先上一段代码吧,对照这看: <!DOCTYPE html ...

最新文章

  1. leetcode-152 乘积最大子序列
  2. 不是吧!程序员今年在相亲市场上这么受欢迎?
  3. 伪代码的写法(转载)
  4. Linux文件压缩与归档
  5. Linux下安装rlwrap
  6. 初学者python编辑器-分享|Mu 入门:一个面向初学者的 Python 编辑器
  7. git设置忽略文件和目录
  8. 抽象工厂+反射=反射工厂
  9. 怎么确定自己是第几层递归_递归(1)——理解递归思想
  10. 【鬼网络】之Linux网络设置
  11. python求平行四边形面积_python 已知平行四边形三个点,求第四个点的案例
  12. CSS兼容IE/Firefox要点
  13. 【TypeScript】TypeScript 学习 3——类
  14. PostgreSQL条件表达式 case when then end
  15. 可关闭与最小化的右下角浮动广告代码
  16. foxmail占cpu 100%解决办法
  17. RF+Excel实现数据驱动接口自动化
  18. 杭电acm--2154跳舞毯
  19. 海信电视全记录:法国再度闯入世界杯决赛,剑指蝉联冠军
  20. kubectl源码分析之rollout restart

热门文章

  1. 微信防封汇总,解决办法及数据分析
  2. AVFoundation学习记录
  3. 游戏图片文件和声音文件的隐藏
  4. 知数堂全网通缉这个人
  5. 从目标检测到小目标检测
  6. FDMS86252 实现低导通电阻 高效率的N沟道屏蔽栅极MOSFET管 150V 16A 51mΩ
  7. 海伦司的酒何时“醒”
  8. NOI Online 2020 Round1 准备计划
  9. 【机器学习炼丹炉】使用便宜的x99和二手显卡,单显卡的学习机器在3000元,多显卡更贵,可以用支架,架起显卡,用做算法的学习使用,模型训练需要显卡的算力支持,低成本做算法研究,万一从入门到放弃了呢
  10. 【送豪礼】死了都要爱!不告白不痛快!