python习题库12-15/1-7

习题12:统计首字母是“a”的单词的个数

编程思想:
1、生成字符串s
2、初始一个count=0,用于统计s字符串中的a的个数
3、将字符串s切割遍历,判断如果s字符串某个位置的元素等于a,那么count加1
4、输出count
知识点:
python split()方法
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
语法:str.split(str="", num=string.count(str)).
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。默认为 -1, 即分隔所有。
返回分割后的字符串列表。
代码:

s="akk alklk bkk aaddd"
count=0
for v in s.split():
    if v[0]=="a":
	    count+=1
print(count)

在这里插入图片描述

习题13:单词顺序翻转

编程思想:
1、生成字符串s
2、通过切割,字符串位置的反转,拼接成一个新的字符串打印输出
代码:

s="I am a man"
print(" ".join(s.split()[::-1]))

在这里插入图片描述

习题14:单词顺序翻转且单词本身翻转

编程思想:
1、生成一个字符串
2、切割遍历反转这个字符串,打印出的的时候再次反转每一个元素
代码:

s="I am a good man"
print("  ".join([word[::-1] for word in s.split()[::-1]]))

在这里插入图片描述

s="I am a good man"
print(s[::-1])

在这里插入图片描述

习题15:判断一下这句话,有几个数字和几个空白,和几个字母其他字符有几个"I am a 12 years old boy! hi,me!"

编程思想
1、生成一个字符串s
2、生成d_num用于存放数字个数,letter_num用于存放字母的个数,space_num用于存放空白的个数,other_num用于存放其他的个数
3、遍历字符串,判断是否属于字母、数字、空白,如果是分别给对应的统计数据加1
4、分别打印输出统计数据
知识点:
1、python isalpha()方法
Python isalpha() 方法检测字符串是否只由字母组成。
语法:str.isalpha()
如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
2、python isdigit()方法
Python isdigit() 方法检测字符串是否只由数字组成。
语法:str.isdigit()
如果字符串只包含数字则返回 True 否则返回 False。
3、Python isspace()方法
Python isspace() 方法检测字符串是否只由空格组成。
语法:str.isspace()
如果字符串中只包含空格,则返回 True,否则返回 False.
代码:

s="I am a 12 years old boy,hello,me!"

d_num=0
letter_num=0
space_num=0
other_num=0

for v in s:
    if  v.isalpha(): 
        letter_num+=1
    elif v.isdigit():
        d_num+=1
    elif v.isspace():
        space_num+=1
    else:
        other_num+=1
        
print(d_num)
print(letter_num)
print(space_num)
print(other_num)

在这里插入图片描述

1、将一个正整数分解质因数

编程思想:
正整数分解质因数n从2开始除:
如果能被2整除,继续从2开始除;
如果不能被2整除,除数依次加1,继续判断能否整除,如果能整除再从2开始除
能整除就加入结果列表,更新n的值,且重置除数为2
1、写一个函数存一个正整数变量prime_num;
2、生成result空列表,用于存放能被整除的整数,初始除数 divisor=2;
3、不确定整数的个数用while循环判断整数不等于1的时候执行循环
如果整数除以2等于0,则将这个整数加入result列表,并且更新整数等于整数除以除数,重置余数等于2
4、否则除数加1
5、返回result列表
代码:

def prime_num(n):
    result=[]
    divisor=2
    while n !=1:
        if n%divisor==0:
            result.append(divisor)
            n=n//divisor
            divisor = 2
        else:
            divisor +=1
    return result
print(prime_num(8))
print(prime_num(9))

在这里插入图片描述

2、一个字符串中,分别输出奇数坐标字符或偶数坐标字符,奇数坐标的一行,偶数坐标的一行

编程思想:
1、生成空的偶数列表odd_list,空的奇数列表even_list;
2、写出字符串s
3、通过遍历这个字符串的长度,判断如果位数可以被2整除,
加入奇数列表,否则加入偶数列表。
3、打印输出奇数和偶数列表
代码:

odd_list=[]#偶数
even_list=[]#奇数
s="abcdefghijk"
for i in range(len(s)):
    if i%2==0:
        even_list.append(s[i])
    else:
        odd_list.append(s[i])
print("偶数字符串:","".join(odd_list))
print("奇数字符串:","".join(even_list))

在这里插入图片描述

3、统计字符串中的字母、数字、其他字符个数

编程思想:
1、生成一个初始的字符串s,初始字符串字母数量letter_num为0,
初始字符串数字数量digit_num为0,其他数量other_num为0;
2、遍历字符串,判断是否属于字母,如果属于字母,letter_num数量加1;
如果属于数字,则digit_num数量加1,否则其他数量加1.
3、分别打印出字母、数字、其他的数量
知识点:
Python isalpha() 方法检测字符串是否只由字母组成。
Python isdigit() 方法检测字符串是否只由数字组成。
代码:

digit_num=0
other_num=0
for i in s:
    if  i.isalpha():
        letter_num+=1
    elif  i.isdigit():
        digit_num+=1
    else:
        other_num+=1
print("字母:",letter_num)
print("数字:",digit_num)
print("其他字符:",other_num)

在这里插入图片描述

4、有一个已经排好序的列表。现输入一个数,要求按原来的规律将它插入列表中

编程思想:
1、生成一个初始的列表num_list
2、从键盘输入一个数字
3、按照列表的长度进行遍历,判断是否大于列表的某个位置的元素,并且小于或者等于某个位置的
元素的后一位,如果符合条件,则将输入的数字插入到num_list列表的元素i+位置上,
4、打印输出插入后的列表
知识点:
python list inser()方法
insert() 函数用于将指定对象插入列表的指定位置。
代码:

num_list=list(range(10))
num=int(input("从键盘输入数字>>"))
for i in range(len(num_list)):
    if num>num_list[i] and  num<=num_list[i+1]:
        num_list.insert(i+1,num)
print("插入后:",num_list)

在这里插入图片描述

5、统计名字列表中,各名字的首字母在名字列表中出现的次数

方法1:
编程思想:
1、初始一个name_list列表,一个name_first_letter用于存放列表中的第一个字母;
2、遍历name_list列表,然后将这个列表的第0个位置的字母加入到name_first_letter列表中
3、初始一个name_first_dict字典,用于存放第一个字母和出现的次数
4、遍历name_first_letter列表,将这个列表里面的字母进行数量统计
5、打印输出name_first_dict
代码:

name_list=["sunsun","whw","dxd","sdfz"]
name_first_letter=[]
for name in name_list:
    name_first_letter.append(name[0])
name_first_dict={}
for i in name_first_letter:
    name_first_dict[i]=name_first_letter.count(i)
print(name_first_dict)

在这里插入图片描述
方法2:
编程思想:
1、初始一个name_list列表,一个name_first_letter用于存放列表中的第一个字母;
2、遍历name_list列表,然后将这个列表的第0个位置的字母加入到name_first_letter列表中
3、初始一个name_first_dict字典,用于存放第一个字母和出现的次数
4、遍历name_first_letter列表,用get进行判断是不是在name_first_dict字典中,
如果在name_first_dict元素等于1,否则加1
5、打印输出name_first_dict
知识点:
Python 字典(Dictionary) get()方法
Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。
代码:

name_list=["sunsun","whw","dxd","sdfz"]
name_first_letter=[]
for name in name_list:
    name_first_letter.append(name[0])
name_first_dict={}
for i in name_first_letter:
    if name_first_dict.get(i) is None:
        name_first_dict[i]=1
    else:
        name_first_dict[i]+=1
print(name_first_dict)

在这里插入图片描述

6、字符替换

1)读入一个字符串
2)去掉字符串的前后空格
3)如果字符串包含数字则1替换成a,2替换成b,3替换成c,以此类推
4)将字符串使用空格进行切分,存到一个列表,然后使用*号连接,并输出
5)把这些功能封装到一个函数里面,把执行结果作为返回值
编程思想:
1)写一个函数parse_str(),引入string包,input从键盘读入一个字符串,使用strip()移除字符串
首位的空格
2)遍历字符串,如果元素i分别等于1,2,3,用replace替换为a,b,c
3) 再次遍历字符串,替换为空格
4)切割字符串,返回切割后的字符串
5)打印出字符串parse_str()
知识点:
1、python strip()方法
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
返回移除字符串头尾指定的字符生成的新字符串。
2、python replace()方法
Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
str.replace(old, new[, max])
old – 将被替换的子字符串。
new – 新字符串,用于替换old子字符串。
max – 可选字符串, 替换不超过 max 次
返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次。
3、python split()方法
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
str.split(str="", num=string.count(str)).
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。默认为 -1, 即分隔所有
返回分割后的字符串列表。
代码:

def parse_str():
    import string
    s=input("请输入一个字符串:")
    s=s.strip()
    for i in s:
        if i=="1":
            s=s.replace(i,"a")
        if i=="2":
            s=s.replace(i,"b")
        if i == "3": 
            s = s.replace(i,"c")
    for i in s:
        if i in string.punctuation:
            s = s.replace(i," ")
    s_list = s.split()
    return  "*".join(s_list)
print(parse_str())

在这里插入图片描述

7、找出字符串中出现次数最多的字符,并输出其出现的位置
str_dict={}
result=[]
s="aabbccddeee"
letter=""
for v  in s:
        str_dict[v] = s.count(v)
for k,v  in str_dict.items():
    if str_dict[k] == max(str_dict.values()):
        letter = k
for i in range(len(s)):
    if s[i] == letter:
        result.append(i)
print("出现次数最多的字符串:%s,出现位置:%s"%(letter,result))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值