目录
2. 一个字符串中,分别输出奇数坐标字符或偶数坐标字符,奇数坐标的一行,偶数坐标的一行
4. 有一个已经排好序的列表。现输入一个数,要求按原来的规律将它插入列表中
10. 实现字符串的upper、lower以及swapcase方法
19. 报数问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
20. 由单个字母组成的list,从键盘读入两个整数m、n(n>m),打印出list[m,n]之间的字母能组成的所有n-m+1位不同的字符串
1. 将一个正整数分解质因数
def prime_factor(n):
"""
对n分解质因数,并返回它的质因数
算法:分解质因数只针对合数。求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。
"""
if not isinstance(n,int):
return n
prime_list = []
while n!=1:
for i in range(2,n+1):
if n % i == 0:
prime_list.append(i)
n //= i
break
return prime_list
n=180
result = prime_factor(n)
r_len = len(result)
print("分解质因数:%d = " %n,end="")
for i in range(r_len):
if i == r_len-1:
print(result[i])
else:
print(result[i],end=" * ")
2. 一个字符串中,分别输出奇数坐标字符或偶数坐标字符,奇数坐标的一行,偶数坐标的一行
s="Reading for pleasure and reading for study are not the same"
s_len=len(s)
odd_str,even_str="",""
for i in range(s_len):
if i % 2 == 0:
even_str += s[i]
else:
odd_str += s[i]
print("odd coordinates string:", odd_str)
print("even coordinates string:", even_str)
3. 统计字符串中的字母、数字、其他字符个数
import string
s="If you co-ordinate 12 clothes or furnishings that are used together 8, or if they co-ordinate, they are similar in 30 some way and look nice together."
num_count = 0
letter_count = 0
other_count = 0
# print(len(s))
for i in s:
if i in string.digits:
num_count += 1
elif i in string.ascii_letters:
letter_count += 1
else:
other_count += 1
print("字符串中字母个数:%d, 数字个数:%d, 其他字符个数:%d" % (letter_count,num_count,other_count))
4. 有一个已经排好序的列表。现输入一个数,要求按原来的规律将它插入列表中
l=[21,25,28,33,40,56]
l_len=len(l)
num = int(input("请输入一个数字:"))
for i in range(l_len):
if l[i] > num:
l.insert(i,num)
break
if i == l_len - 1:
l.append(num)
print("插入后:",l)
5. 统计名字列表中,各名字的首字母在名字列表中出现的次数
name_list = ["Amanda","Jack","Amy","Anthony","Vicky","Bob","Timmy","Ben","Andy","Neil","Mark","Stephen"]
d={}
for name in name_list:
if name[0] not in d.keys():
d[name[0]] = 1
else:
d[name[0]] += 1
print(d)
6. 字符替换
1)读入一个字符串
2)去掉字符串的前后空格
3)如果字符串包含数字则1替换成a,2替换成b,3替换成c,以此类推
4)将字符串使用空格进行切分,存到一个列表,然后使用*号连接,并输出
5)把这些功能封装到一个函数里面,把执行结果作为返回值
def str_replace():
s=input("please input:")
s=s.strip()
result = ""
for i in s:
if i >= "1" and i<="9":
result += chr(ord("a")-ord("1")+ord(i))
elif i == "0":
result += chr(ord("a")-ord("1")+ord(i)+9)
else:
result += i
return "*".join(result.split())
print("After replace:",str_replace())
7. 找出字符串中出现次数最多的字符,并输出其出现的位置
def find_word(s):
if not isinstance(s,str):
return -1
d={}
s_len=len(s)
# 统计字符串中每个字符的出现次数
for i in s:
if i not in d.keys():
d[i] = 1
else:
d[i] += 1
# 找到出现次数最多的字符
max_word=""
max_value=0
for k,v in d.items():
if v > max_value:
max_value = v
max_word = k
# 统计并输出其出现的位置
index_list=[]
for i in range(s_len):
if s[i] == max_word:
index_list.append(i)
# 返回出现次数最多的字符、出现次数及其出现位置
return max_word,max_value,index_list
s=input("请输入字符串:")
result = find_word(s)
print("出现次数最多的字符是:%s,出现次数为:%d.\n其出现位置是:%s" % (result[0],result[1],result[2]))
8. 找出一段句子中最长的单词及其索引位置,以字典返回
import string
# 方法1
def find_longest_word(s):
# 用""替换特殊字符
new_s = ""
for i in s:
if i in string.punctuation:
new_s += "" # 也可以直接使用s.replace(i,"")
else:
new_s += i
# 用空格分隔字符串
result = new_s.split()
longest_wo