Python学习

【例1】用户输入一个三位自然数,计算并输出其佰

位、十位和个位上的数字。

常规方法:

 

x = input(‘请输入一个三位数:’)

x = int(x)#装换类型

a = x // 100#整除一百得到第一个数

b = x // 10 % 10#整除10得前面两位数,再对10求余得第二位数

c = x % 10

print(a, b, c)

 

利用divmad函数,可以同时整除和求余

x = input('请输入一个三位数:')

x = int(x)

a, b = divmod(x, 100)

b, c = divmod(b, 10)

print(a, b, c)

 

利用map函数映射,把字符串中每个元素都映射成为int类型然后输出

x = input('请输入一个n位自然数:')

print(*map(int, x))

 

【例2】已知三角形的两边长及其夹角,求第三边长。

 

import math

x = input('输入两边长及夹角(度):')

a, b, theta = map(float, x.split())

#利用split函数把字符串按空格分开(如果有其他分割符号就传入那个符号作为参数),然后利用map函数映射成float类型

c = math.sqrt(a**2 + b**2 - 2*a*b*math.cos(theta*math.pi/180))#利用math函数进行运算

print(‘c=’, c)

 

# **是幂运算 **0.5就是开平方根 math.cos函数的单位是弧度

 

【例3】认识 jieba 分词库

import jieba

jieba.lcut(“我们正在电脑前面学习python")#学会用jieba库进行分词

Jieba.add_word("电脑前面")#添加新词给jiaba库

 

import re

import jieba

text='我【们正在电*脑&前面**学习】python'

newtext=re.sub(r'[【】*#-]*&','',text)#re库中的替代sub把一些不需要的字符去掉

jieba.lcut(newtext)

若库未安装,则进入到 script 目录,

使用pip install 命令安装

若速度过慢,可指定镜像文件安装,

如:

pip install -i

http://pypi.douban.com/simple/

jieba --trusted

host=pypi.douban.com

(其他库,将红色字体部分替换即可)

使用 pip list命令可查看已安装好的 库

 

【例4】词频统计

#我们首先需要造一点数据,生成包含1000

个随机字符的字符串,然后统计每个字符的

出现次数。

import string

import random

x='0123456789‘

y=random.choices(x,k=1000)

z=''.join(y)

d=dict()

for ch in z:

d[ch]=d.get(ch,0)+1

print(d)

#利用字典类型,对出现的词组个数进行统计

#使用collections模块的Counter类

from collections import Counter

frequences=Counter(z)

frequences.most_common(1)

frequences.most_common(3)

 

【例5】过滤无效书评

#最简单的规则:正常书评中,重复的字应该不会超过一定的比例。

rule = lambda s:len(set(s))/len(s)>0.5

#l利用元组的过滤重复元素,然后求出其中不同字符个数占整个字符的比例

# lambda表达式,相当于一个匿名的函数

result = filter(rule, comments)

print('原始书评:')

for comment in comments:

print(comment)

print('='*30)

print('过滤后的书评:')

for comment in result:

print(comment)

 

【例6】电影推荐1

假设已有若干用户名字及其喜欢的电影清单,现有某用户,已看

过并喜欢一些电影,现在想找个新电影看看,又不知道看什么好。

思路:根据已有数据,查找与该用户爱好最相似的用户,也就是

看过并喜欢的电影与该用户最接近,然后从那个用户喜欢的电影

中选取一个当前用户还没看过的电影,进行推荐。--基于用户的

协同过滤算法

#我们首先需要造一点数据,模拟用户看的电影。

from random import randrange

data={‘user’+str(i):{‘film’+str(randrange(1,10)) for j in

range(randrange(15))} for i in range(10)}

#此处用到了列表推导式,关于列表推导式见下页

#randrange(n,m)随机输出n到m之间的整数,这里用了两次。一次代表这个人看的电影个数是随机的,第二个是看的电影是随机的

user = {'film1', 'film2', 'film3'}

similarUser,films=max(data.items(),key=lambda

item:(item[1]!=user,len(item[1]&user)))

#用len求出和user的相似度的列表,然后用max求最大相似的列表

print('历史数据:')

for u, f in data.items():

print(u, f, sep=':')

print('和您最相似的用户是:', similarUser)

print('Ta最喜欢看的电影是:', films)

print('Ta看过的电影中您还没看过的有:', films-user)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值