Python—H05—高级数据类型II
2019.12.22日
打印出子字符串的所有位置
描述
编写一个函数,接收2个字符串myString和findString为参数,利用字符串的find()方法,将myString中所有出现findString的位置打印在一行中,每个位置之间用空格隔开。
提示:
输入使用一行,输入的2个字符串用 , 分割。
输入输出示例
输入 输出
示例 1
ABCDEABCDE,CD
2 7
def fa(a,b):
index=a.find(b)
index_list=[]
while index!=-1: #注意条件!=-1
index_list.append(index) #append函数
index=a.find(b,index+1) #正常情况下只可以寻找第一个,但是设置从下一个字母开始就可以找是否还有b片段,+1也可以换成+len(b),+1可能有点难理解。
if len(index_list) > 0: #对的,可以这么比较的
for i in index_list:
print (i,end=' ') #结尾为了没有【】所以用end.
a,b=input().split(",") #记住这个格式,a,b=input().split(",")
fa(a,b) #上面那个有print了,不要加了
求整数的位数及各位数字之和
描述
对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
输入在一行中给出一个不超过10^9的正整数N。
输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。
输入输出示例
输入 输出
示例 1
321
3 6
num=int(input())
b=len(str(num)) #python里求位数可以直接用len
summ=0
for i in str(num):
summ=summ+int(i) #python里可以直接遍历一个数,但是不知道为什么,用b=0;b=b+a%10;a=a/10循环就不对。。
print(b,summ,sep=' ') #请记住sep使用的格式
字符串替换
描述
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
输入格式:
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
输出格式:
输出在一行中给出替换完成后的字符串。
提示:
标准库string中的常量 ascii_uppercase 会以字符串的形式给出26个大写字母。这个字符串常量可以用来创建字母对照表,它是一个字典。
输入输出示例
输入 输出
示例 1
Only the 11 CAPItaL LeTtERS are replaced.
Lnly the 11 XZKRtaO OeGtVIH are replaced.
a = input()
b = []
for n in a :
if"A" <= n <= "Z" :
b.append(chr(155-ord(n))) #记住这个思路,创建新的空列表,符合条件就替换,不符合就直接加进去
else:
b.append(n)
print("".join(b)) #记住,列表化成一列字符的方法,并且,列表里必须是字符,否则报错
按照要求输出字符串
描述
此程序根据用户输入的字符串(一首诗,或者谚语,名句)得到一个单词的列表,根据要求对每个单词进行大小写转换,并对单词列表进行排序,然后调用一个函数word_mixer,生成新的单词列表,最后将得到的单词列表中的单词以空格为连接符,连接为一个字符串并返回。
其中,按照以下要求对每个单词进行大小写转换:
i) 如果单词的长度在3以下(3个字符或者更少),将此单词小写;
ii) 如果单词的长度在7以上 (7个字符或者更多),将此单词大写;
函数word_mixer, 带有一个列表参数wordList,函数返回一个字符串,具体操作如下:
a) 对wordList进行排序,但是不要改变它的值;
b) 创建一个新的列表;
c) 当原始列表的长度大于5时,循环进行如下操作:
i) pop倒数第5个单词添加到新的列表中;
ii) pop第一个单词添加到新的列表中;
iii) pop最后一个单词添加到新的列表中
d) 将最终得到的列表中的单词以空格连接为一个字符串并返回。
输入输出示例
输入 输出
示例 1
Little fly, Thy summer’s play My thoughtless hand Has brushed away. Am not I A fly like thee? Or art not thou A man like me?
or BRUSHED thy not Little thou me? SUMMER’S thee? like THOUGHTLESS play i a not hand a my fly am man
import string #导入库函数
def word_mixer(wordList):
list1=[] #创建一个新的列表,若是b=sorted即创造一个新的排过序的列表为b,sort只可以对原列表进行改变
sorted(wordList) #排序,默认reverse=False(升序),key=lambda可指定用什么排序
while len(wordList)>5: #当长度大于五
list1.append(wordList.pop(-5)) #pop移除
list1.append(wordList.pop(0))
list1.append(wordList.pop(-1))
return " ".join(list1) #拼
str1=input() #输入字符串
wordList=str1.split(" ") #创建列表
for i in range(len(wordList)): #遍历
if len(wordList[i])<4: #分类
wordList[i]=wordList[i].lower() #.lower可以将字母小写
elif len(wordList[i])>6:
wordList[i]=wordList[i].upper() #。upper可以将字母大写
wordList.sort() #调用自定义函数
print(word_mixer(wordList)) #输出