Python中的循环
- while循环:
while 循环条件:
(4个空格)循环体
计算1-100 之间的累加和
sum_num = 0
i = 1
while i <= 100:
#对count进行累加
sum_num += i
#i = i + 1
#python中并没有设置专门的i++操作,使用i+ =1 进行操作
i += 1
print(sum_num)
#5050
break continue在循环中的应用
- break是跳出本层循环
- continue 跳过本次循环
- pass是空语句
计算1-100之间的奇数和
i = 1
sum_num = 0
while i <=100:
#把所有的偶数过滤掉
if i % 2 ==0: #偶数的时候跳出循环
i += 1
continue
sum_num += i
i +=1
print(sum_num)
#2500
生成一定范围内的随机数
导入随机数模块:
from random import randint #左闭右闭
在10-15之间产生随机数:
print(randint(10,15))
验证randint的左闭右闭
while True:
print(randint(10,15))
猜数字游戏:
在控制台中输入 :请给定要猜的最大数字,请给定要猜的最小数字。
eg: [1, 100] 给定数字的区间,电脑在这个区间随机生成一个数字
我们要在1 到100 之间猜出这个数字, 因为一次猜对的可能性小,
我们要在每次猜的时候提示猜大了还是猜小了,
如果猜1次就对,提示你也太厉害了吧,这是高手
如果猜2-5次对,提示恭喜只用了 i次就猜对了数字
如果猜 5次以上,提示,你也太菜了吧, i 次才能猜的出来,洗洗睡吧
代码
from random import randint
max_num =int(input("请给定要猜的最大数字"))
min_num =int(input("请给定要猜的最小数字"))
#随机生成一个数字,让用户猜这个数字
generate_num =randint(min_num,max_num)
count = 0
while True:
count += 1
guess_num = int(input("请输入您要猜的数字"))
if guess_num < generate_num:
print("您猜小了")
elif guess_num > generate_num:
print('您好像猜大了')
else:
#猜对的情况
if count == 1:
print('你也太厉害了,一次就猜对了,高手')
elif count > 1 and count <6:
print('恭喜你只用了‘,count,’次就猜对啦')
else:
print('回去洗洗睡吧')
for循环
格式:
for 临时变量 in 可迭代对象:
(4个空格) 循环体
- 示例:
取出neusoft中的每一个字母
name = 'neusoft'
#遍历这个单词的每一个字母
for x in name : #临时变量不需要提前声明
print(x)
- 求1到100的累加和
sum_num = 0
for i in range(1,101):
sum_num += i
print(sum_num)
- 求1到100中的奇数和
sum_num = 0
for i in range(1,101,2): #rang(起始位置,终止位置,步长)函数生成的是左闭右开的区间数
sum_num += i
print(sum_num)
用for循环打印打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(j,'x',i ,'=',j*i,end='')
print()
常用数据类型:number,字符串,列表(list),元组(tuple),字典(dict),集合(set)
- 列表(list):python中的列表和c中数组很像,不同的地方是他可以储存不同的数据类型
list1 =[1,2,'张三','list'] #创建第一个列表
print(type(list1))#<class 'list'>
print(list1)#[1, 2, '张三', 'list']
#遍历列表,把元素一个一个取出来
#for 临时变量 in可迭代对象
for x in list1:
print(x)
- 列表的的增加操作
skill_list = []
for i in range(1,5):
skill = '技能' + str(i)#将数字转化成string类型
#向列表里添加元素
skill_list.append(skill)
print(skill_list)
创建一个a =[0,1,2,3,....10]的列表
a =[]
for i in range(0,11):
a.append(i)
print(a)
- 访问
访问skill_list的第二个元素
print(skill_list[1])
- 判断a列表中是否有9这个数字
if 9 in a :
print('9在a中')
- 删除
删除技能2这个元素
#del 要删除的列表名[索引]
del skill_list[1]
print('删除后',skill_list)
- 修改
#修改skill_list最后一个元素为 垂直打击
skill_list[2] = '垂直打击'
print('修改后',skill_list)
- 元组
- 创建元组, () 表示元组
a=(1,2,'lisi')
print(type(a))
特点:和列表很相似,只是元组不能进行修改
元组既然不能修改,还跟列表相似,要他有何用?
元组得优点:
1)元祖的速度快于列表
2)不能修改可以带来'写保护',安全
3)元组可以常被作为字典的键使用
4)只有一个元素的元组需在元素后加逗号,避免识别成int类型
- 字符串的常用操作
特点:
1)字符串创建 可以使用单引号也可以使用双引号
2)涉及到引号的嵌套时可采用外层单引号,里层双引号的方式,相反也可
- 示例
str1 = 'neusoft'
str2 = "欢迎来到"
str3 = '今天"22"号'
print(str1)
print(str2)
print(str3)
#neusoft
#欢迎来到
- replace()替换
- 示例
price ='¥988'
price=price.replace('¥','')#替换后徐重新赋值price
print(price)
- strip() 去两端的空格
- 示例
name = ' life is short '
print(len(name))
name =name.strip()
print('去空格后',len(name))
- join() 主要应用于把列表变成字符串
- 示例
str_intro = " " 当空字符串中引号之间是什么,转换字符串中间就是什么
li = ["I", "love", "wangzhe"]
#把li变成字符串
str4 = str_intro.join(li)
print(str4)
或
print(" " .join(li)) #提取列表中的字符串内容时
- len()内置函数
功能:
用于检测容器内元素的个数
- 示例
print(len(str2))
- *操作
特点: *代表复制 +代表加
- 示例
print(str1*3)
print(str1+str(3))或者print(str1+'3')
8)字符串的格式化输出 最流行的是format函数输出
格式:
'{}字符串{}'.format(变量1, 变量2)
- 示例
hero ='鲁班七号'
grade = 13
print('您当前使用的英雄是{},等级为{}'.format(hero,grade))
#您当前使用的英雄是鲁班七号,等级为13
- 字典
使用{}创建字典,字典中的每一个元素都以键值对的形式存在,中间用冒号隔开
- 示例
stu_info = {'name': '刘向东', 'addr': '北京', 'age': '18'}
#print(stu_info)
#字典的访问,通过键访问值
print(stu_info['name'])
#刘向东
1)字典的修改,访问键然后赋值
stu_info['age'] = 50
print('修改后的值',stu_info)
2)增加 当字典中不存在这个键的时候,就是相当于往字典中添加了元素
stu_info['sex'] = 'female'
print('增加后', stu_info)
3)解决访问键不存在时报错情况
print(stu_info.get('sex', 'female'))#当字典中存在该键时
4)删除
del 字典['键']
del stu_info['sex']
print('删除后的',stu_info)
5)返回字典所有的键 k
print(stu_info.keys())
6)#返回字典中所有的值 v
print(stu_info.values())
7)返回所有键值对:
返回形式是列表,列表中的每一个元素都是一个元组
print(stu_info.items())
stu_info_list = stu_info.items()
8)转化成字典
print(dict(stu_info_list))
9)字典的遍历输出
for k, v in stu_info.items():
print(k, ';', v)
- 集合 :
也使用{}表示,只不过{}中没有元素时代表的是空字典
特点:无序,不重复
set1 = {'zhangsan',3333,124}
print(type(set1)) #type表示类型
#<class 'set'>
1)集合的遍历
for x in set1:
print(x)
中文分词
英文单词由于单词之间是有空格的,所以不需要分词,中文则不同
这就需要我们使用第三方库来进行分割
jieba结巴粉刺是目前最流行的中文分词库
特点:结巴分词的特点:
支持三种模式:
a)精确模式
seg = '我来北京上大学'
seg_list = jieba.lcut(seg)
print(seg_list)
b)全模式:
cut_all参数用来控制是否采用全模式
将字符串中所有的分词结果都列举出来
特点:全, 缺点:冗余性大
seg_list1 = jieba.lcut(seg, cut_all=True)
print(seg_list1)
c)搜索引擎模式
首先执行精确模式,然后对其中长词进一步切分得到的结果
该模式更倾向于寻找短句,这种方式具有一定的冗余度,但是比全模式要少
seg_list2 = jieba.lcut_for_search('小明硕士毕业于北京航天航空大学')
print(seg_list2)
1)安装jieba结巴分词
pip install jieba
2)导入jieba
import jieba
- 目前导入模块的方式有两种:
1))import 模块名字
import turtle
import jieba
2))from 模块 import 对象或函数(有需要就导入,可以同时导入多个)
from random import randint
或
import random
random.randint
总结:
如何选择模式:
a)如果希望对文本词分词准确,不产生冗余 ---> 精确模式
b)如果希望对文本词分词更为准确,不漏点任何分词的可能 ---->全模式
c)如果没想好怎么用, 可以是使用搜素引擎模式