头歌 第6章 字符串 python

1.第1关:练习-Python字符串之综合练习一

任务:给定一个字符串,该字符串中包含了许多邮箱号,使用字符串函数筛选出这些邮箱号,并根据不同的电子邮件服务商来分类。
分类结果为一个字典,字典的键为邮箱号中`@`和`.com`之间的一截,字典的值为包含邮箱号的列表

import copy
str1 = input()# 包含邮箱号的字符串,input()输入的都是字符串
Str =copy.deepcopy(str1) #复制一个
count=Str.count("@")#看看有多少个邮箱号码
list1=list(str1.split(','))#把邮箱号全部放入list1中作为邮箱的value列表
list2=[]#定义一个空列表,作为邮箱类名的key值列表
for i in range(0,count):#有几个邮箱切几次
    a = Str.find("@")# 返回@的位置
    b = Str.find(".")# 返回.的位置
    if Str[a+1:b] not in list2:#去重操作,因为可能有好几个同类别的邮箱
        list2.append(Str[a+1:b])#把邮箱类名放入list2中
    Str=Str[b+4:]#把前面判断过的邮箱号码删除,接着判断知道判断结束为止
dic={}#定义一个空列表,将其键与值对应存入,注意这里一个键对应多个值,所以值的类型是列表,(题目要求已经给出)
for i in list2:
    for j in list1:
        if j.endswith(i+".com"):#如果值是以邮箱名+.com结尾
            dic.setdefault(i,[]).append(j)#就加入到key对应的列表中
res=[]#返回结果列表
keys=[]#key值列表
values=[]#value值列表
for key,valu in dic.items():#遍历字典
    keys.append(key)#将键加入到keys列表中
    values.append(valu)#将值加入到values列表中,注意这里有一个列表嵌套,列表里面还有列表
for i in range(len(keys)):#有几个键就循环几次
        str4=",".join(values[i])#去除了列表的方括号
        res.append(keys[i]+':'+str4)#将格式化后的元素加入到返回结果列表里面
res.sort()#进行排序,要符合测试集给出的顺序
print(res)#输出答案###

2.第2关:练习-Python字符串之综合练习二

任务:给定一个字符串,该字符串的内容为一个英语短句,请编写代码实现单词的反向排序

str1 = input()

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 使用字符串函数实现单词反向排序,打印反向排序之后的结果
list1 = str1.split()
list1.reverse()
str2 = " ".join(list1)
print(str2)

3.第3关:练习-Python字符串之综合练习三

任务:给定一个字符串,该字符串是一个包含地名、空格、特殊符号和 html 标签的字符串,请使用字符串函数筛选出其中的地名。

import re
str1 = input()
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 使用字符串函数来清洗出字符串中的地名
clean_string = re.sub(r'<[^>]+>', '', str1)
# 输出结果
# 去除 ** 字符
final_string = clean_string.replace('**', '')
# 输出最终结果
print(final_string)

4.第4关:练习-Python字符串之密码安全强度检查

password = input()     # 获取密码字符串

# 定义判断密码安全性的函数
def check_password_security(password):
    # 判断是否为低级密码
    if password.isalnum():
        if password.isdigit():  # 判断是否由单纯的数字或字母组成
           return "低级密码"
        elif password.isalpha():
           return "低级密码"

    
    # 判断是否为高级密码
    if (len(password) >= 8 and
        password[0].isalpha() and  # 判断是否由字母开头
        any(char.isdigit() for char in password) and  # 判断是否包含数字
        any(char.isalpha() for char in password) and  # 判断是否包含字母
        any(not char.isalnum() for char in password)):  # 判断是否包含特殊字符
        return "高级密码"
    
    # 其余类型的密码都属于中级密码
    return "中级密码"

# 调用函数并打印结果
print(check_password_security(password))

5.第5关:练习-Python字符串之验证码生成

任务:请编写代码实现生成一个 n 位的验证码,验证码可由大小写字母和数字组成

import random
import string
n = int(input())     # 验证码的位数
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 使用string和random模块随机生成n位的验证码,将生成的验证码赋值给变量 result
result = ''.join(random.choices(string.ascii_letters + string.digits, k=n))
########## End ##########
if result.isalnum() and len(result)==n:
    print(result)
    print("验证码生成成功")
else:
    print("验证码生成错误")

6.第6关:学习-Python字符串之随机密码生成

import random
import string

########## Begin ##########
# 使用 random 模块实现随机生成一个 8 位数的密码,将密码赋值给变量 password
password = ''.join(random.choices(string.ascii_letters + string.digits, k=8))
########## End ##########

if len(str(password)) == 8:
    print(password)
    print("随机密码生成成功")
else:
    print("随机密码生成失败,长度不为8")

7.第7关:练习-Python字符串之内置函数应用

任务:使用内置函数将一个列表转换为一个字典,字典的键为该元素在列表中的下标,
字典的值为该元素的值,打印转换后的字典。

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 使用内置函数将列表转换为字典,打印转换后的字典
my_list = eval(input())
my_dict = {index: value for index, value in enumerate(my_list)}
########## End ##########

print(my_dict)
########## End ##########

8.第8关:学习-Python字符串之内置函数应用

任务:给定一个字符串,利用内置函数判断该字符串是否为回文串。该字符串通过 input 函数获取。如果是回文串则输出“是回文串”,如果不是则输出“不是回文串”

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 利用内置函数判断该字符串是否为回文串
n1 = input()
if n1 == n1[::-1]:
    print("是回文串")
else:
    print("不是回文串")

9.练习-Python字符串常用操作之大小写转换

任务:给定一个字母,判断字母的大小写,如果是大写,将该字母转换为小写,反之,将字母改为大写。
该字母通过 input 函数获取。打印转换后的字母。如果不是字母则输出“不是字母”

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 使用字符串函数实现字母大小写的切换
def convert_case(char):
    # 检查输入是否为单个字符
    if len(char) != 1:
        return "请输入一个字符"

    # 检查输入是否是字母
    if char.isalpha():
        # 如果是大写字母,转换为小写;如果是小写字母,转换为大写
        if char.isupper():
            return char.lower()
        elif char.islower():
            return char.upper()
    else:
        # 如果不是字母,返回提示信息
        return "不是字母"


# 示例使用
user_input = input()
result = convert_case(user_input)
print(result)
 
########## End ##########

10.学习-Python字符串常用操作之登录信息规范性检查

任务:在登陆一个账号时,通常要检查账号和密码是否符合要求,现在给定一个账号字符串和一个密码字符串,账号只能为数字,密码可以是字母或者数字。
账号和密码都通过 input 函数获取,请判断账号和密码是否符合要求。

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
account = input()     # 账号
password = input()     # 密码
if account.isdecimal() != True:
    print("账号违规")
if password.isalnum() != True:
    print("密码违规")
if password.isalnum() == True and account.isdecimal() == True:
    print("账号密码符合要求")
# 使用字符串函数来判断账号密码是否违规,并按照任务要求输出
########## End ##########

11.学习-Python字符串常用操作之一

任务:给定一个完整的网址,请使用字符串函数清洗出其中的域名。也就是获取www.educoder.net中的educoder。网址通过 input 函数获取,打印出域名

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 使用字符串函数筛选出网址中的域名,并打印该域名
str1 = input()
str2 = str1.split(".",2)
print(str2[1])
########## End ##########

12.练习-Python字符串常用操作之一

任务:给定一个字符串,统计字符串中每个字符在该字符串中出现位置的所有下标。输出一个字典,字典的键为字符,值为该字符出现的所有下标。

举个例子:“hello”   输出结果:{"h":[0],"e":[1],"l":[2,3],"o":[4]}

# 给定一个字符串
s = input()  # 获取字符串

########## Begin ##########
# 使用字符串函数完成本关任务,并按照要求打印结果
result = {}  # 初始化一个空字典来存储结果

# 遍历字符串,统计每个字符出现的所有下标
for index, char in enumerate(s):
    if char in result:
        result[char].append(index)  # 如果字符已在字典中,添加下标
    else:
        result[char] = [index]  # 如果字符不在字典中,添加字符和下标

# 打印结果
print(result)
########## End ########## 

13.学习-Python字符串常用操作之二

任务:给定一个字符串,去除字符串中非字母的字符,然后将每个字符串的首字母大写,打印处理后的字符串。字符串通过 input 函数获取

import re
def remove_non_alpha(s):
    return re.sub(r'[^a-zA-Z]', '', s)
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 第一步:使用字符串函数去除字符串中非字符的字符,可以观察测试输入来完成
str1 = input()
# 第二步:将字符串的首字母大写,并打印处理后的字符串
result = remove_non_alpha(str1)
str2 = result.capitalize()
print(str2)
########## End ##########

14.练习-Python字符串常用操作之二

任务:给定一个字符串,判断该字符串是否是回文串。字符串通过 input 获取,如果是,则输出“是回文串”,如果不是,则输出“不是回文串”。

n1 = input()
if n1 == n1[::-1]:
    print("是回文串")
else:
    print("不是回文串")

15.学习-Python字符串常用操作之三

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 使用字符串函数来判断电话号码的运营商
str1 = input()
if (str1.startswith("130",0,4)) ==  True :
    print("中国联通")
elif (str1.startswith("133",0,4)) == True :
    print("中国电信")
elif (str1.startswith("134",0,4)) == True :
    print("中国移动")
else:
    print("输入数据不合法")
########## End ##########

16.练习-Python字符串常用操作之三

任务:在编写代码时,我们规定在代码末尾注释时需要给定 5 个空格来隔开。以字符串的形式给定一行代码,请使用字符串函数将代码中的注释修改为符合要求的形式。打印修改后的代码

code = input()
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 第一步:切分出注释部分代码
str1 = code.strip("# 注释")
str3 = str1 + "     " + "# 注释"
print(str3)

17.练习-Python字符串之格式化

任务:输出如下所示格式美观的杨辉三角的前 n 行。n 通过 input 函数获取。下例为 n=7 时的杨辉三角。具体输出情况可以查看预期输出

n = int(input())
list1 = [[1],[1,1]]
for i in range(2,n):
    pre = list1[i-1]
    cul = [1]
    for j in range(i-1):
        cul.append(pre[j]+pre[j+1])
    cul.append(1)
    list1.append(cul)

for i in range(n):
    print(" "*3*(n-i-1),end="")
    xx = 1
    for j in list1[i]:
        if xx == 1:
            print("%5s"%j,end="")
        else:
            print("%6s"%j,end="")
        xx += 1
    print(" "*(3*(n-i-1)+4))
 
########## End ##########

18.学习-Python字符串之格式化

任务:给定一个列表,计算列表内所有数据标准差,结果保留小数点后 2 位。

import math

list1 = eval(input())
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
########## Begin ##########
# 计算列表内所有元素的标准差
# 首先计算平均值
mean = sum(list1) / len(list1)
# 计算方差
variance = sum((x - mean) ** 2 for x in list1) / len(list1)
# 计算标准差
std_dev = math.sqrt(variance)
# 使用格式化输出打印结果,并保留小数点后2位
print(f"{std_dev:.2f}")
########## End ##########

19.练习-Python字符串之文本编码格式
任务:给定一个字符串乱码,请对该字符串进行合适的编码和解码操作,使字符串还原成正常的格式。字符串乱码通过 input 获取

x=input()
t=x.encode('gbk')
print(t.decode('utf-8'))

20.学习-Python字符串之文本编码格式

任务:给定一个编码之后的字符串,请输出它的编码方式,并输出解码之后的字符串。结果以字典的形式输出。

输出格式:{"编码格式": "gbk","字符串":···}

import chardet

# 原始输入
encoded_string = eval(input())
# 使用chardet检测编码
result = chardet.detect(encoded_string)
# 解码字符串
decoded_string = encoded_string.decode(result['encoding'])
# 输出结果
output = {
    '编码格式': result['encoding'],
    '字符串': decoded_string
}
print(output)
        # print(f"编码格式: {result[keys]}, 字符串: {decoded_string}")
# 解码字符串

########## End ##########

作者:ππ抓蛙

物联沃分享整理
物联沃-IOTWORD物联网 » 头歌 第6章 字符串 python

发表回复