Python 字典、集合、循环、判断

一、字典的定义

字典是Python中重要的数据类型,字典是由"键-值"(key-value)对组成的集合,字典的"值"(key)通过"键"(value)来引用

二、字典的创建

1、空字典的创建

 

2.字典是通过key值获取value值(一个字典中的每个key对应的value值可以有多个)

 

3.字典是一个无序的数据集合(使用print输出字典的时候通常输出的顺序和定义的顺序是不一致的)

 

4.字典的赋值

三、字典的特性

1.字典不能实现索引、切片、 重复和连接

 

2.成员操作符(默认判断key值是否存在)

 

3.for循环(默认循环遍历字典的key值)

 

四、字典的增加

d = dict(a=1,b=2)
print d

1、添加或更改key-value

2、update:添加或更改多个key-value

注:如果key值存在,更新value值,如果key值不存在,添加key-value值

 

3、setdefault:添加key-value

注:如果key值已经存在,不做修改,如果key值不存在,添加key-value值

五、字典的删除

d = dict(a=1,b=2,c=3)
print d

1.pop():弹出指定的key-value值

2.popitem():不指定时随机弹出key-value值

3.del:删除指定的key-value值

六、字典的修改和查看

service = {
    'http':80,
    'mysql':3306
}

1、查看字典里面所有的key值

2、查看字典里面所有的value值

3、查看字典里面所有的key-value值

4、for循环遍历

1)一个变量k时的遍历

2)两个变量k,v时的遍历

5、get方法获取指定key对应的value值

注:如果key值存在,返回对应的value值, 如果key值不存在,默认返回None,如果需要指定返回值,传值即可

字典实例:

1.题目:

重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
1)用户输入一句英文句子;
2)打印出每个单词及其重复的次数;
 例如:输入"hello java hello python"
输出: hello 2  java 1  python 1

2.题目:

数字重复统计:
 1)随机生成1000个整数;
 2)数字的范围[20, 100],
 3)升序输出所有不同的数字及其每个数字重复的次数;

Python集合章集合增删集合内置函数遍历集合交集和并集集合转换
集合
集合是一个无序的不重复元素序列
用大括号 {} 或者 set() 函数创建集合
注意:创建一个空集合必须是 set()  而不是通过 {} 因为这个是创建字典的。
集合不能通过索引来查找,只能判断是否存在此集合中 is,set存储的元素必须是不可变对象,任何可变对象都不能放入set中的。
定义:
①    s = set()     定义一个空集合
②    s = {value1, value2, valueN,...}    创建有值的集合
③    s = set([列表,元组,字典])    强转为集合类型,字典转后只留”键“
# 创建空集合方式一
>>> set = set()
>>> type(set)
<class 'set'>
>>> set.add("1")
>>> print(set)
{'1'}
----------------------------
# 创建集合方式二,大括号内必须有值,不然为字典类型
>>> set = {1,2,3,4,5}
>>> type(set)
<class 'set'>
----------------------------
# 创建集合方式三,用set()把元组、列表强转为集合
>>> s = set((1,2))
>>> s
{1,2}
1234567891011121314151617

set.add(value) 用于添加元素至集合中,由于是无序的,所以插入的位置可能会发生变化
set.update([list, tuple, dict]) 添加元素,参数可以是列表和元祖、字典

set = {1, 2, 3, 4, 5}
set.add("林青霞")
>>> print(set)
>>> {1, 2, 3, 4, 5, "林青霞"}
set.add("6")
>>> print(set)
>>> {1, 2, 3, 4, 5, "6" , "林青霞"}
-----------------------
set.update(('a','b'))
>>> print(set)
>>> {1, 2, 3, 4, 5, "6", 'a' , "林青霞", 'b'}
1234567891011

set.remove( x ) :将内容为x的元素从集合中删除,如果元素不存在报错
set.discard( x ):若集合中存在x则删除x,不存在不做操作,都会返回None
set.pop():随机删除集合中的元素
set.clear():清空集合

>>> set = {1,2,3,4,5,6}
>>> print(set)
{1, 2, 3, 4, 5, 6}
>>> set.remove(3)    # 删除内容是3的元素
>>> print(set)
{1, 2, 4, 5, 6}
>>> set.remove('a')    # 若元素不存在时
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'a'
--------------------------
>>> set.discard('a')    # 不存在,但不会报错
>>> print(set)
{1, 2, 4, 5, 6}
>>> set.discard(4)
>>> print(set)
{1, 2, 5, 6}
---------------------    # pop随机删除
>>> set = {1,23,4,32,46,43,634,6,}
>>> type(set)
<class 'set'>
>>> set.pop()
32
>>> set.pop()
1
>>> set.pop()
4
>>> set.clear()    # 清空集合
>>> print(set)
set()
123456789101112131415161718192021222324252627282930
集合内置函数

len():计算集合的长度
set.intersection(set):返回两个集合的交集
s1.issubset(s2):s1是否为s2的子集
union():返回两个集合的并集

>>> set = {1,2,3,4}
>>> len(set)
4
-----------
>>> s1 = set([1,2,3])
>>> s2 = set([3,4,5])
>>> s1.intersection(s2)#交集
{3}
>>> s1.issubset(s2)#子集
False
>>> {3,4}.issubset(s2)
True
>>>
12345678910111213
遍历集合
>>> set = {1,2,3,4}
>>> len(set)
4
>>> for i in set:
...     print(i)
...
1
2
3
4
12345678910
交集和并集
>>> s = set("abc")
>>> s2 = set("cdf")
>>> s - s2    # 集合1中有,而集合2没有
{'a', 'b'}
-------------------
>>> s & s2    # 交集,集合1和集合2相同的
{'c'}
-----------------
>>> s | s2    # 并集,集合1和集合2所有的
{'c', 'b', 'a', 'f', 'd'}
------------------
>>> s ^ s2    #集合1独有,集合2独有的
{'d', 'f', 'a', 'b'}
12345678910111213
集合转换

字典转换为集合

>>> s = set()
>>> type(s)
<class 'set'>
>>> dict = {"a":'1'}
>>> s = set(dict)    # 字典转换为集合
>>> print(s)
{'1','a'}
1234567

列表转化为集合

>>> s = set()
>>> type(s)
<class 'set'>
>>> list = [1,2,3]    # 创建列表
>>> s = set(list)    # 列表转换为集合
>>> print(s)
{1, 2, 3}
1234567

元祖转换为集合

>>> s = set()
>>> type(s)
<class 'set'>
>>> tup = (a,b,c)
>>> s = set(tup)
>>> print(s)
{'c', 'a', 'b'}
 

条件判断语句

条件判断语句的是:

if(判断内容):
    执行内容1
elif(判断内容):
    执行内容2
else:
    执行内容3

使用时要注意判断格式,换行后第二行要缩进四个空格,否则会报错。

以上述代码为例,if 后面的括号内,放入的首次判断的内容,若正确,执行 执行内容1 ,执行完成后,跳过剩余判断语句;若错误,则跳过 执行内容1 ,开始执行 elif 括号里的内容,若正确,执行 执行内容2 ,执行完成后,跳过剩余判断语句;若错误,则跳过 执行内容2 ,直接开始执行else里的 执行内容3。示例如下:

设置 a = 20 

由于 a = 20 > 10 ,则执行第一个判断成功后,执行下面的语句print('a大于10'),之后跳过剩余语句。

有几点需要注意:

 

  1. 一个条件判断语句中可以有多个 elif 。
  2. 一个条件判断语句中最多只能有一个 else ,条件判断语句可以没有else。
  3. 条件判断语句判断成功后,执行当前成功判断里的代码,执行完成后,直接跳过剩余条件判断语句。

其中,判断内容 一般是条件判断语句,例如:2>1 ,或者是 3>5 等,结果是返回 True 或 False 的,示例如下:

判断内容 处也可放入 变量,只要变量是非零数值、非空字符串、非空list等,都判断为 True ,否则判断为 False,示例如下:

测试判断语句的小例子:

通过输入身高和体重信息,计算BMI值,并给出友善提醒,代码如下:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*- 
height = input('请输入您的身高(单位:米):'.decode("utf-8").encode("gbk"))
weight = input('请输入您的体重(单位:千克):'.decode("utf-8").encode("gbk"))
bmi = weight/(height*height)
print(bmi)
if bmi< 18.5:
	print('您的体重过轻,要多吃肉~~'.decode("utf-8").encode("gbk"))
elif bmi>= 18.5 and bmi<=25:
	print('您的体重正常,注意保持哈~~'.decode("utf-8").encode("gbk"))
elif bmi>25 and bmi<=28:
	print('您的体重过重,要多出门呼吸新鲜空气呐~~'.decode("utf-8").encode("gbk"))
elif bmi>28 and bmi<=32:
	print('您的体重肥胖,要多运动,少吃肉~~'.decode("utf-8").encode("gbk"))
elif bmi>32:
	print('您的体重严重肥胖,为了您的健康,及时就医咨询减重呐~~'.decode("utf-8").encode("gbk"))
else:
	print('请正确输入您的身高或体重信息'.decode("utf-8").encode("gbk"))

我使用的是Python2.7.15,执行时,发现中文乱码,在网上找到个例子,如上述代码所示,在字符串后面添加代码设置其字符串编码。先把数据通过decode('utf-8')转为字符串编码为utf-8的字符,再通过encode('gbk')转为cmd可以识别的GBK编码。这样就不会出现编码异常的问题。运行结果如下:

由于上述代码写的不完善,测试时请按照指定格式测试,否则会报错。

在Python3下 不去字符转码,但是输入的身高体重信息需要转为相应格式,在Python下,input 默认输入的是 字符串,需要转换成对应格式,具体如下:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*- 
height = input('请输入您的身高(单位:米):')
weight = input('请输入您的体重(单位:千克):')
height = float(height)
weight = int(weight)
bmi = weight/(height*height)
print(bmi)
if bmi< 18.5:
	print('您的体重过轻,要多吃肉~~')
elif bmi>= 18.5 and bmi<=25:
	print('您的体重正常,注意保持哈~~')
elif bmi>25 and bmi<=28:
	print('您的体重过重,要多出门呼吸新鲜空气呐~~')
elif bmi>28 and bmi<=32:
	print('您的体重肥胖,要多运动,少吃肉~~')
elif bmi>32:
	print('您的体重严重肥胖,为了您的健康,及时就医咨询减重呐~~')
else:
	print('请正确输入您的身高或体重信息')	print('您的体重过轻,要多吃肉~~')
elif bmi>= 18.5 and bmi<=25:
	print('您的体重正常,注意保持哈~~')
elif bmi>25 and bmi<=28:
	print('您的体重过重,要多出门呼吸新鲜空气呐~~')
elif bmi>28 and bmi<=32:
	print('您的体重肥胖,要多运动,少吃肉~~')
elif bmi>32:
	print('您的体重严重肥胖,为了您的健康,及时就医咨询减重呐~~')
else:
	print('请正确输入您的身高或体重信息')

循环语句

循环是让计算机做重复任务最有效的方法。

for循环

for循环语句如下:

for 循环内变量名 in list名:
    执行任务语句

示例如下:

若想通过代码得到0到100相加的和,我们需要一个 list,里面包含 0 到 100 的数字,一个个写十分麻烦,我们可以使用Python提供的另一个函数:range() 。

range() 函数可以生成一个整数序列,比如,想要得到0-10的整数序列,写法如下:

range(11)

解释一下,上述示例是 从 0 开始 ,小于 11 的整数,得到的 就是 0到10 的整数序列。

由于 range() 生成的是整数序列,转为 list 型还需要用 list() 转一下。综上所述,通过代码得到0到100整数相加的和的示例如下:

while循环

while循环语句如下:

while 判断条件 :
    执行任务语句

示例如下:

只要条件满足,它就自动循环,条件不满足,就跳出循环。

在循环语句中,有时需要提前 退出循环 或 跳过当前循环 ,这就涉及到 break 和 continue 两个语句。

break

break 是 退出循环,示例如下:

执行循环语句,当循环到 5 的时候,跳出循环。可见, break 的作用是 提前结束循环。

continue

continue 是跳过当前循环,示例如下:

执行循环语句,当循环到 5 的时候,跳过本次循环,进入下一次循环。可见,continue 的作用是 提前结束本轮循环,进入下一轮循环。

当我们写代码的时候,有时会碰到死循环,就是会一直循环下去的循环,示例如下:

a = 5
while a<10:
    print(a)

这是,编译器会一直输出 5 。这时,可以输入 Ctrl + c 强制中断进行的程序。

总结一下,判断语句和循环语句是 编写程序中经常用到的语句,要掌握好它们。

 

三元表达式(三目表达式)

python中的格式为

为真时的结果 if 判定条件 else 为假时的结果  1

实例:

print(1 if 5>3 else 0) 1

是先输出结果,再判定条件 
输出1,如果5大于3,否则输出0

一般用于判断赋值中,例如:

x,y = 50,25
small = x if x<y else y
print(small)123

还可以嵌套使用,还可以多层嵌套

a,b,c=10,20,6
min_num = a if a<b and a<c else (b if b<a and b<c else c)
print(min_num)123

推导式

列表推到式

获取从0-10返回内所有偶数的平方 
一般方法:

rt_list = []
for i in range(10):
    if i%2 ==0:
        rt_list.append(i * i)1234

使用推导式

[i * i for i in range(10) if i % 2 == 0 ]1

多层推导式

>>> [(i,j) for i in range(1,10) for j in range(10)  if i <= j ]1

字典推导式(Python2.7不支持)

获取字符出现偶数次的所有字母和次数组成的字典,并将对应次数翻倍 
正常方法:

stat = {'a':2,'b':3,'c':4,'d':5,'e':6}
rt_dict = {}
for k,v in stat.items():
    if v % 2 == 0:
        rt_dict[k] = v * 2
print(rt_dict)123456

使用字典推导式:

{ k,v*2 for k,v in stat.items() if v%2 == 0}1

后记:


  三目表达式与推导式提高了性能,缺损失了一定的可读性
 

1.for循环
#循环遍历 strlist 
str = 'a,b,c,d'
strlist = str.split(',')
for i in range(len(strlist)) :
 print strlist[i]
#循环求和
sum=0
for v in range(1,101):
    sum+=v
print sum

2.while 循环
#循环5次输出i love python
count=5
while count>0:
    count=count-1
    print"i love python!"

# break 和 continue
count=5
while count>0:
    count=count-1
    if count == 1:
          break    #结束循环
    if count == 3:
          continue  # 跳出本次循环
    print"i love python!"

3.注: for循环和while循环后面都可以加else子句else子句在整个循环执行条件不符合时执行

例:
--------------------
count=5
while count>0:
    print 'i love python'
    count=count-1
else:
    print 'over'
----------------------
for i in range(0,5):
    print i
else:
    print 'over'
 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值