python刷题—第6周

7 篇文章 0 订阅
7 篇文章 0 订阅

在这里插入图片描述

刷题笔记
1)第4章-30 找完数(该数恰好等于除自身外的因子之和)
首先是思路。我在构思的过程用该数取余a,a的范围从2到该数的一半再加1,如果取余结果为0,就加入列表。最后列表之和如果等于该数,它就是完数。但是通过有问题,显示运行超时。我寻思是循环部分用时过长,效率低。去网上借鉴了别人的代码,发现别的博主的思路里,a的范围是从2到该数开方加1,若取余结果为零,且确定该数不等于a的平方,就把该数除于a的结果一并加入列表。这样大大节省遍历时间。

for i in range(a,b+1):
    list=[1]
    for j in range(2,int(math.sqrt(i)+1)):
        if(i%j==0):
            list.append(j)
            if j*j!=i:
                list.append(i//j)  #"//"符号表示取整,6//4=1,6.0//4=1.0
    if sum(list)==i:
        print("{:d} = ".format(i),end="")

2)第5章-2 图的字典表示 ( 关于遍历字典)
由于之前打的题里面涉及字典的知识比较少,本人对字典不甚熟练。
遍历键可以直接用for i in dict,取值为dict[j]。5-2里面涉及了嵌套字典的取键和取值,下面是相关代码

>>{'a':{'b':10,'c':6}}
dict=eval(input())  
for j in dict: #遍历外部字典的键 此时j='a'
    temp=dict[j] #访问值,即内部字典  <<temp='b':10,'c':6
    for i in temp:
    	print(temp[i])  <<10  6
#len(temp) <<6
#删除字典元素
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
 
del dict['Name']  # 删除键是'Name'的条目
dict.clear()      # 清空字典所有条目
del dict          # 删除字典
#遍历value值
for value in a.values():
       print(value)
#遍历key值
 for key in a.keys():
 	print(key)
#遍历字典健值
for key,value in a.items():
       print(key+':'+value)

3)eval()函数
eval()可以把“”去除

>>>[4,7,5,6,8,6,9,5]
>>>n=eval(input())  #这里把输入的字符串转为列表
>>>print(type(n))
<class 'list'>

4)python中关于删除list中的某个元素,有三种方法:remove、pop、del: 、replace()
remove: 删除单个元素,删除首个符合条件的元素,按值删除
pop: 删除单个或多个元素,按位删除(根据索引删除)
del:它是根据索引(元素所在位置)来删除
replace():用‘’代替元素,即删除,它是按值删除

>>> str=[1,2,3,4,5,2,6]
>>> str.remove(2)
>>> str
[1, 3, 4, 5, 2, 6]

>>>str.pop(1)
>>>str
[1,4,5,2,6]

>>>del str[1]
>>>str
[1,5,2,6]

>>>del str[1,2]
>>>str
[1,6]

>>>str=str.replace('6','')
[1]

5)join()函数只能连接字符,直接连接数字会报错。

6)count() 方法计算元素在列表中出现的次数,st.count(i),i是列表元素

 list=[10,2,0,5,7,2,5,2]
 print(list.count(2))
 <<3

7)列表去重一般步骤

#1.把输入字符串转为列表
#2.用set()除去重复元素,再转为列表
#3.若想按原来字符串顺序,用sorted()
n=eval(input())
n1=list(set(n))
print(" ".join(map(str,sorted(n1,key=n.index))))
#n1.sort(key=n.index)
#print(" ".join(map(str,n1)))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值