Python程序设计 元组和集合

教学案例七 元组和集合

1. 根据年月日计算周几

根据输入的年号、月号、日号,计算是周几(中文、英文)

蔡勒公式

通过蔡勒(Zeller)公式可计算星期几 w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六 c:世纪,年份除以一百的结果 y:年份的后两位,年份除以一百的余数 m:月(月份大于等于3 m为月份,若月份是1、2,m取13、14,年号也要减一) d:日 [ ]代表取整,即只要整数部分 计算2049年10月1日是星期几, w=([c/4]-2c+y+[y/4]+[13(m+1)/5]+d-1)%7 =([20/4]-2*20+49+[49/4]+[13×(10+1)/5]+1-1)%7 =(5-40+49+12+28)%7=54%7=5 即2049年10月1日(100周年国庆)是星期五。

计算2022年1月1日是星期几, w=([c/4]-2c+y+[y/4]+[13(m+1)/5]+d-1)%7 =([20/4]-2*20+21+[21/4]+[13×(13+1)/5]+1-1)%7 =(5-40+21+5+36)%7=27%7=6 即2022年1月1日是星期六。

元组的建立和切片

元组的建立的切片 元组可以通过赋值语句建立。 可通过元组[i]切片,返回第i个元素

,

year=eval(input("请输入年"))
month=eval(input("请输入月"))
day=eval(input("请输入日"))
#代码开始x = "sunday","monday","tuesday","wednesday","thursday","friday","saturday"
cxq = "日一二三四五六七"if  month == 1:m = 13year = year - 1
elif month == 2:m = 14year = year - 1
else:m = monthc = year // 100
y = year % 100
w = (c//4-2*c+y+y//4+13*(m+1)//5+day-1)%7
print("星期"+cxq[w])
print(x[w])#代码结束

2. 根据年月日计算一年中的第几天

根据输入的年号、月号、日号,计算该日是一年中的第几天

       

如何计算一年中的第几天 建立一个元组存放每月的天数 当闰年时,2月天数是29,否则是28 例如,输入2021年5月5日 lb=(31,28,31,30,31,30,31,31,30,31,30,31) 将输入月份的前面月份的所有天数相加再加上该月的天数 31+28+31+30+5=125

year=eval(input("请输入年"))
month=eval(input("请输入月"))
day=eval(input("请输入日"))
#代码开始
lb = (31,28,31,30,31,30,31,31,30,31,30,31)
if year%4==0 and year%100 != 0 or year %400==0:lb = list(lb)lb[1]=29lb = tuple(lb)
sumday = sum(lb[:month-1]) + day
print(f"第{sumday}天")
#代码结束

3. 根据身份证号判断星座

根据身份证号的月号和日号判断星座。

身份证号的组成

中华人民共和国居民身份证是国家法定的证明公民个人身份的有效证件。 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

输入身份证号sfzh,通过下列赋值语句可以获得出生的yf月份和rh日号 yf=int(sfz[10:12]) rh=int(sfz[12:14])

星座的判断

设计一个元组存储每个星座结束日期的月份,日号,星座名。将12个元组又放在一个元组中。 从第一个元素对大元组遍历,如果月份等于前一个元组的月份,大于等于前一个元组的日号或等于当前元组的月份,小于等于当前元组的日号,就是当前的星座 xz=((1,19,"摩羯座"),(2,18,"水瓶座"),(3,20,"双鱼座"), (4,19,"白羊座"),(5,20,"金牛座"),(6,21,"双子座"),(7,22,"巨蟹座"), (8,22,"狮子座"),(9,22,“处女座”),(10,23,“天秤座”), (11,22,"天蝎座"),(12,21,"射手座")) 提示:第一个元组的前一个元组即最后一个元组

,

sfz=input("请输入身份证号")
xz=((1,19,"摩羯座"),(2,18,"水瓶座"),(3,20,"双鱼座"),(4,19,"白羊座"),(5,20,"金牛座"),(6,21,"双子座"),(7,22,"巨蟹座"), (8,22,"狮子座"),(9,22,"处女座"),(10,23,"天秤座"),(11,22,"天蝎座"),(12,21,"射手座"))
#代码开始
yf=int(sfz[10:12])
rh=int(sfz[12:14])if yf==12 and rh>21:print("摩羯座")
else:if rh<xz[yf-1][1]:print(xz[yf-1][2])else:print(xz[yf][2])#代码结束

4. 统计唐诗文件中的诗人

唐诗.txt文本文件中记录了多位诗人的多首诗文

编写程序,显示所有诗人的姓名,并统计诗人个数

空集合的建立

可以通过set()函数建立空集合。 sr=set()建立一个空集合

集合元素的添加

sr.add(x) 将元素x添加到集合sr中

如何将诗人姓名添加到集合

,

f1=open("sy7/唐诗.txt","r",encoding="gbk")
#代码开始
sr = set()
for i in f1.readlines():i = i.strip()  if i[:3].isdigit()==True:sr.add(i)zz = set() 
for i in sr:i = i.split(":")[0]zz.add(i[3:])#代码结束
f1.close()
print(zz)
print("共有{}诗人".format(len(zz)))

 5. 统计团购名单

 单位有40个员工,报名参加两个团购活动。 参加团购1需缴纳500元,参加团购2需缴纳300元。员工可以参加两项团购,也可以不参加任何团购。 参加团购1的名单放在团购1.txt中, 参加团购2的名单放在团购2.txt中, 全体成员的名单放在名单.txt中。 计算并显示缴纳800元的、500元的、300元的及不需交纳金额的员工名单。

如何把文件中的名单加入集合

,

集合的并交差

操作符 描述 S|T并 返回一个新集合,包括集合S和T中所有元素 S –T 差 返回一个新集合,包括在集合S中但不在集合T中的元素 S & T交 返回一个新集合,包括同时在集合S和T中的元素

示例如下:

,

f1=open("sy7/团购一.txt",encoding="gbk")
f2=open("sy7/团购二.txt",encoding="gbk")
f3=open("sy7/名单.txt",encoding="gbk")
#代码开始
tg1 = [x.strip() for x in f1.readlines()]
tg2 = [x.strip() for x in f2.readlines()]
md = [x.strip() for x in f3.readlines()]
hd4 = set(tg1)
hd5 = set(tg2)
hd3 = hd4 & hd5
hd6 = set(md) - hd4 -hd5
hd4 = hd4 - hd3
hd5 = hd5 - hd3
#代码结束
print("800元",hd3)
print("500元",hd4)
print("300元",hd5)
print("无需交款",hd6)
print("800元{}人".format(len(hd3)))
print("500元{}人".format(len(hd4)))
print("300元{}人".format(len(hd5)))
print("无需交款{}人".format(len(hd6)))
f1.close()
f2.close()
f3.close()

 6. 选择题

 

实验七 元组和集合

1. 日期格式转换

编写一个能转换日期格式的小程序。 输入一个数字的日期格式 2020/1/23 转换为美式格式和英式格式

x=input("输入日期")
#开始
yf = "January","February","March","April","May","June","July","August","September","October","November","December"year = x.split("/")[0]
month = x.split("/")[1]
day = x.split("/")[2]y = yf[int(month)-1]+" "+day+","+year
z = day+" "+yf[int(month)-1]+","+year
#结束
print("美式格式"+y)
print("英式格式"+z)

 2. 计算购买饮品金额

编写一个计算购买饮品金额的小程序。

对元组的各个值循环

for 变量 in 元组: 循环体 变量依次取出元组的各个值,执行循环体

访问二维元组的值

访问元组的i行j列的值 元组[i][j]

某奶茶店的各饮品的名称和价格如下所示

首先显示所有饮品的名称和价格,然后循环输入饮品的序号和数量,直到输入序号为0。系统输出总计的金额。

注意:序号输出2位长度 要求能循环输入饮品的编号和价格 一旦输入饮品编号0则退出循环(该次不再输入数量)

cp=(("悠哉悠哉",18),("人间烟火",17),("蔓越阑珊",17),("抹茶葡提",16),("幽兰拿铁",16),("  翠翠  ",13),("浮生半日",15),("筝筝纸鸢",16),("声声乌龙",15),("风栖绿桂",12),("素颜锡兰",13),("烟火易冷",15))
#代码开始
n= 1
for i in cp:print("%2d"%n,i[0],i[1],sep="")n += 1sum1 = 0
while True:x = eval(input("请选择饮品"))if x == 0:breaky = eval(input("请输入数量"))    sum1 += cp[x-1][1] * y
print(f"应付{sum1}元")
#代码结束

3. 判断句子是否每个英文字母起码出现一次

编写一个判断输入的英文句子是否个每个英文字母起码出现一次的小程序。 英文中有一种句子,句子中所有英文每个字母至少出现一次,例如The quick brown fox jumps over the lazy dog. 编写一个程序,用来检查一个英文句子是否是符合这个条件.是则显示True 否则显示False(提示 利用集合)

集合的操作

设置集合为空集合 jh=set()

集合jh增加一个元素x jh.add(x)

集合元素的个数 len(jh)

x=input("")
#代码开始
jh = set()
for i in x:if i.isalpha()==True:jh.add(i)if len(jh)==26:print(True)
else:print(False)
#代码结束

4. 集合的运算

商场举办双节答谢活动,有两项活动可以参加 报名参加活动1的会员编号放在集合1中 报名参加活动2的会员编号放在集合2中 将同时参加两项活动的会员编号,只参加活动1的会员编号,只参加活动2的会员编号分别显示出来

集合的运算

差 S –T 返回一个新集合,包括在集合S中但不在集合T中的元素 交 S & T 返回一个新集合,包括同时在集合S和T中的元素 并 S|T 返回一个新集合,包括集合S和T中所有元素 补 S^T 返回一个新集合,包括集合S和T中元素,但不包括同时在其中的元素

hd1=set()
hd2=set()
gh=input("")
lb=gh.split(',')
for x in lb:hd1.add(eval(x))
gh=input("")
lb=gh.split(',')
for x in lb:hd2.add(eval(x))
#代码开始hd3 = hd1 & hd2
hd4 = hd1 - hd2
hd5 = hd2 - hd1 #代码结束
print("两项活动都参加",hd3)
print("只参加活动1",hd4)
print("只参加活动2",hd5)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/41.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【苍穹外卖】Springboot中快速使用mybatis插件-PageHelper

目录 Springboot中快速使用mybatis插件-PageHelper1. 导入Maven坐标2. 拦截查询方法3. 编写查询的方法和mapper接口4. 配置&#xff1a;扫描Mapper.xml的映射文件路径5. 版本说明 Springboot中快速使用mybatis插件-PageHelper 1. 导入Maven坐标 <dependency><groupI…

MyBatis Dynamic SQL基本使用

MyBatis Dynamic SQL基本使用 一、概念二、特性Hamcrest是什么 三、MyBatis Dynamic SQL 快速入门3.1 环境准备3.2 定义表和列3.3 创建 MyBatis3 映射器3.4 使用 MyBatis3 执行 SQL 四、数据库对象表示4.1 表或视图表示4.2 表别名4.3 列表示 五、Where 子句支持5.1 简单的 wher…

RIP最短路实验(思科)

华为设备参考&#xff1a; 一&#xff0c;技术简介 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是一种基于距离矢量的内部网关协议&#xff0c;它根据跳数来度量路由开销并进行路由选择。RIP是最典型的距离矢量路由协议&#xff0c;常…

多高的学历才能轻松找到工作?这个热点有点扯吧~

先来唠唠 昨天刷脉脉的时候&#xff0c;热榜第一的内容吸引了我&#xff1a;多高的学历才能轻松找到工作&#xff1f; 现在这行情&#xff0c;不管多高得学历都很难说能轻松找到工作吧~ 评论区也有不少小伙伴发表自己的见解&#xff0c;比如&#xff1a; 学历固然是非常重要…

【QT学习】8.qt事件处理机制

1.qt事件处理机制 事件处理&#xff1a; 当用户移动鼠标的时候 &#xff0c;创建一个 鼠标移动事件对象 然后把这个对象放到 事件队列里面去&#xff0c;事件管理器 从队列中 取出事件&#xff0c;然后 调用其对应的事件处理函数。 多态机制&#xff1a; &#x…

2024妈妈杯数学建模思路A题思路汇总分析 MathorCup建模思路分享

C题&#xff1a;移动通信网络中PCI规划问题 &#xff08;完整版内容放在文末了&#xff09; 2024MathorCup A题完整思路完整数据可执行代码后续高质量成品论文 l 难度评分: 3.5/5 l 开放度评分: 3/5 l 适合专业: 通信工程、计算机科学、电子工程 l 主要算法: 图论算法、…

route路由命令、ip route命令、default默认路由(0.0.0.0 )

文章目录 概述3. route语法3.1 查看路由表3.1 参数解释 3.2 添加路由记录3.2.1 添加到达单个目标主机的路由3.2.2 添加到达目标网络的路由3.2.3 添加默认路由 3.3 删除路由记录 4. ip route4.1 查看路由4.1.1 不带条件4.1.2 带条件4.1.3 字段解释4.1.3 字段解释 4.2 添加路由4.…

sublime text的json快捷键

系统 macos 配置 sublime Text->Settings->Key Bindings 效果 可以看到&#xff0c;按&#xff1a;shiftcommandp&#xff0c;会出现快捷键窗口&#xff0c;打pretty&#xff0c;会出现Format JSON&#xff0c;最右侧显示⌘J&#xff0c;说明只需要macos的⌘和J同时按…

Midjourney指南 - 生成高分辨率图片(内容已更新至V5)

Midjourney 首先为每个作业生成一个低分辨率图片网格(2x2)。你可以在选择其中任一图片&#xff0c;使用 Midjourney upscaler 来增加尺寸并添加更多细节。有多种可用于放大图像的放大模型。 每个图像网格下方的按钮用于放大所选图像。U1 U2 U3 U4 注&#xff1a;upscaler 以下…

高精度PWM脉宽调制信号转模拟信号隔离变送器1Hz-10KHz转0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA

主要特性: >>精度等级&#xff1a;0.1级。产品出厂前已检验校正&#xff0c;用户可以直接使用 >>辅助电源&#xff1a;8-32V 宽范围供电 >>PWM脉宽调制信号输入: 1Hz~10KHz >>输出标准信号&#xff1a;0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等&…

ts封装axios遇到的问题

在使用ts封装axios时&#xff0c;这里总是有一个报错&#xff0c;经过一顿搜索&#xff0c;发现错误原因&#xff1a;在TypeScript中&#xff0c;函数的参数类型和返回类型是不等价的&#xff0c;因此导致类型不匹配。 解决方法&#xff1a;将 AxiosRequestConfig 改成 Interna…

物理机安装centos7并配置基本环境,网络配置,docker配置

1.首先下载镜像Download 2.下载UltraISO 安装docker 第1步&#xff1a;卸载当前版本docker yum erase docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \do…

前端和设计师 结果 差异化的原因

记得很久之前与我同住的室友经常加班到半夜三更才回家&#xff0c;我很是不解。后来闲聊才得知她们公司的设计师待前端开发完毕之后需要一点点的对稿走查&#xff0c;非常浪费时间。而且设计这边不但需要标注好给开发&#xff0c;然而开发照着做完依然存在诸多问题。 我也曾对接…

关于赚钱上面的金句启发,一共12项100多条,值得收藏!

注意一&#xff1a;个人成长与自我实现 币圈有个词叫不要"mid curve"&#xff0c;意思是在最傻和最聪明的人都能赚到钱&#xff0c;不要做中间那部分人。为什么会经常出现不配赚这么多的钱的感觉&#xff0c;主要还是见识少&#xff0c;当你亲眼见过一年赚上千万一个…

基于数据库现有表导出为设计文档

1.查询 SELECTCOLUMN_NAME 字段名,COLUMN_COMMENT 字段描述,COLUMN_TYPE 字段类型,false as 是否为主键 FROMINFORMATION_SCHEMA.COLUMNS wheretable_NAME region -- 表名2.查询结果 3.导出为excel

测绘管理与法律法规 | 测绘资质分类分级标准 | 学习笔记

目录 1. 申请条件 2.审批程序 3.专业技术人员的特殊规定 1. 申请条件 法人资格&#xff1a;申请单位必须具有法人资格。 专业技术人员&#xff1a;需拥有与测绘活动相适应的测绘专业技术人员和相关专业技术人员。 技术装备&#xff1a;具备与测绘活动相适应的技术装备和设…

数仓建模—数据架构

数仓—数据架构 为了在企业决策中使用数据,数据必须经过整个数据平台的各个阶段。整个过程是什么样子的,从开始到结束?原始形式的数据是如何转化为可导致商业决策的见解的?这些问题可以通过数据架构来回答。 数据架构是指记录组织所有数据资产的模型、规则和标准。它映射…

sql-labs靶场的搭建

1.下载一个sql-labs GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based. 2.下载 phpstudy(小皮&#xff09; https://www.xp.cn/download.htmlhttps://www.xp.cn/download.html 3. 4. 5. 6. 7.http://127.0.0.1/sqli-labs…

Qt 窗⼝

Qt 窗⼝ 菜单栏创建菜单栏在菜单栏中添加菜单创建菜单项在菜单项之间添加分割线综合⽰例 ⼯具栏创建⼯具栏设置停靠位置设置浮动属性设置移动属性综合⽰例状态栏状态栏的创建在状态栏中显⽰实时消息在状态栏中显⽰永久消息 浮动窗⼝浮动窗⼝的创建设置停靠的位置 对话框对话框介…

再生龙(Clonezilla)网络克隆linux系统实现迁移——筑梦之路

官方网站&#xff1a;Clonezilla - 簡介 环境说明 源端&#xff1a;CentOS 7 操作系统的虚拟机&#xff0c;硬盘大小为 40GiB&#xff0c;分为 1GiB 的 /boot&#xff08;启动&#xff09;分区、4GiB 的 swap&#xff08;交换&#xff09;分区和 35GiB 的 /&#xff08;根&…