练习三 字符类型及其操作本练习聚焦 Python 字符串各类实用处理操作覆盖字符筛选、字符串删减、编码校验、生物序列统计、密码规则校验、文字数据统计、传统干支换算等场景。通过提取数字、去重连续字符、GS1 编码校验、DNA 碱基比对突变统计、密码合规判断、考勤文本统计、年份干支转换等题型熟练掌握字符串遍历、切片、替换、计数、条件匹配、字符分类判断等核心操作锻炼多行业场景下字符数据清洗与分析能力。I提取数字字符输入字符串x将其中的数字字符(0到9)取出来再逆向输出例如 输入abc123def45gh123 输出32154321输入123abab45 输出54321提示使用一个新的字符串变量保存提取的数字字符串xinput() #代码开始 digits for c in x: if c.isdigit(): digits c print(digits[::-1]) #代码结束II删除连续的字符输入一个字符串得到一个新字符串将原字符串中出现连续的相同的字符在新字符串中只留下一个字符例如原字符串为abbbccdabc新字符串为abcdabc提示:用一个新字符串存放删除重复字符后的新字符串对原字符串遍历将新字符串的最后一个字符与原字符比较将不重复的字符连接到新的字符串xinput() #代码开始 y for c in x: if not y or c! y[-1]: yc #代码结束 print(y)IIIgs1 校验码计算GS1码即GS1全球商品标识代码位置序号是指包括校验码在内的由右至左的顺序号校验码的代码位置序号为1从代码位置序号2开始所有偶数位的数字代码求和。将步骤1的和乘以3。从代码位置序号3开始所有奇数位的数字代码求和。将步骤2与步骤3的结果相加。用大于或等于步骤4所得结果且为10最小整数倍的数减去步骤4所得结果其差即为所求校验码的值。示例代码690123456789XX标识校验码校验码的计算如下。1.975319342.34*31023.864206264.102261285.130-1282校验码2编写程序输入12位编码输出其校验码输入例如输入234567892112输出6输入690123456789输出2sinput().strip() #代码开始 sum_even 0 sum_odd 0 for i in range(12): digit int(s[i]) pos 13-i if pos % 2 0: sum_even digit else: if pos 3: sum_odd digit step2 sum_even * 3 total step2 sum_odd remain total % 10 jym0 if remain 0: jym 0 else: jym 10 - remain #代码结束 print(jym)IVdna 的碱基统计脱氧核糖核酸DNA其中的核糖部分是脱氧核糖.碱基有且仅有四种----腺嘌呤(A)胞嘧啶(C)鸟嘌呤(G)和胸腺嘧啶(T)。输入一段DNA字符串统计并输出ACTG的个数。例如输入AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC输出碱基A数量20碱基C数量12碱基T数量21碱基G数量17若输入的字符串中有其他字符则显示输入错误输入AGXTTTTYATTCTGACTGCAACGGGCAATATGTCTC输出输入错误提示可以设置flag变量来标志是否有错误输入xinput() #开始 count_a 0 count_c 0 count_g 0 count_t 0 flag True for char in x: if char A: count_a 1 elif char C: count_c 1 elif char G: count_g 1 elif char T: count_t 1 else: flag False break if not flag: print(输入错误) else: print(f碱基A数量{count_a}) print(f碱基C数量{count_c}) print(f碱基T数量{count_t}) print(f碱基G数量{count_g}) #结束V点突变个数突变是核酸复制或合成时的错误最简单的突变就是点突变。给定两个相等长度的DNA字符串要求计算点突变的数目。输入两相等长度的DNA字符串输出两个字符串相同位置字符不同的个数若输入的字符串不等长或者包含除了ACTG外的其他字符输出DNA错误平台会对你编写的代码进行测试测试输入GAGCCTACTAACGGGATCATCGTAATGACGGCCT预期输出7测试输入BGAGCCTACTAACGGGATCATCGTAATGACGGCCT预期输出DNA错误测试输入CATCGTAATGACGGCCTCAGGG预期输出DNA错误s1input() s2input() #代码开始 valid_bases {A, C, G, T} error_flag False if len(s1) ! len(s2): error_flag True else: for char in s1: if char not in valid_bases: error_flag True break if not error_flag: for char in s2: if char not in valid_bases: error_flag True break if error_flag: print(DNA错误) else: count 0 for a, b in zip(s1, s2): if a ! b: count 1 print(count) #代码结束VI密码有效性检测小明同学最近开发了一个网站在用户注册账户的时候需要设置账户的密码为了加强账户的安全性小明对密码强度有一定要求1.密码长度至少为82.密码只能由大写字母小写字母数字构成3.密码不能以数字开头编写程序输入密码若符合以上要求显示合法密码否则显示非法密码例如若输入12abcdefg输出非法密码输入abc12xyz输出合法密码输入a#c12xyz输出非法密码提示字符串方法isalpha()可以判断字符串是否为英文字母isdigit()可以判断字符串是否为数字字符可以设置flag变量的值来标识字符串是否合法xinput() #开始 valid True if len(x) 8: valid False if x[0].isdigit(): valid False for char in x: if not (char.isupper() or char.islower() or char.isdigit()): valid False break if valid: print(合法密码) else: print(非法密码) #结束VII考勤计算某单位的考勤机输出一串字符串表示员工出勤状况字符A表示正常字符B表示迟到字符C表示请假字符D表示加班该单位规定正常上班奖励5元迟到一次罚款10元请假一次扣除50加班一次奖励50输入一串字符串计算员工的奖金(有可能为负数)例如AAABCDD则显示金额55例如ABBBCAAAAAA则显示金额-45xinput() #代码开始 bonus 0 for c in x: if c A: bonus 5 elif c B: bonus - 10 elif c C: bonus - 50 elif c D: bonus 50 print(f金额{bonus}) #代码结束VIII年号干支的计算在中国传统文化中年份可以用天干地支来表示转换方法如下天干年份-3/10……余数一地支年份-3/12……余数二余数一为1-9和0按以下规则取天干天干甲、乙、丙、丁、戊、己、庚、辛、壬、癸余数二为1-11和0按以下规则取地支地支子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥例如2021年2021-3/10……余数一为8 天干是辛2021-3/12……余数二为2 地支是丑所以为辛丑年编写程序输入年号显示其天干地支例如输入2020输出庚子年yeval(input()) tgzf癸甲乙丙丁戊己庚辛壬癸 dzzf亥子丑寅卯辰巳午未申酉戌 #代码开始 tian_gan_index (y % 10 - 3) % 10 di_zhi_index (y % 12 - 3) % 12 tian_gan tgzf[tian_gan_index] di_zhi dzzf[di_zhi_index] print(f{tian_gan}{di_zhi}年) #代码结束