Python 1-11 练习一
一、已知字符串 s = “aAsmr3idd4bgs7Dlsf9eAF”,要求如下
1、请将 s 字符串的大写改为小写,小写改为大写。
#使用字符串的内置方法 a.swapcase():
s = 'aAsmr3idd4bgs7Dlsf9eAF'
t = s.swapcase()
print(t)
2、请将 s 字符串的数字取出,并输出成一个新的字符串。
s = 'aAsmr3idd4bgs7Dlsf9eAF'
# 方法一 for 循环
t = ''
for d in s:
if d.isdigit():
t += d
# 方法二 for 循环
l = []
for d in s:
if d.isdigit():
l.append(d)
t = ''.join(l)
# 方法二
t = ''.join([d for d in s if d.isdigit()]) # 只保留数字
print(t) # '3479'
3、请统计 s 字符串中每个字符的出现次数(忽略大小写),并输出成一个字典。
x = s.lower()
y = set(x) # 集合可以去重
# 方法一 for
d = {} # 定义空集合
for c in y:
d[c] = x.count(c) # key (c) 从 y 中选取 value 从 x 中统计
# 方法二 字典推导式
d = {c:x.count(c) for c in y}
print(d)
4、请将 s 字符串反转并输出
s = 'aAsmr3idd4bugs7Dlsf9eAF'
t = s[::-1] # 存在步长为-1说明该字符串为倒叙输出排序的
print(t) # 'FAe9fslD7sgub4ddi3rmsAa'
5、去除 s 字符串内的数字后,请将该字符串里的字母重新排序(a-z),并且重新输出一个排序后的字符串。(保留大小写,a与A的顺序关系为:A在a前面。例:AaBb)
s = 'Aasmr3idd4bgs7Dlsf9eAF'
# 去除 数字 得到 列表 使用了列表推导式
t = [c for c in s if c.isalpha()]
t.sort()
t.sort(key=str.lower)
x = ''.join(t)
print(x) # 'AAabDddeFfgilmrsss'
二、在 python 命令行里,输入 import this 以后出现的文档,统计该文档中,”be” “is” “idea” 的出现次数。
import os
m = os.popen('python -m this').read() # 使用 os 命令运行 python -m this
# 除字母外,\n 标点符号 等 转成 空格
# 方法一
n = ''
for i in m:
if i.isalpha():
n += i
else:
n += ' '
# 方法二
n = ''.join([x if x.isalpha() else ' ' for x in m])
l = n.split(' ') # 使用空格分割
n = [(x,l.count(x)) for x in ['be','is','idea']] # 统计三个单词在文件中出现频率
print(n)
print('”be” “is” “idea” 的出现次数分别为 {} {} {}'.format(n[0][1],n[1][1],n[2][1]))