Python3学习(三)

字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

In [32]: dict = {'key1':'value','key2':'value2'}

In [33]: dict
Out[33]: {'key1': 'value', 'key2': 'value2'}

In [34]: infor = {'name':'zhaosi','age':18,'addr':'dongbei'}
In [35]: infor
Out[35]: {'addr': 'dongbei', 'age': 18, 'name': 'zhaosi'}

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

访问字典里的值

把相应的键放入方括弧,如下实例:

In [1]: infor = {'name':'zhaosi','age':18,'addr':'dongbei'}

In [2]: infor['name']
Out[2]: 'zhaosi'

In [3]: infor['age']
Out[3]: 18

In [4]: infor['addr']
Out[4]: 'dongbei'

In [6]: infor['dongbei']
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-6-52a3d45a0a14> in <module>()
----> 1 infor['dongbei']

KeyError: 'dongbei'

修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

In [9]: infor
Out[9]: {'addr': 'dongbei', 'age': 18, 'name': 'zhaosi'}

In [10]: 

In [10]: infor['addr'] = 'tieling' #更新信息

In [11]: infor
Out[11]: {'addr': 'tieling', 'age': 18, 'name': 'zhaosi'}

In [12]: infor['partner'] = 'xiaoshenyang'#添加信息

In [13]: infor
Out[13]: {'addr': 'tieling', 'age': 18, 'name': 'zhaosi', 'partner': 'xiaoshenyang'}

删除字典元素

能删单一的元素也能清空字典,清空只需一项操作。

显示删除一个字典用del命令,如下实例:

In [19]: del infor['name']

In [20]: infor
Out[20]: {'addr': 'tieling', 'age': 18, 'partner': 'xiaoshenyang'}

#删除一个已删除的key:value,这会引发一个异常,因为用del后字典不再存在
In [21]: del infor['name']
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-21-57e0ef070cdf> in <module>()
----> 1 del infor['name']

KeyError: 'name'

In [22]: infor.clear() #清空字典所有条目

In [23]: infor
Out[23]: {}

In [24]: del infor #删除字典

In [25]: infor
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-25-d2bc79e10800> in <module>()
----> 1 infor

NameError: name 'infor' is not defined

查看字典中的值

In [26]: infor = {'name':'zhaosi','age':18,'addr':'dongbei'}

In [27]: infor.get('age')
Out[27]: 18

In [28]: infor.get('name')
Out[28]: 'zhaosi'

In [29]: infor.get('dongbei') #获得不存在的键值,不会报错,但返回为空

In [30]: infor['dongbei'] #获得不存在的键值,会报错
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-30-52a3d45a0a14> in <module>()
----> 1 infor['dongbei']

KeyError: 'dongbei'

字典中常用操作

In [2]: dict
Out[2]: {'age': 20, 'name': 'laowang'}

In [4]: dict.items()#把键:值当成一个元组,作为列表的一个元素
Out[4]: dict_items([('age', 20), ('name', 'laowang')])

In [5]: dict.values()#获取字典中的值,存在列表中
Out[5]: dict_values([20, 'laowang'])

In [6]: dict.keys()#获取字典中的键,存在列表中
Out[6]: dict_keys(['age', 'name'])

In [7]: A,B = dict.items()#赋值 A,B = dict.items() = [('age', 20), ('name', 'laowang')]
In [9]: A
Out[9]: ('age', 20)
In [10]: B
Out[10]: ('name', 'laowang')

#赋值的两种方式
In [11]: for A,B in dict.items():# A,B = ('age':20)
   ....:     print("A=%s,B=%s" %(A,B))
   ....:     
A=age,B=20
A=name,B=laowang

In [12]: for temp in dict.items():#以下标的方式取值
   ....:     print("%s,%s" %(temp[0],temp[1]))
   ....:     
age,20
name,laowang

for-else使用

  2 list = [1,2,3,4,5]
  3 
  4 for i in list:
  5     print(i)
  6 
  7 else:
  8     print("end===")
  9 
 10 for i in list:
 11     print(i)
 12     if i == 3:
 13         break
 14 else:
 15     print("end===")

#结果:

注意其他语言没有for-else的用法,可以理解为for-else为一个整体,else可有可无,当有else的时候,for循环执行条件不满足时,跳进else执行,当for循环中有break时,跳出for-else整体。

append和extend区别

In [5]: list1 = [1,2,3,4]

In [6]: list2 = [4,5,6]

In [7]: list1.extend(list2) #合并

In [8]: list1
Out[8]: [1, 2, 3, 4, 4, 5, 6]

In [9]: list1.append(list2)#把list2整体当成一个元素添加

In [10]: list1
Out[10]: [1, 2, 3, 4, 4, 5, 6, [4, 5, 6]]

元组

Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

如下实例:

In [1]: tup1 = ()#创建空元组

In [2]: tup2 = (1,)#创建只有一个元素的元组,注意一定后面加逗号,以免和运算符括号混淆

In [3]: tup3 = (1,2,3,4,5)

In [4]: tup3[0]
Out[4]: 1

In [5]: tup3[0] = 2 #元组不能改
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-7b137a5432b2> in <module>()
----> 1 tup3[0] = 2

TypeError: 'tuple' object does not support item assignment

In [6]: tup4 = (9,8,7,6)

In [7]: tup = tup3 + tup4 #元组之间可以相加

In [8]: tup
Out[8]: (1, 2, 3, 4, 5, 9, 8, 7, 6)

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

元组只能查看、删除和叠加,不能修改(包括增,改)

函数定义及使用

  2 def triangle(): #函数定义格式: def 函数名():
  3     i = 0
  4     while i<=9:
  5 
  6         print("*"*i)
  7 
  8         i+=1
  9 
 10 
 11 def summator(a,b):#带参数的函数
 12     print("%d + %d = %d" %(a,b,a+b))
 13 
 14 triangle() #函数调用
 15 
 16 num1 = int(input("请输入数字1:"))
 17 num2 = int(input("请输入数字2:"))
 18 
 19 summator(num1,num2)#函数调用并传参

函数的返回值

def test(a,b,c):
	#return a #返回单个值
	#return b
	#return c
#	return (a,b,c) #想要返回多个值,可以使用元组存储
#	return [a,b,c] #可以使用列表存储
	return {a,b,c} #可以使用字典存储

n1 = int(input("请输入第一个参数:"))
n2 = int(input("请输入第二个参数:"))
n3 = int(input("请输入第三个参数:"))

num = test(n1,n2,n3)
print(num)

#结果
ubuntu@ubuntu-Lenovo:/work/python$ python3 func_paramater.py 
请输入第一个参数:11
请输入第二个参数:22
请输入第三个参数:33
(11, 22, 33)

ubuntu@ubuntu-Lenovo:/work/python$ python3 func_paramater.py 
请输入第一个参数:22
请输入第二个参数:11
请输入第三个参数:33
[33, 11, 22]

ubuntu@ubuntu-Lenovo:/work/python$ python3 func_paramater.py 
请输入第一个参数:22
请输入第二个参数:11
请输入第三个参数:33
{33, 11, 22}

函数可以嵌套使用,学习过其他语言应该比较清楚

局部变量与全局变量

a = 0
def test1():
	a = 100 # 函数中定义了局部变量,在本函数中使用默认使用局部变量
	print("test1 a = %d" %a)

def test2():
	print("test2 a = %d" %a) #函数中没有定义局部变量,在本函数中使用去找全局变量是否定义
							#若定义,使用全局变量,若没定义,使用则报错

test1() #函数调用执行
test2() #函数调用执行

#结果:
ubuntu@ubuntu-Lenovo:/work/python$ python3 局部变量.py
test1 a = 100
test2 a = 0
'''
def get_temperature():
	
	temperature = 37 #局部变量定义

	return temperature #必须使用一个返回值去接收

def print_temperature(tem):#将接收的返回值传入打印函数
	
	print("温度为:%d" %tem)#打印

result =  get_temperature()
print_temperature(result)
'''


temperature = 0 #定义全局变量
def get_temperature():

	global temperature #声明使用局部变量
	temperature = 37 #


def print_temperature():
	
	print("温度为:%d" %temperature)#打印

get_temperature()
print_temperature()

结果:
ubuntu@ubuntu-Lenovo:/work/python$ python3 局部变量与全局变量区别.py
温度为:37

注意:global声明函数内使用的变量为全局变量,列表和字典可以不用使用global声明,但声明会更好,更警醒

局部变量:定义在函数内部,作用域在函数体内
全局变量:定义在函数外,作用域在整个代码文件中

如果全局变量和局部变量定义的变量名字一样,局部变量使用变量时,默认使用局部定义的变量,除非使用global去声明 ,声明的含义就是对全局变量进行修改,而不是定义。

temperature = 0 #定义全局变量
def get_temperature():

	global temperature #声明使用局部变量
	temperature = 37 #

def print_temperature():
	
	print("温度为:%d" %temperature)#打印

get_temperature()
print_temperature()

结果:
ubuntu@ubuntu-Lenovo:/work/python$ python3 局部变量与全局变量区别.py
温度为:37
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linux顿悟吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值