输出100以内的个位数为6,且能被3整除的所有自然数,输出到屏幕上的数之间用空格隔开
求余3为0,求余10为6
for i in range(6,100,3):
if i%10 == 6:
print(i,end=' ')
for i in range(6,100,10):
if i%3 == 0:
print(i,end=' ')
还可以简化,因为只有6,36,66,每隔30个才能被3整除,所以根本不需要判断
for i in range(6,100,30):
print(i,end=' ')
同倒查表方式,只不过增加了一个 log函数 降低热门物品的影响
def UserSimilarity_best(dict_):
items_users = dict()
for u,items in dict_.items():
# print(u)
for i in items.keys():
# print(i)
items_users.setdefault(i,set())
# print(dict_[u][i])
if dict_[u][i] != 0:
items_users[i].add(u)
count = dict()
num = dict()
for i,ur in items_users.items(): #i:{a,b,c,d,……} ur:用户集合 热门
for u in ur:
num.setdefault(u,0)
num[u] += 1
# items_users.setdefault(i,set())
count.setdefault(u,dict()) #key: A B C ……
for v in ur:
count[u].setdefault(v,0)
if u == v:
continue
count[u][v] += 1/math.log(1 + len(ur)) #gonggong log惩罚
w = dict()
for u,realted_u in count.items():
w.setdefault(u,dict())
for v,cuv in realted_u.items():
if u == v:
continue
w[u].setdefault(v,0)
w[u][v] = cuv/math.sqrt(num[u] * num[v] * 1.0)
return w
w3 = UserSimilarity_best(UserCF_dict)