Python课堂作业之字符串
1、验证码较验
用户登录网站经常需要输入验证码,验证码包含大小写字母和数字,随机出现。用户输入验证码时不区分大小写,只要各字符出现顺序正确即可通过验证。
请写一个程序完成验证码的匹配验证,假设当前显示的验证码是’Qs2X’。
如果用户输入验证码正确,输出“验证码正确”,输入错误时输出“验证码错误,请重新输入”
str1='Qs2X'
str2=input()
if str1.lower()==str2.lower():print('验证码正确')
else:print('验证码错误,请重新输入')
2、物不知数B
“物不知数”出自《孙子算经》。题目如下:
“今有物不知其数,一一数之剩零,二二数之剩一,三三数之剩零,四四数之剩一,五五数之剩一,六六数之剩三,七七数之剩零,八八数之剩一,九九数之剩零,问物几何?”
请问这些个物品可能有多少个?
a=int(input())
count=0
for i in range(a):if i%1==0 and i%3==0 and i%7==0 and i%9==0 and i%2==1 and i%4==1 and i%5==1 and i%8==1 and i%6==3:print(i)else:continue
3、黑客语解密
黑客语(Leet)是从网络发展起来的一种文字书写方式。通常将英语中的字母替换为数字和特殊符号。这种方式被很多黑客组织所使用。由于具有隐密性,所以它也广泛被用于密码中。使用Leet书写的密码,不会增加密码记忆的复杂度,但却可以提高密码的强度。常见的转化规律有:==3替换e,4替换a,0替换o,1替换i等。例如,cats使用Leet书写,就变为c47$。==一个纯字母的密码就转化为字母、数字构成的复杂密码了。
table = ‘’.maketrans(before, after),这条语句可以创建映射表,str1.translate(table)语句可以将table中的字符按映射表中的顺序进行替换。
替换表如下:
0 1 3 4 5 6 7
o i e a s g t
写一个程序,用于破解一个加密的字符串。M4k3 G006l3 Y0ur H0m3p463!
lst=input()
table=' '.maketrans('0134567','oieasgt')
print(lst.translate(table))
4、凯撒加密
在密码学中,恺撒密码是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。编程实现恺撒加密,明文和大小写字母偏移量由用户输入,输出密文。
import string
def kaisa(a,b,c):lower=string.ascii_lowercaseupper=string.ascii_uppercasebefore=string.ascii_lettersafter=lower[c:]+lower[:c]+upper[b:]+upper[:b]table=''.maketrans(before,after)return a.translate(table)
a=str(input())
b=int(input())
c=int(input())
d=kaisa(a,b,c)
print(d)
5、手机号替换
用户输入一个11位的纯属数字的手机号码,将4-7位用 “*” 替换掉,以保护隐私。
tel=input()
a=tel[0:3]+'****'+tel[7:]
print(a)
6、密码强度判断
用户输入一个字符串做为密码,判断密码强度,规则为:密码长度小于8弱密码,密码长度大于等于8且包含至少2种字符为中等强度、密码包含3种字符为强、包含全部4种字符为极强。
提示:
string.digits 可返回’0123456789’
string.ascii_lowercase 可返回’abcdefghijklmnopqrstuvwxyz’
string.ascii_uppercase 可返回’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
string.punctuation 可返回’!"#$%&’()*+,-./:;<=>?@[\]^_`{|}~’
import string
n=input()
a=b=c=d=0
if len(n)<8:print("弱")
else:for i in n:if i in string.digits:a=1elif i in string.ascii_lowercase: b=1elif i in string.ascii_uppercase:c=1elif i in string.punctuation:d=1
e=a+b+c+d
if e==2:print("中")
elif e==3:print("强")
elif e==4:print("极强")
输出结果:
12345678as
中***Repl Closed***
7、首字母大写
本题要求编写程序,将输入的英文字符串中的每个单词首字母转换成大写字母,其他字符不变输出。
l=str(input())
print(l.title())
8、身份证号升位
第二代居民身份证是依据2003年6月28日第十届全国人大常委会第3次会议通过的《中华人民共和国居民身份证法》实施的。第一代身份证十五位数升为第二代身份证十八位数的一般规则是:
第一步,在原十五位数身份证的第六位数后面插入19 (1905年1月1日以后出生)或20(2000.1.1-2004.12.31出生),这样身份证号码即为十七位数;
第二步,按照国家规定的统一公式计算出第十八位数,作为校验码放在第二代身份证的尾号。
校验码计算方法:将身份证前十七位数分别乘以不同系数并求和
S = Sum(Ai * Wi)
Ai:表示第i位置上的身份证号码数字值, i = 0, … , 16
Wi:表示第i位置上的加权因子,Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
S对11取模得到余数0-10,对应的校验码如下:
余数 Y: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2
#题目假设所有人均出生于1905年1月1日以后,2005年1月1日以前
l=eval(input())
lst1=list(str(l))
if int(lst1[6])+int(lst1[7])>=5:lst1.insert(6,9)lst1.insert(6,1)
else:lst1.insert(6,0)lst1.insert(6,2)
i=0
sm=0
lst2=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
while i<17:sm+=int(lst1[i])*int(lst2[i])i+=1
n=sm%11
lst3=[1,0,'X',9,8,7,6,5,4,3,2]
lst1.append(lst3[n])
for i in range(0,len(lst1)):lst1[i]=str(lst1[i])
print(''.join(lst1))
输出结果:
310112850409522
310112198504095227***Repl Closed***
9、电文加密
有一行电文,已按如下规律译成密码:
A–>Z a–>z
B–>Y b–>y
C–>X c–>x
… …
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。
x=input()
s=""
for i in x:if i.islower():s+=chr(97+122-ord(i))elif i.isupper():s+=chr(65+90-ord(i))else:s+=i
print(s)
输出结果:
ZYX123zyx.
ABC123abc.***Repl Closed***
10、电文解密
有一行电文,已知是按如下规律加密得到:
A–>Z a–>z
B–>Y b–>y
C–>X c–>x
… …
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密文译回原文,并输出。
x=input()
s=""
for i in x:if i.islower():s+=chr(97+122-ord(i))elif i.isupper():s+=chr(65+90-ord(i))else:s+=i
print(s)
输出结果:
ZYX123zyx.
ABC123abc.***Repl Closed***
11、模拟身份证信息(生日&性别)
输入一个模拟身份证号,将其中的生日信息与性别输出。
如果输入证件位数不是18位,输出”ERROR“。
本题中判断身份证第17位是奇数为男性,偶数为女性。7到14位为出生日期。
x=input()
if len(x)<18:print("ERROR")
else:year=x[6:10]month=x[10:12]day=x[12:14]if int(x[16:17])%2==0:sex='女'else:sex='男'print("{}年{}月{}日".format(year,month,day))print(sex)
输出结果:
420106200801301168
2008年01月30日
女***Repl Closed***
12、英文字符串大小写
将输入的英文句子,全部改为小写和大写分别输出。
n=input()
print(n.lower())
print(n.upper())
输出结果:
I am a student.
i am a student.
I AM A STUDENT.
13、整数转字符串
输入一个正整数,将其转为字符串输出,转换规则如下:
1 – 'A’
2 --'B’
…
26 --'Z’
27 – 'AA’
28 – 'AB’
…
52 – 'AZ’
53 --'BA’
54 --'BB’
…
702 --'ZZ’
703 --‘AAA’
lst=list(chr(i) for i in range(ord('A'),ord('Z')+1))
n=int(input())
l=[]
while n!=0:m=int(n%26)n=int(n/26)if m==0:l.append('Z')n=n-1else:l.append(lst[m-1])
print(''.join(l[::-1]))
输出结果:
702
ZZ***Repl Closed***
14、走马灯数B
有人发现埃及金字塔内有一组神奇的数字,它证明一星期有7天,它自我累加7次的结果是999999,将其前3位和后3位分别取出,加和为999,将其前2位、中间2位和后2位分别取出加和为99,请找出这个数字。
for i in range(1000000):st=str(i)if i+i+i+i+i+i+i==999999:if int(st[:3])+int(st[-3:])==999:if int(st[:2])+int(st[-2:])+int(st[len(st)//2-1:len(st)//2+1])==99:print(i)
输出结果:
142857
[Finished in 0.6s]
15、个人信息提取(字符串)
用户输入自己的个人信息,格式如下:
0122923450321 王昊 法学1801 河北 2001年
数据分别表示:学号 姓名 专业班级 籍贯 出生年份,各数据间空格间隔
有些用户没有按照规则输入数据,输入自己出生年份的时候写成了类似‘1900年生’的数据,题目保证这些用户输入年份时一定是以四位数字开始
请注意程序仍然需要正确读取该项数据
请按照输出样式输出姓名,班级,年龄
提示:
列表中的数据和字符串当中的字符一样,都具有有序的索引,且引用数据和切片方式一致。
lst=input()
l=lst.split()
a=l[4]
print("姓名:{}\n班级:{}\n年龄:{}岁".format(l[1],l[2],2020-int(a[:4])))
输出结果:
0122923450321 王昊 法学1801 河北 2001年
姓名:王昊
班级:法学1801
年龄:19岁***Repl Closed***
Python课堂作业之字符串相关推荐
- python字符串变量s的值是python网络爬虫_【Python爬虫作业】-字符串
一.定义字符串变量 1.请定义三个字符串a,b,c值分别为 I,like, python 2.请将上面三个变量合并输出'I like python' a='I' b='like' c='python' ...
- 学校作业5_1字符串_文本分析与加密(头哥作业[Python])
本系列文章为同学困扰的python做出作业答案汇总,答案皆为本学生自己边学边做汇总上传的,编排不易,希望大家喜欢. 本作业所有内容均在github上有留存,每次作业github上会最先发布,CSDN上 ...
- 学校作业5_3字符串_统计英文文件中的单词数(头哥作业[Python])
本系列文章为同学困扰的python做出作业答案汇总,答案皆为本学生自己边学边做汇总上传的,编排不易,希望大家喜欢. 本作业所有内容均在github上有留存,每次作业github上会最先发布,CSDN上 ...
- python【蓝桥杯vip练习题库】ALGO-234第五次作业:字符串排序
试题 算法训练 第五次作业:字符串排序 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输入一个小写字符串,按从小到大的顺序输出. 输入格式 bcaed 输出格式 abcde 顶格输 ...
- latex 小于_一份菜鸡的Latex课堂作业works--(ii)
开学了,每天的课堂作业接踵而来.这是一份包含插入代码块和图片的作业. 先来一波图 documentclass{article} usepackage[UTF8]{ctex} usepackage{fa ...
- python做作业没头绪_使用Python做作业
python做作业没头绪 Applying OpenCV and Tesseract to do your math-homework 应用OpenCV和Tesseract进行数学作业 The pos ...
- _【超详细指北】python大作业!
[超详细指北]python大作业! 这是笔者最近写python大作业时写的一个实现过程笔记,也就是基本上可以说是本人从0开始上手的一个python练习.程序和本文档从 4.29-5.15日 总共历 ...
- kaggle经典题--“泰坦尼克号”--0.8275准确率--东北大学20级python大作业开源(附详细解法与全部代码以及实验报告)
kaggle经典题--"泰坦尼克号"--0.8275准确率--东北大学20级python大作业开源(附详细解法与全部代码以及实验报告) 前言 开发环境 一.导入包: 二.实验数据的 ...
- 西电2020 python OJ作业(50道题目,持续更新)
西电2020 python OJ作业(50道题,持续更新) 0.A+B problem 题目描述 用来适应环境的题目,自然比较简单些. 计算2个整数的和.这两个整数都在1到1000之间. 输入 输入只 ...
最新文章
- 怎样给RCP程序添加依赖的JAR包
- 基于Xml 的IOC 容器-分配注册策略
- 棋牌游戏服务器架构: 详细设计(三) 数据库设计
- React开发(216):ant dedign 弹窗销毁后再打开,原来的值仍存在,如何销毁弹窗内容?
- IT项目管理-敏捷和传统
- mysql处理重复数据
- demo08 关于SplitChunksPlugin
- 手动构建redis集群
- JDK 19 / Java 19 新特性
- modbus串口调试工具_用modscan测试modbus协议离散仪表数据方法
- yb3防爆电机型号含义_【产品信息】防爆充电机
- PRML第三章之回归的线性模型
- C语言/C++基础之奔跑的小人
- QuickTime 介绍 下载 安装(win7及以上版本)
- ewebeditor php漏洞,eWebeditor 3.8 for php任意文件上传漏洞 附exp
- sqlyog连接mysql错误码2058
- 卖衣服有什么引流产品?微商卖衣服引流推广?
- 【财务】FMS财务管理系统---审计流程
- xlrd读取多个sheets
- Eclipse项目红叉:报错Description Resource Path Location Type Target runtime Apache Tomcat v8.0 is not defin
热门文章
- 机智云无需代码就能搞定IoT小程序开发和管理
- JavaScript TypeScript学习总结
- 优化与求解非线性方程组(单变量问题)
- Python 创建一个二维列表
- 【SDG精读与代码复现】More Control for Free Image Synthesis with Semantic Diffusion Guidance【SDG】
- 深入理解计算机系统|Attack Lab
- sql和python有什么区别_该用Python还是SQL?4个案例教你节省时间
- 怎么看一上副业项目适合不适合自己
- echarts简单使用、echarts通过计时器进行动态更新数据、echarts连接数据库实时更新数据
- 景联文科技:一文读懂火爆全网的AIGC和背后的数据标注技术!