Python基础编程(2)

元组(tuple)

1、元组与列表的区别

列表是可变的,元组是不可变的。

列表的可变指的是列表可以添加元素,可以删除元素,

元组的不可变指的是元组不可以增加新的元素,也不可以删除已有的元素

2、元组的组成元素

元组里面的元素可以是字符串,也可以是数字, 也可以是元组本身,也可以是列表

3、'count'与'index'

tuple.'count':查看元组的

tuple.'index':

4、注意事项

当元组里面只有一个元素时,一定在元素后面加逗号

5、编程实训

1)创建元组

#创建tuple1元组
tuple1=(1,'a',2,1,['Go','Python',(1,2,3,'4')])
#输出在tuple1中元素[1]的数量
print(tuple1.count(1))
#输出在tuple1中元素[2]的索引
print(tuple1.index(2))

#运行结果
2
2

2)获取元组里面的元素

#获取元组里面的元素[Go]
print(tuple1[4][0])
#获取元组里面的元素['4']
print(tuple1[4][2][3])

#运行结果
Go
4

3)元组循环与判断

#在tuple1里,通过enumerate关键字,获取索引与元素
for index,itme in enumerate(tuple1):
	print(index,itme)
#判断是否有元素[Go],若有,则输出“学习Go语言”
if index==4 and itme[0]=='Go':
	print('学习Go语言')
    
#运行结果
2
2
Go
4
0 1
1 a
2 2
3 1
4 ['Go', 'Python', (1, 2, 3, '4')]
学习Go语言

Process finished with exit code 0

字典(dict)

1、字典特性

1)字典是无序的

2)字典是key-value的形式来存储的

2、字典的关键字是dict

for example:
      dict1={'name':'zhangli','age':'18','city':'xian'}

3、排序规则

1)如果是数字,默认是从小到大

2)如果是字符串,内部处理思路是将字符串转为数字,然后和1的规则相同

3)如果是多个字符串比如aa,ab,那么这个时候它的规则是:  

A、aa和ab先比较第一个字符串,发现第一个相同,就比较第二个  

B、比较第二个,比如是字符串转为数字,规则与1相同

4、字符串转为数字

把字符串转为数字,使用内部函数是ord( )

5、字典排序

排序必须是相同的数据内型,字典排序使用到的内部函数是sorted( )

6、编程实训

1)创建字典

#创建字典
dict1={'name':'zhangli','age':'18','city':'xian'}
print(dict1)

#运行结果
{'name': 'zhangli', 'age': '18', 'city': 'xian'}

2)获取key与valus(字典循环)

#获取key
for itme in dict1.keys():
	print(itme)
#获取valus
for itme in dict1.values():
	print(itme)
#获取所有的key与valus
for key,valus in dict1.items():
	print(key,valus)
    
#运行结果
name
age
city
zhangli
18
xian
name zhangli
age 18
city xian

Process finished with exit code 0

3)获取valus的值

通常使用第二种方法

#获取valus的值
print(dict1.get('age'))
print(dict1['age'])

#运行结果
18
18

4)两个字典合并

#两个字典合并
dict2={'name':'zhangli','age':'18','city':'xian'}
dict3={'valary':'1800'}
dict2.update(dict3)
print(dict2)

#运行结果
{'name': 'zhangli', 'age': '18', 'city': 'xian', 'valary': '1800'}

5)字典排序

#字典排序
dict4={'name': 'zhangli', 'age': '18', 'city': 'xian', 'valary': '1800'}
print(
	dict(
		sorted(dict4.items(),key=lambda item:itme[0])
)
)
print(
	dict(
		sorted(dict4.items(),key=lambda item:item[1])
	)
)

#运行结果
{'name': 'zhangli', 'age': '18', 'city': 'xian', 'valary': '1800'}
{'age': '18', 'valary': '1800', 'city': 'xian', 'name': 'zhangli'}

6)实现字典的有序

#从collections中导入OrderedDict类
from collections import OrderedDict

dict10=OrderedDict()
dict10['name']='zhangli'
dict10['sex']='男'
dict10['school']='一般学校'
print(dict(dict10))

#运行结果
{'name': 'zhangli', 'sex': '男', 'school': '一般学校'}

数据转换

1、字符串与列表的转换

#字符串转换位列表
str1='go,java,python'
str_list=str1.split()
print(str_list)
#列表转换为字符串
list_str=','.join(str_list)
print(list_str)

#运行结果
['go,java,python']
go,java,python

2、列表与元组的转换

#列表转换为元组
list1=['go,java,python']
list_tuple=tuple(list1)
print(list_tuple)
#元组转换为列表
tuple_list=list(list_tuple)
print(tuple_list)

#运行结果
('go,java,python',)
['go,java,python']

3、字符串与整形的转换

#字符串转换为整形
age='18'
salary='1800'
age1=int(age)
salary1=int(salary)
print(type(age1),age1)
print(type(salary1),salary)
#整形转换为字符串
age2=str(age1)
salary2=str(salary1)
print(type(age2),age2)
print(type(salary2),salary2)

#运行结果
<class 'int'> 18
<class 'int'> 1800
<class 'str'> 18
<class 'str'> 1800

4、列表与字典的转换

#列表转换为字典
list2=['a','b','c']
list_dict=dict(enumerate(list2))
print(list_dict)
#字典转换为列表
dict_list=list(list_dict.items())
print(dict_list)

#运行结果
{0: 'a', 1: 'b', 2: 'c'}
[(0, 'a'), (1, 'b'), (2, 'c')]

文件操作

1、文件操作

文件操作又名IO操作,其主要包括读与写两个操作

2、函数的特性

函数特点: 函数有参数    x=f(y)--->y是函数f的参数

3、文件操作三个步骤

1)打开文件(open)

2)操作文件(write)【针对文件的读与写】

3)关闭文件(close)【文件必须关闭,否则会出现内存泄露】

4、open函数参数

1)open函数
     作用:IO操作文件
     参数:
            file:指的是被操作的文件(默认有路径)
            mode:通过什么方式操作文件(读还是写?)
                      a:追加
                      w:写文件内容(替换写入)
                      r:读取文件内容
            encoding:编码(utf-8,gbk)
     写的操作:
           1、不管是否有文件,即使没有文件,open内部会自动创建一个文件,
                然后把写的内容写进去
     读的操作
           1、文件存在,那么从文件中读取数据
           2、文件不存在,会报【FileNotFoundError】的错误信息
                如: [Errno 2] No such file or directory: 'acd.docx'
     with上下文:with open() as f:
           他内部可以对文件进行关闭,这样避免了操作文件忘记关闭

5、实训编程

1)写:wirte

#在文件中写入“hello Python”
f=open(file='login.txt',mode='w',encoding='utf-8')
f.write('hello Python!')
f.close()
#删除文件原有内容,重新写入“Spark”
f=open(file='login.txt',mode='w',encoding='utf-8')
f.write('Spark')
f.close()
#写入多行内容
f=open(file='login.txt',mode='w',encoding='utf-8')
data='''
hadoop
spark
hive
hbase
flink
kafka
'''
#输出读取内容,并取消空格(strip)
f.writelines(data.strip())
f.close()

2)读:read

#读取文件里面所有内容
f=open(file='login.txt',mode='r',encoding='utf-8')
print(f.read())
f.close()
#读取文件里面第一条内容
f=open(file='login.txt',mode='r',encoding='utf-8')
print(f.readline())
f.close()
#按行读取文件所有内容
f=open(file='login.txt',mode='r',encoding='utf-8')
for item in f.readlines():
#输出读取内容,并取消空格(strip)
	print(item.strip())
f.close()
#在非默认路径下读取文件内容
f=open(file='D:/admin.txt',mode='r',encoding='utf-8')
print(f.read())
f.close()

 3)with上下文

格式:with open() as f:

#with上下文
with open(file='D:/admin.txt',mode='r',encoding='utf-8') as f:
	print(f.read())

函数

1、定义

所谓函数,就是把重复的代码单独的分离出来,放在⼀个公共的地⽅,

以后可以⼀直的进⾏调⽤,这样就可以解决多次重复来编写。

2、关键字

函数定义的关键字:def

for example:
    def 函数名称(函数的参数):
        函数表达式

3、函数调用

函数写完后,必须要经过调用才可以生效,如果不调用,不会生效

调用函数的方式是:函数名称

4、参数分类

1)形式参数:函数里面的参数叫形式参数

2)实际参数:函数被调用的时候,给予参数赋予的值叫实际参数

3)默认参数:在定义函数的时候给形式参数指定了参数的值

4)动态参数:定义一个函数的时候,当函数的形式参数个数不确定,数据类型不确定的时候

5、参数调用注意事项

1)函数在调用的时候,可以填写形式参数,也可以不填写。

2)要么填写,要不都不填写

3)函数在调用的时候,填写的实际参数要与形式参数的顺序、个数保持一致

4)函数有形式参数的时候,调用函数必须填写实际参数

6、动态参数

*:代表的是元组的数据类型

**:代表的是字典的数据类型

7、内部函数

关键字

数字转字母:chr;字母转数字:ord;

包含开始,但不包含结尾:range

8、匿名函数(lambda)

指定一个函数,但是这个函数的名字是可以自定义的 。

for example:
	a=lambda x,y:x+y
    
其中:左边是函数的形式参数
	:右边是函数的表达式

9、过滤函数(filter)

一共三种方式:普通过滤,过滤,匿名过滤

10、迭代增加(map)

针对所有对象做同样的操作

使用前提:1、函数对象 ;2、可迭代的对象

11、函数返回值(return)

一个函数,不管是否有return,它都有返回值的,如果没有return,它的返回值是None

如果有return,函数的返回值是return后面的内容,切记:return后面的代码是不能执行的

函数返回值的价值是:把函数与函数能够建立一层关联关系

12、实训编程

1)定义函数

#定义函数,填写形式参数
def add(a,b):
	print(a+b)
#给予参数赋值(实际参数)
add(3,6)

#定义函数,填写默认参数
def login(username="admin",password="message"):
	print(username+","+password)
#运行函数
login()

#定义函数,填写动态参数
def func(*args,**kwargs):
	print(*args,**kwargs)
func({'name','zhangli'})

#运行结果
9
admin,message
{'name', 'zhangli'}

2)登录账户

#登录账户
def login(username,password):
	if username=='zhangli' and password=='123456':
		print('登录成功')
	else:
		print('登录失败')

login(username='zhangli',password='123456')

#运行结果
登录成功

3)注册账户,并读取至文件

#注册账户
def registry():
	username=input('请输入用户名:\n')
	password=input('请输入密码:\n')
	temp=username+','+password
	with open('login.txt','w') as f:
		f.write(temp)
registry()

#运行结果
1)创建了login.txt文件,且显示zhangli,123456
2)运行结果栏结果:
   请输入用户名:
   zhangli
   请输入密码:
   123456

4)读取内容到文件

写一个函数,将注册的账号读取后,写入login.txt文件里,并单独输出用户名

def registry():
	with open('login.txt','r') as f:
		acd=f.read().split(',')
		print(acd[0])
registry()

def registry():
	with open('login.txt','r') as f:
		for item in f.readlines():
			print(item.split(',')[0])
registry()

#运行结果
zhangli
zhangli

5)动态参数

#输入元组数据
def func(*args):
	print(args)
	print(type(args))

func([1,2,3])
func((1,2))
func({'name','zhangli'})

#输入字典数据
def func(**kwargs):
	print(kwargs)
	print(type(kwargs))

func(name='zhangli',age=18)
func(**{'name':'age'})
#使用场景
def func(*args,**kwargs):
	print(kwargs)

func(payType='alipay',price=100)
func(payType='wxpay')
func(payType='zhaohang',price=100,city='xian')

def func(*args,**kwargs):
	print(kwargs)

func(payType='alipay',price=100)
func(payType='wxpay')
func(payType='zhaohang',price=100,city='xian')

6)内部函数

#数字转字母(chr)
print(chr(98))

#字母转数字(ord)
print(ord('d'))

#包含开始,但不包含结尾(range)
for item in range(1,5):
	print(item)
#导入(import)
import random#内部库,库都是需要导入,导入关键字为import
print(random.randint(1,100))#随机生成数字(5个)

#字符串转为字符串(eval)
str1='5+5'
print(eval(str1))

#运行函数
b

100

1
2
3
4
24

10

 7)验证码生成(随机生成)

list1=[]
#随机循环生成10个数字
for i in range(10):
#在(97,120)之间随机取数,并放入变量r中;前提条件:生成10个数
	r=random.randint(97,120)
#将变量写入列表中,且将数字转换为字母
	list1.append(chr(r))
#将数字转换为字符串,并输出
print(''.join(list1))

#dgawdqxiud

8)匿名函数(lambda)

a=lambda x,y:x*y
print(a(4,5))

#运行结果
20

9)过滤大于2的数字(过滤函数)

#普通方法
list2=[1,2,3,4,5,6,7,8,9]
list3=[]
def func():
	for item in list2:
		if item>2:
			list3.append(item)
	print(list3)

func()

#过滤(filter)
list2=[1,2,3,4,5,6,7,8,9]
def func(a):
	if a>2:
		return True

print(
	list(filter(func,list2))
)


#过滤(filter加lambda)
list2=[1,2,3,4,5,6,7,8,9]
print(
	list(filter(lambda x:x>2,list2))
)

#运行结果
[3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]

10)对各个变量加10

#map迭增方法
list2=[1,2,3,4,5,6,7,8,9]
print(list(map(lambda x:x+10,list2)))

#for循环方法
list4=[]
def func():
	for item in list2:
		list4.append(item+10)
	print(list4)
func()

#运行结果
[11, 12, 13, 14, 15, 16, 17, 18, 19]
[11, 12, 13, 14, 15, 16, 17, 18, 19]

11)登录返回sessionid

#登录返回sessionid
def zhihulogin(username='zhangli',password='admin'):
	if username=='zhangli' and password=='admin':
		return 'we456ertre'
	else:
		return"账户或密码不对"

#判断返回的sessionid参数是否与客户端sessionid一致
def profile(sessionid):
	if sessionid=='we456ertre':
		print("欢迎查看知乎主页")
	else:
		print("请登录!")

#若想登录成功,必须满足账户与密码正确,因此默认参数和实际参数必须为正确的账户与密码
profile(sessionid=zhihulogin())
profile(sessionid=zhihulogin('zhangli','admin'))
profile(sessionid=zhihulogin('zl,admin'))
profile(sessionid=zhihulogin('we456ertre'))

#运行结果
欢迎查看知乎主页
欢迎查看知乎主页
请登录!
请登录!

全局变量与局部变量

1、定义

全局变量:在一个python文件中定义的变量

局部变量:在一个函数中定义的变量

2、优先级

1)在python文件中,调用变量,全局变量优先级是高于局部变量的

2)在函数内部调用变量,局部变量的优先级是高于全局变量的

3)如果在函数内部想引用全局变量,那么使用关键字global

#在python文件中,调用变量,全局变量优先级是高于局部变量的
name='无涯'
def func():
	name='wuya'
print(name)

#在函数内部调用变量,局部变量的优先级是高于全局变量的
name='无涯'
def func():
	name='wuya'
	print(name)
func()

#如果在函数内部想引用全局变量,那么使用关键字global
name='无涯'
def func():
	global name
	print(name)
func()

#运行结果
无涯
wuya
无涯

模块与包

1、在python中,每一个python文件都是一个模块(modyle)

2、包:在一个包里面会很多的模块

3、包与文件夹的区别:包里面有_init_.py文件;文件夹没有

4、一个模块调用另一个模块文件的变量以及函数:form package.module import *(代表所有)

for example:

#调用login.txt,输出login所有内容
from login.f1 import *

print(name)
func()
posted @ 2022-03-30 19:04  无耿  阅读(48)  评论(0编辑  收藏  举报