作业10/10

四 声明式编程练习题

1、将names=['egon','alex_sb','wupeiqi','yuanhao']中的名字全部变大写
names=['egon','alex_sb','wupeiqi','yuanhao']
a=[]
for i in names:
a.append(i.upper())
print(a)


2、将names=['egon','alex_sb','wupeiqi','yuanhao']中以sb结尾的名字过滤掉,然后保存剩下的名字长度
print([ i for i in names if 'sb'not in i])

3、求文件a.txt中最长的行的长度(长度按字符个数算,需要使用max函数)
with open('a.txt','rt',encoding='utf-8')as f:
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))
猜测:重复sum求和为0 可能是因为迭代对象没了

5、思考题

with open('a.txt') as f:
g=(len(line) for line in f)
print(sum(g)) #为何报错?
回答: 因为print 缩进错误

6、文件shopping.txt内容如下

mac,20000,3
lenovo,3000,10
tesla,1000000,10
chicken,200,1
求总共花了多少钱?

打印出所有商品的信息,格式为[{'name':'xxx','price':333,'count':3},...]

求单价大于10000的商品信息,格式同上
with open('日志文件.txt',encoding='utf-8') as f:
info=[line.split() for line in f]
money=sum(float(price)*int(count) for price,count in info)
print(money)


with open('日志文件.txt',encoding='utf-8') as f:
goods=[{
'name': line.split()[0],
'price': float(line.split()[1]),
'count': int(line.split()[2]),
} for line in f]
print(goods)


with open('日志文件.txt',encoding='utf-8') as f:
goods=[{
'name': line.split()[0],
'price': float(line.split()[1]),
'count': int(line.split()[2]),
} for line in f if float(line.split()[1]) > 10000]
print(goods)
#
'''



# 二分法
nums = [1, 13, 15, 23, 27, 31, 33, 57, 73, 81, 93, 94, 97, 101]  # 从小到大排列的数字列表
def chazhao(shuzi,nums):
if len(nums) == 0:
print(shuzi,'没找到!')
return
zhong=len(nums)//2
if shuzi > nums[zhong]:
qq=nums[zhong+1:]
chazhao(shuzi,qq)
elif shuzi< nums[zhong]:
qq=nums[:zhong]
chazhao(shuzi,qq)
else:print(shuzi,'找到了')

chazhao(57,nums)
 

转载于:https://www.cnblogs.com/junge666/p/9769070.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值