【例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)