当前位置: 首页 > news >正文

第二章 数字类型及其操作3

本章围绕 Python 字符串(字符)类型操作展开学习,分为教学案例与配套实验两大模块。案例以身份证信息解析、字符图形打印、字符统计、凯撒加密为主,练习字符串切片、遍历、判断、拼接基础操作;实验拓展回文判断、多种加密解密、信用卡 / ISBN 编号校验、数字日期汉字互转、格式化输出、字符绘图等综合场景。习题融合身份信息处理、密码加密、编码校验、格式转换、图案打印等实用场景,全面掌握切片、循环遍历、字符判断、替换、格式化、加密算法等字符串核心操作。

教学案例三 字符类型及其操作

(I)提取身份证号性别

通过身份证的第17位也就是倒数第二位的数字可以辨别该身份证所属人的性别,奇数为男性,偶数为女性。
输入身份证号,第17位若是偶数,输出性别女,否则输出性别男

sfzh=input("输入身份证号") #代码开始 sex=sfzh[:17] sex=int(sex) if sex%2==0: print("性别女") else: print("性别男") #代码结束

(II)提取身份证号生肖

sfzh=input("输入身份证号") #代码开始 sxzf="猴鸡狗猪鼠牛虎兔龙蛇马羊" nf=sfzh[6:10] shuxiang=sxzf[int(nf)%12] print("生肖"+shuxiang) #代码结束

(III)打印三角形

hs=eval(input("请输入行数")) #代码开始 for i in range(hs): print(" "*(hs-1-i)+"+"*(2*i+1)) #代码结束

(IV)打印钻石图形

hs=eval(input("请输入行数")) #代码开始 for i in range(hs): print(" "*(hs-i-1)+"+"*(2*i+1)) for i in range(hs-2,-1,-1): print(" "*(hs-i-1)+"+"*(2*i+1)) #代码结束

(V)身份证合法性检查

sfzh=input("输入身份证号") #代码开始 sfzh=sfzh.strip() if len(sfzh)!=18: print("长度错误") else: if not sfzh[:17].isnumeric(): print("不是数字") #代码结束

(VI)身份证号校验码

sfzh=input("输入身份证号") #代码开始 xs ='79a584216379a5842' s = 0 for i in range(17): if xs[i]!= 'a': s=s+eval(xs[i])*eval(sfzh[i]) else: s=s+10*eval(sfzh[i]) jym='10X98765432' if jym[s%11]!= sfzh[17]: print("校验码错误") else: print("合法卡号") #代码结束

(VII)统计字符串中的各类字符

x = input("请输入字符串") #代码开始 sz=0 dxzm=0 xxzm=0 qt=0 hz=0 for c in x: if c.isdigit(): sz=sz+1 elif c.isupper(): dxzm=dxzm+1 elif c.islower(): xxzm=xxzm+1 elif '\u4e00' <= c and c <='\u9fff': hz=hz+1 else: qt=qt+1 print("大写字母{}小写字母{}汉字{}数字{}其他{}".format(dxzm,xxzm,hz,sz,qt)) #代码结束

(VIII)凯撒密码加密

x = input("输入明文:") #代码开始 y="" for c in x: if "a"<=c<="z": y=y+chr(ord("a")+(ord(c)-ord("a")+3)%26) else: y=y+c print("密文为:"+y) #代码结束

实验三 字符类型及其操作(新)

(I)判断回文数

输入一个整数,判断其是否回文数。
回文数是指该数翻转后也等于该数本身。例如12321就是回文数,12345不是回文数。

x=input("请输入一个数字") #代码开始 if x.isdigit(): if x == x[::-1]: print(f'{x}是回文数') else: print(f'{x}不是回文数') else: print("不是数字") #代码结束

(II)凯撒密码解密

mw = input("") #代码开始 ming = '' for i in mw: if i.isupper(): ming = ming + chr((ord(i)-65-3)%26+65) elif i.islower(): ming = ming + chr((ord(i)-97-3)%26+97) else: ming = ming +i #代码结束 print(ming)

(III)简单密码加密

某用户在存储自己的密码时(密码由大小写英文字母和数字组成),为了不被别人知晓,将其按下列规则加密
数字字符0用9替换,1用8替换,2用7替换,3用6替换,4用5替换,5用4替换,6用3替换,7用2替换,8用1替换
英文字母a用z替换,b用y替换,c用x替换,d用w替换,e用v替换,f用u替换,g用n替换,以此类推
英文字母A用Z替换,B用Y替换,C用X替换,D用W替换,E用V替换,F用U替换,G用N替换,以此类推
编写程序,输入用户的密码,输出其加密后的密码
例如输入0012xyzM
输出9987cbaN

p=input("") y="" #代码开始 for i in p: if i.isdigit(): y=y+str(9-int(i)) elif i.islower(): i=chr(25-(ord(i)-97)+97) y+=i elif i.isupper(): i=chr(25-(ord(i)-65)+65) y+=i #代码结束 print(y)

(IV)信用卡号校验

编写一个能判断信用卡号是否合法的小程序。

信用卡号必须通过lun算法进行校验,其过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号倒数第二位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
例如,卡号是:5432123456788881
逆向奇数位为 4 2 2 4 6 8 8 1 和 = 35
逆向偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和 = 35。
最后 35 + 35 = 70 可以被10整除,认定校验通过。
注意:信用卡的卡号长度是根据输入来确定的。

提示:
<字符串>[结尾字符:开始字符:<负整数>]
可以逆序间隔地取字符
例如 x="hello world"
则x[-1::-2]表示从结尾字符每隔2个字符取子串,即"drwolh"

cardid=input("请输入信用卡号") #代码开始 sj=so=0 for i in cardid[-1::-2]: sj+=int(i) for i in cardid[-2::-2]: if int(i)*2<10: so+=int(i)*2 else: so+=int(i)*2-9 if(sj+so)%10==0: print('合法卡号') else: print('非法卡号') #代码结束

(V)ISBN 校验

国际标准书号(ISBN)用10位数字唯一标识的一本书。
最后一位数字为校验位,可以由其他9位数字计算出来,且d1+2d2+3d3+……+10d10必须是11的倍数(di的下标表示从右边起第i个数)。
校验位必须是介于0到10中的一个数字,用字母X表示10.
例如,020131452的校验和是5
10*0+9*2+8*0+7*1+6*3+5*1+4*4+3*5+2*2+1*5为88,是11的倍数

编写一个python程序,将9位整数作为输入,计算校验和并打印isbn号
例如,输入020131452,输出0201314525

x=input("") #代码开始 a=10 b=0 for i in x: b+=int(i)*a a-=1 b=b%11 b=11-b if b==10: b='X' else: b=str(b) print(x+b) #代码结束

(VI)打印田字格

#打印田字格 x=eval(input()) #代码开始 for i in range(2*x-1): if i==0 or i==x-1 or i==2*x-2: print("* "*(2*x-1)) else: print("* "+" "*(2*x-4)+"* "+" "*(2*x-4)+"* ") #代码结束

(VII)数字汉字转换

不管是阿拉伯数字(1、2、3……), 还是所谓汉字小写数码(一、二、三……), 由于笔画简单,容易被涂改伪篡。所以一般文书和商业财务票据上的数字都要采用汉字数码大写: 壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、(“万、亿”本身笔画已经比较复杂,使用机会也少,没有必要再用别的字代替)。如“ 3564 元”写作“叁仟伍佰陆拾肆元”

x=input("") hz='零壹贰叁肆伍陆柒捌玖' dw='拾佰仟万拾佰仟' y="" #代码开始 i=len(x) for c in x[:-1]: if c!='0'or(c=='0'and x[-i+1]!='0'and i!=5 and i!=9): y+=hz[int(c)] if c!='0' or(c=='0'and((i==5and y[-1]!='亿'and y[-1]!='兆')or(i==9and y[-1]!='兆'))): y+=dw[i-2] i+=-1 if x[-1]!='0': y=y+hz[int(x[-1])] y+='元' #代码结束 print(y)

(VIII)日期汉字格式转换

编写程序,用户输入阿拉伯数字的日期,转换为汉字的日期。
例如,输入2021/2/25,输出二零二一年二月二十五日

x=input("") hz="零一二三四五六七八九" #代码开始 zwnf='' zwyf='' zwrh='' for i in x[:4]: zwnf+=hz[int(i)] if x[6]!='/': if x[6]=='0': zwyf+='十' else: zwyf+='十'+hz[int(x[6])] else: zwyf+=hz[int(x[5])] if x[-2]!='/': if x[-2]=='1': if x[-1]!='0': zwrh+='十'+hz[int(x[-1])] else: zwrh+='十' else: if x[-1]!='0': zwrh+='二十'+hz[int(x[-1])] else: zwrh+='二十' else: zwrh+=hz[int(x[-1])] #代码结束 print(zwnf+"年"+zwyf+"月"+zwrh+"日")

(IX)输出格式化字符

gl=eval(input("请输入武力")) sd=eval(input("请输入速度")) zl=eval(input("请输入智力")) tzl=eval(input("请输入统治")) #代码开始 print('武力是 {:<4}'.format(gl)+'*'*(gl//10)) print('速度是 {:<4}'.format(sd)+'*'*(sd//10)) print('智力是 {:<4}'.format(zl)+'*'*(zl//10)) print('统治是 {:<4}'.format(tzl)+'*'*(tzl//10)) #代码结束
http://www.jsqmd.com/news/1069519/

相关文章:

  • IntelliGit 项目个人工作总结
  • 模型配置篇(子篇)《DeepSeek API Key 获取实操指南:手把手教你拿到“大龙虾”的通行证》
  • 计算机毕业设计之村级技能培训管理系统
  • 微分几何中的等参超曲面与焦点流形稳定性分析
  • 从 Receiver Agreement 看懂 SAP PI/PO 出站路由的最后一公里
  • 秋招倒计时两个月,AI能力要从“会用工具”变成“能讲案例”
  • 为什么很多公司禁用 MyBatis 二级缓存?看完你就不敢乱开了
  • Python 3正则表达式完全指南:从入门到精通
  • 基于 Harmony 6.0 应用的游戏时长统计与防沉迷提醒应用首页实现
  • 金融事件序列建模:PRAGMA Transformer模型解析与应用
  • 2026 AI 开发者生存指南(5):AI Agent 框架对比——LangChain、LangGraph、CrewAI、Dify 怎么选?
  • Tiny Time Mixers (TTMs): Fast Pre-trained Models for Enhanced Zero/Few-Shot Forecasting of Multivari
  • 基于LLM的文本相关性评估:从RAG优化到可持续性分析的工程实践
  • Spring AI 接入 MCP:DeepSeek 连接 Filesystem Server 读取本地文件
  • 复杂流体系统实时控制:模型降阶与滚动时域优化实践
  • DINOv3+LoRA:基于视觉基础模型的图像篡改检测新范式
  • 当AI Agent开始写AI Agent:自进化系统在企业管理中的伦理与安全红线
  • MatRIS-MoE与Janus框架:突破百亿参数通用机器学习原子间势训练壁垒
  • 指纹浏览器指纹工厂(下):基于真实设备数据特征的马尔可夫链生成与校验
  • 广告物料行业实践指南:从制作到落地的全流程解析与未来趋势展望
  • 基于SRAM存内计算的Transformer Softmax硬件加速方案解析
  • 自适应信息流:让视觉语言模型学会动态聚焦的关键技术
  • 小旺 AI 截图:基于多模态大模型的桌面效率工具
  • 大语言模型对齐中的奖励破解问题与CARP框架解析
  • Shell脚本为何成为AI智能体视觉(TVA)的“反射弧”(6)
  • 专利代理师:2025年实务真题回忆版
  • 【趣解】压力测试:极限情况下的系统表现
  • 暗黑模式下的WCAG合规性:从颜色对比度到欺骗性设计的全面解析
  • 当AI吞噬肌肉记忆:我们该缴械投降,还是做冷酷的“混合智能体”?
  • Codex和cc Switch的安装以及使用DeepSeek大模型