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 = 13
    year = year - 1
elif month == 2:
    m = 14
    year = year - 1
else:
    m = month

c = 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]=29
    lb = 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 += 1

sum1 = 0
while True:
    x = eval(input("请选择饮品"))
    if x == 0:
        break
    y = 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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【hive】lateral view侧视图

文档地址&#xff1a;https://cwiki.apache.org/confluence/display/Hive/LanguageManualLateralView 1.介绍2.语法3.code demo1&#xff09;单重侧视图2&#xff09;多重侧视图3&#xff09;tips&#xff1a;lateral view outer 1.介绍 lateral view也叫侧视图&#xff0c;属…

【electron3】electron将数据写入本地数据库

安装 yarn add sqlite3 --save连接并调用数据库&#xff0c;创建表 createDB.ts文件内容 const sqlite3 require(sqlite3) const NODE_ENV process.env.NODE_ENV const path require(path) const { app } require(electron) let DB_PATH path.join(app.getAppPath(), /…

LDF、DBC、BIN、HEX、S19、BLF、asc、csv、ARXML、slx等(未完待续)

文章目录 如题如题 LDF是LIN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 DBC是CAN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 BIN文件烧录在BOOT里面(stm32),有人喜欢叫固件,这个固件就是bin文件,bin文件比hex文件体积小 其实BOOT也…

Android apk包使用360加固工具的加固步骤

1&#xff0c;准备好已经签名打包的apk包。 2&#xff0c;在360加固官方网站下载加固exe软件。三六零天御-企业移动应用安全一站式服务平台 3&#xff0c;步骤一&#xff0c;添加加固包&#xff0c;进行加固&#xff0c;并输出加固包&#xff1a; 4&#xff0c;步骤二&#…

预算不足千元SSL证书该怎么选?

随着互联网安全概念日渐深入人心&#xff0c;越来越多的企业或个人为自己的网站加装SSL证书&#xff1b;那对于个人或者小小微企业&#xff0c;预算不足千元的情况下该怎么选择SSL证书呢&#xff1f;可以从以下几个方面进行考量&#xff0c;以确保在有限的预算内获得满足基本安…

Linux编辑器-vim的使用

vim的基本概念 vim的三种模式(其实有好多模式&#xff0c;目前掌握这3种即可),分别是命令模式&#xff08;command mode&#xff09;、插 入模式&#xff08;Insert mode&#xff09;和底行模式&#xff08;last line mode&#xff09;&#xff0c;各模式的功能区分如下&#…

苹果开发初学者指南:Xcode 如何为运行的 App 添加环境变量(Environmental Variable)

概览 Xcode 15 在运行 SwiftUI 代码时突然报告如下警告&#xff1a; Error: this application, or a library it uses, has passed an invalid numeric value (NaN, or not-a-number) to CoreGraphics API and this value is being ignored. Please fix this problem. 不仅如此…

李沐45_SSD实现——自学笔记

主体思路&#xff1a; 1.生成一堆锚框 2.根据真实标签为每个锚框打标(类别、偏移、mask) 3.模型为每个锚框做一个预测(类别、偏移) 4.计算上述二者的差异损失&#xff0c;以更新模型weights 先读取一张图像。 它的高度和宽度分别为561和728像素。 %matplotlib inline import …

NVM下载、NVM配置、NVM常用命令

NVM(nodejs版本管理切换工具)下载、配置、常用命令 0、NVM常用命令 nvm off // 禁用node.js版本管理(不卸载任何东西) nvm on // 启用node.js版本管理 nvm install <version> // 安装node.js的命名 version是版本号 例…

良友:献上今天(打开心窗说亮话)- 沟通篇

目录 一 二 三 四 五 六 七 八 九 十 十一 十二 十三

【Python小游戏】植物大战僵尸的实现与源码分享

文章目录 Python版植物大战僵尸环境要求方法源码分享初始化页面&#xff08;部分&#xff09;地图搭建&#xff08;部分&#xff09;定义植物类 &#xff08;部分&#xff09;定义僵尸类&#xff08;部分&#xff09;游戏运行入口 游戏源码获取 Python版植物大战僵尸 已有的植…

vscode调试文件(C++,ROS和cmake文件)

VsCode调试文件 参考文档&#xff1a; code.visualstudio.com/docs/editor/variables-reference code.visualstudio.com/docs/editor/tasks 主要修改task.json下的"args"、launch.json中的"program",“args” 注意task.json中的label以及launch.json中…

OpenCV 学习笔记2 C++

1.图像直方图 直方图&#xff08;Histogram&#xff09;是图像处理中常用的工具&#xff0c;它表示图像中每个像素强度值的分布情况。在OpenCV中&#xff0c;可以使用 cv::calcHist 函数来计算图像的直方图。 图像直方图是一种展示图像像素强度分布的统计图表。它显示了图像中…

市场份额第一!博睿数据持续领跑中国APM市场

近日&#xff0c;全球领先的IT市场研究和咨询公司IDC发布《中国IT统一运维软件产品市场跟踪报告&#xff0c;2023H2》。报告显示&#xff0c;2023下半年博睿数据以 17.6%的市场份额蝉联 APM(应用性能监控)市场第一。2023年全年博睿数据以18.8%的市场份额持续领跑中国APM市场。 …

实现联系人前后端界面,实现分页查询04.15

实现联系人前后端界面&#xff0c;实现分页查询项目包-CSDN博客 项目结构 数据库中建立两个表&#xff1a; 完整的后端目录 建立联系人People表&#xff0c;分组Type表&#xff0c;实现对应实体类 根据需求在mapper中写对应的sql语句 查询所有&#xff0c;删除&#xff0c;添…

网工交换基础——Access、Trunk、Hybrid处理VLAN的过程

一、VLAN帧格式&#xff1a; 通过Tag区分不同VLAN。打tag/剥离tag都有交换机接口进行。 1.接收方向&#xff1a;不会进行tag的剥离/弹出&#xff08;永远不会剥离VLAN Tag&#xff09;。 2.交换机内部&#xff1a;处理的都是带Tag的数据帧。 交换机开机&#xff0c;默认生成树…

振弦式土压力计性能评估指南

振弦式土压力计是一种常用的岩土工程监测仪器&#xff0c;主要用于测量土体中各点的土压力变化。在长期的监测过程中&#xff0c;保持土压力计的性能稳定与准确至关重要。因此&#xff0c;定期检查和确定振弦式土压力计的性能是否正常成为了一项必要的工作。本文将详细介绍如何…

PHP-extract变量覆盖

[题目信息]&#xff1a; 题目名称题目难度PHP-extract变量覆盖1 [题目考点]&#xff1a; 变量覆盖指的是用我们自定义的参数值替换程序原有的变量值&#xff0c;一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击。 经常导致变量覆盖漏洞场景有&#xff1a;$$&#x…

【智能算法】花朵授粉算法(FPA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2012年&#xff0c;Yang等人受到自然界花朵授粉过程启发&#xff0c;提出了鸭群算法&#xff08;Flower Pollination Algorithm, FPA&#xff09;。 2.算法原理 2.1算法思想 FPA基于自然界花朵授…

Git 指令

一.常见命令 1.1 初始化仓库 #初始化仓库 git init #查看隐藏文件 ll -a #查看隐藏文件.git结构 tree .git/1.2 创建/删除用户信息 #创建用户信息 git config user.email "151859163.com" git config user.name "zsl" #查看 git config -l #删除用户信息…