Python程序设计 字符类型及其操作

1. 提取身份证号性别

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

1.通过input()函数接收用户输入的身份证号,将其保存在变量sfzh中。

2.sfzh第17位sfz[16]若是偶数,设置性别xb为女,否则设置性别xb为男

3.输出性别

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

 
#代码结束

2. 提取身份证号生肖

身份证的第六位到第九位是出生的年份。

,

出生年份除以12的余数,如果余数为0,则相应的属相是猴。 余数为1,则相应的属相是鸡。 出生年份对12的余数与属相的对应关系,如图所示。

,

输入身份证号,根据年份计算其生肖。

1.通过input()函数接收用户输入的身份证号,将其保存在变量sfzh

2.设置年份nf是sfzh第6位到第9位sfz[6:9]

3.设置字符串sxzf=“猴鸡狗猪鼠牛虎兔龙蛇马羊”,出生年份对12的余数是eval(nf)%12,sxzf[eval(nf)%12]]就是属相。

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

#代码结束

3. 打印三角形

编写程序,输入整数,输出加号组成的整数边长的等腰直角三角形

,

方案一:

1.输入行数hs

2.i从0循环到hs-1,每行打印hs-1-i个空格和2i+1个+号

,

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

#代码结束

方案二: 

hs=eval(input("请输入行数"))
#代码开始

for i in range(0, hs):
    for j in range(1, hs-i):
        print(" ",end="")
    for n in range(hs-i+1,hs+1):
        print("+",end="")
    for x in range(hs-i-1,hs):
        print("+",end="")
    print()
#代码结束

4. 打印钻石图形

编写程序,输入整数,输出加号组成的整数边长的钻石图形

,

方案一:

输入:行数

处理: i从0循环到行数减一 每次输出行数减一减i个空格和2*i+1个加号 i从行数减二循环到0 每次输出行数减一减i个空格和2*i+1个加号

,

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

#代码结束

 方案二:

hs=eval(input("请输入行数"))
#代码开始    
for i in range(0, hs):
    for a in range(1,hs-i):
        print(" ",end="")
    for b in range(hs-i+1,hs+1):
        print("+",end="")
    for c in range(hs-i-1,hs):
        print("+",end="")
    print()

for j in range(hs,1,-1):
    for a in range(0, hs-j+1):
        print(" ",end="")
    for b in range(0, j-1):
        print("+",end="")
    for c in range(0,j-2):
        print("+",end="")
    print()

#代码结束

5. 身份证合法性检查

输入身份证号,去除空格后,判断其长度是否18位,前17位是否数字。若不符合条件,显示对应提示

,

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

else:
    print("长度错误")
#代码结束

6. 身份证号校验码

编写一个能判断身份证号校验码是否正确的小程序。

,

身份证的校验码的计算规则: 1.将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2 ; 2、将相乘的结果累加; 3、用累加的和除以11,得到余数; 4、余数0到10对应的校验码为1、0、X、9、8、7、6、5、4、3、2。

,

1.输入身份证号sfzh

2.设置xs为17位系数所对应的字符串'79a584216379a5842', 10用'a'表示

3.i从0循环到16,xs[i]对应的数值(若xs[i]为'a'则为10)乘以sfzh[i]对应的数值,累加求和为s

4.设置jym为各位余数对应的校验码的字符串'10X98765432’

5.根据s对11的余数对jym切片,若不等于第18位sfzh,显示校验码错误。 

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

7. 统计字符串中的各类字符

 输入字符串,统计其中的大写字母、小写字母、汉字、数字字符和其他字符的个数。

,

输入:字符串 处理: 设置变量sz、xxzm、dxzm、hz、qt为0,分别记录数字、小写、大写、汉字、其他字符的个数 对字符串的每个字符循环,若符合相应的条件则相应的变量加一,均不符合则qt加一。 输出:各变量的值

判断字符是大小写字母与汉字等

,

字符串.isdigit()会判断字符串是否阿拉伯数字字符

字符串.isnumeric()会判断字符串是否是数字字符,包含汉字的数字也会返回真值

该案例中对数字的定义是阿拉伯数字 也可以通过字符的大小判定 例如"Z">=ch>="A"可以判断ch是否大写字母 "z">=ch>="a"可以判断ch是否大写字母

x=input("请输入字符串")
#代码开始
sz = 0
xxzm = 0
dxzm = 0
hz = 0
qt = 0
for i in x:
    if "A" <= i <= "Z":
        dxzm += 1
    elif "a" <= i <= "z":
        xxzm += 1
    elif "\u4e00" <= i <= "\u9fff":
        hz += 1
    elif "0" <= i <= "9":
        sz += 1
    else:
        qt += 1

print("大写字母%s小写字母%s汉字%s数字%s其他%s" % (dxzm, xxzm, hz, sz, qt))

#代码结束

8. 凯撒密码加密

编写一个对输入的字符串进行凯撒密码加密的程序

凯撒密码是古罗马凯撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符,对应关系如下: 原文:abcdefghijklmnopqrstuvwxyz 密文:defghijklmnopqrstuvwxyzabc

每个字符在计算机中可以表示为一个数字,称为编码。 字符串则以编码序列方式存储在计算机中。 目前,计算机采用的重要编码是ASCII编码。 asc码表如图所示

字符a的编码是97,字符b的编码是98,其余字母以此类推 ord(字符)函数可以返回字符的编码 chr(码值)函数可以返回编码对应的字符 例如,chr(97)是'a' ord('d')是100

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

9. 选择题

  • 35
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值