1、将names=['egon','alex_sb','wupeiqi','yuanhao']中的名字全部变大写
names = ['egon', 'alex_sb', 'wupeiqi', 'yuanhao']
# 方式一:手动实现
new_names = []
for line in names:
new_names.append(line.swapcase())
print(new_names)
# 方式二:列表生成式
new_names = [line.swapcase() for line in names]
print(new_names)
# 方式三:map+匿名函数
res = map(lambda line: line.swapcase(), names)
print(list(res))
names = [name.upper() for name in names]
print(names)
2、将names=['egon','alex_sb','wupeiqi','yuanhao']中以sb结尾的名字过滤掉,然后保存剩下的名字长度
names = ['egon', 'alex_sb', 'wupeiqi', 'yuanhao']
new_names = []
for line in names:
if not line.endswith('sb'):
new_names.append(line)
print(new_names)
new_names = [len(line) for line in names if not line.endswith('sb')]
print(new_names)
res = filter(lambda line: not line.endswith('sb'), names)
print(list(res))
3、求文件a.txt中最长的行的长度(长度按字符个数算,需要使用max函数)
file = []
with open('a.txt', 'rt', encoding='utf-8')as f:
for line in f:
res = f.read()
# print(res)
res = res.split('
')
file.append(res)
print(file)
def funcs(x):
return len(x)
res = max(file, key=funcs)
print(res)
res2 = max(res, key=funcs)
print(len(res2))
print(max(len(line) for line in f))
4、求文件a.txt中总共包含的字符个数?思考为何在第一次之后的n次sum求和得到的结果为0?(需要使用sum函数)
with open('a.txt', 'rt', encoding='utf-8')as f:
print(sum(len(line) for line in f))
print(sum(len(line) for line in f)) # 求包换换行符在内的文件所有的字符数,为何得到的值为0?
5、思考题
with open('a.txt') as f:
g = (len(line) for line in f)
print(sum(g)) # 为何报错?
with open('a.txt') as f:
print(sum(len(line) for line in f))
print(sum(g)) # 为何报错?(len(line) for line in f)时循环多个值
6、文件shopping.txt内容如下
mac,20000,3
lenovo,3000,10
tesla,1000000,10
chicken,200,1
求总共花了多少钱?
打印出所有商品的信息,格式为[{'name':'xxx','price':333,'count':3},...]
求单价大于10000的商品信息,格式同上
with open('shopping.txt', 'rt', encoding='utf-8') as f:
info = [line.strip('
').split(',') for line in f]
print(info)
cost = sum(float(unit_price) * int(count) for _, unit_price, count in info)
print(cost)
with open('shopping.txt', 'rt', encoding='utf-8') as f:
# for line in f:
# print(line)
info = [{'name': line.strip('
').split(',')[0],
'price': int(line.strip('
').split(',')[1]),
'count': int(line.strip('
').split(',')[2])} for line in f]
print(info)
with open('shopping.txt', encoding='utf-8') as f:
info = [{'name': line.strip('
').split(',')[0],
'price': int(line.strip('
').split(',')[1]),
'count': int(line.strip('
').split(',')[2])} for line in f if int(line.strip('
').split(',')[1]) > 10000]
print(info)