python学习 第二天 python基础

一  列表

定义:在[ ]内,可以存放多个任意类型的值,并以逗号隔开。

一般用于存放学生的爱好,课堂的周期等等。

定义一个学生列表,可存放多个学生

student_info=['sjk','合计',19,['','']]

#取同学的所有爱好
print(student_info[3])

#取同学的第二个爱好
print(student_info[3][1])

 

列表优先掌握的操作
1按索引存取值(正反向取存):即可存也可以取

print(student_info[-2])          
#19


2切片(顾头不顾尾)

print(student_info[0:4:2]) 
#['sjk', 19] 


3长度

print(len(student_info)) 
#4 


4成员运算in和not in

print('sjk' in student_info)
#True
print('sjk' not in student_info)
#False


5追加 在列表追加一个值

student_info.append('张铁柱,sanquan') 
#['sjk','合计', 19, ['吃', '睡'], '张铁柱,sanquan'] 


6删除 删除索引的值 

del student_info[1] 
print(student_info)
#['sjk',19['吃','睡'],'张铁柱','sanquan'] 

 

列表需要掌握的操作

 

student_info=['sjk','合计',19,['np','yb'],19]

 

1获取列表中某个值的索引

student_info.index(19)
#2

 

2获取列表中某个值的数量

student_info.count(19)
#2

 

3取值 默认取列表中最后一个值

若pop()括号中写了索引,则取索引对应得值

student_info.pop()
print(student_info)
#19
student_info.pop(0)
print(student_info)
#'sjk'

 

4移除    把列表中的某个值的第一个值移除

student_info.remove(19)
print(student_info)
#['sjk','合计',['np','yb'],19]
name=student_info.remove('sjk')
print(name)
print(student_info)
#error

 

5插入值

student_info=['sjk','合计',20,['np','yb'],56]
student_info.insert(3,'888')
print(student_info)
#['sjk','合计',20,['np','yb'],56,3,'888']

 

6extend 合并列表

student_info1=['sji',47,['',''],47]
student_info2=['djk',38,['','']]
student_info1.extend(student_info2)
print(student_info1)
#['sji',47,['吃','睡'],47,'djk',38,['玩','乐']]

 

二 元组

定义:在()中,可以存放多个任意类型的值,并用逗号隔开 

注意: 元祖与列表不同的是,只能在定义时初始化值,不能对其修改

优点:  在内存中占用资源比列表小

 

定义

tuplel=(1, 2, 3, 'wu', 'liu')
print(tuplel)
#1, 2, 3, 'wu', 'liu'

 

1正反向取值 (正向取+反向取)只能取

print(tuplel[2])
#3


2切片(顾头不顾尾)

print(tuplel[0:5:2]) 
#[1,3,'liu'] 


3长度 

print(len(tuplel)) 
#5

 

4成员运算in和not in

print(1 in tuplel) 
#True
print(1 not in tuplel)
#False


5循环

for line in tuplel: 
#print(line) 
#1 2 3 'wu' 'liu'
 #print默认end参数是\n 
print(line,end='_')
#1_2_3_'wu'_'liu'_

 

可变类型与不可变类型:
不可变类型(值修改后,内存地址一定不一样):
  数字类型:int,float    字符串类型:str   元组类型:tuple

可变类型(值修改后,内存地址一样):
  列表类型:list     字典类型:dict

 

三 字典

 作用:在{}内,可存放多个值,以key_value存取,取值速度快

注意:key必须是不可变类型,value可以是任意类型

dict1=dict({'age':18,'name':'sjj'})
#dict1={'age':18,'name':'tank'}
print(dict1)
#{'age':18,'name':'tank'}

 

取值,字典名+[],括号内写值对应的key

print(dict1['age'])
#18

 

#[]取值 
#print(dict1['sex']) #error 
#get取值 (推荐)
print(dict1.get('sex')) #None 
#若找不到sex,为其设置一个默认值 
print(dict1.get('sex','male'))

 

优先掌握的操作
1可存取

#存一个level:9的值到dict1字典中
dict1['level']=9 

print(dict1)       #{'age':18,'name':'tank','level':9}

print(dict1['name'])        #tank


2长度


3成员运算in和not in    只判断字典中的key

print('name' in dict1)    #True

print('tank' in dict1)       #False


4删除

del dict1['level'] 

print(dict1) 

#{'age':18,'name':'tank'}

 

5建keys(),值 value(),键值对items()

#得到字典中所有key 
print(dict1.keys()) 
#得到字典中所有值values 
print(dict1.values()) 
#得到字典中所有items 
print(dict1.items()) 
#dict_keys(['age', 'name'])
#dict_values([18, 'sjj'])
#dict_items([('age', 18), ('name', 'sjj')])

 

6循环

 

for it in dict1: 
    print(it) 
    print(dict1[it]) 
#age
#18
#name
#sjj

 

四 流程控制
if 判断
语法:
if 判断条件:
  #若条件成立,则执行此处代码
  逻辑代码
elif 判断条件:
  逻辑代码
else:
  #上述条件都不符合,则执行此处代码
  逻辑代码

 

#判断两数大小
x=10
y=20
if x>y:
    print(x)
else:
    print(y)
#20

 

缩进快捷键,tab向右移动四个空格,shift+tab向左移动四个空格

 

while循环
语法:
while 条件判断:
  # 成立执行此处
  逻辑代码
  break          #跳出本次循环
  continue     #结束本次循环,进入下一次循环

 

#限制循环次数
str1='tank'
#初始值
num=0
while num<3:
   name= input('请输入猜测的字符:').strip()
   if name =='tank':
       print('tank success')
       break
       print('请重新输入')
       num+=1

 

 

五 文件处理
  open()
写文件
  wt:写文本
读文件
  rt:写文本
追加写文件
  at:追加文本
注意:必须指定字符编码,以什么字符编码写,就一什么字符编码打开,如utf-8

执行python代码文件的过程
1先启动python解释器,加载到内存中
2把写好的python文件加载到解释器中
3检测python语法,执行代码

打开文件会产生两种资源:
1.python程序
2.操作系统打开文件

 

打开,读写,关闭文件方式一:

#参数一:文件的绝对路径
#参数二:mode 操作文件的模式
#参数三:encoding 指定的字符编码
f=open('file.txt',mode='wt',encoding='utf-8')
f.write('tank')
f.close()#关闭操作系统文件资源


f=open('file.txt',mode='rt',encoding='utf-8')
f.read()
f.close()#关闭操作系统文件资源


f=open('file.txt',mode='a',encoding='utf-8')
f.write('\n 合肥学院')
f.close()#关闭操作系统文件资源

 

打开,读写,关闭文件方式二:(推荐)

# with可以管理open打开的文件
# 会在with执行完毕后自动调用close()关闭文件
# with open()
'''
文件处理之上下文管理
with open() as f"句柄"
'''
with open('file.txt','w',encoding='utf-8') as f:
    f.write('墨菲定律')

with open('file.txt', 'r', encoding='utf-8') as f:
        res = f.read()
        print(res)

with open('file.txt', 'a', encoding='utf-8') as f:
            f.write('围城')

 

对图片、音频、视频读写
rb模式读取二进制,不需要指定字符编码

#读取cxk.jpg
with open('cxk,jpg','rb') as f:
res=f.read()
print(res)
jpg=res
#把cxk.jpg的二进制流写入cxk_copy.jpg文件中
with open('cxk_copy.jpg','wb') as f_w:
f_w.write(jpg)

 

#with管理多个文件

#通过with来管理open打开的两个文件句柄f_r,f_w
 with open('cxk,jpg','rb') as f_r,open('cxk.jpg','wb') as f_w:

  #通过f_r句柄把图片的二进制流读取出来
  res=f_r.read()
  
 #通过f_w句柄把图片的二进制流写入cxk_copy.jpg文件中
  f_w.write(res)

 

六  函数 

什么是函数? 

      函数指的其实是一把工具 

使用函数的好处: 

  1解决代码冗余问题 

   2.是代码的结构更清晰 

   3.易管理

函数的使用必须遵循:先定义,后调用

函数定义语法: 

     def 函数名(参数1,参数2,...):

      注释:声明函数

     逻辑代码 

    return 返回值 

    def:defind 定义。

函数名:必须看其名知其意 

     ():接收外部传入的参数     注释:用来声明函数的作用

    return:返回给调用者的值 

定义函数的三种形式:

    1无参函数 不需要接收外部传入的参数

    2有参函数 血压哟接收外部传入的参数

    3空函数 pass

 

1.无参函数

#userame,password用来接收外部传入的值

 

def login():

 user=input('请输入用户名').strip()

 pwd=input('请输入密码').strip()

 if user== 'tank' and pwd == '123':

    print('login successful')

 else:
    print('login error')
 #函数的内存地址

#print(login) #函数调用

login()

 

2.无参函数

 

def login(username,password):

 user=input('请输入用户名').strip()

 pwd=input('请输入密码').strip()

 if user== username and pwd == password:

    print('login successful')

 else:
    print('login error')
 #函数的内存地址

#print(login) #函数调用

login('tank','123')

 

ATM:

   1.登陆

   2.注册

   3.提现

   4.取款

   5.转账

   6.还款 '''

#登陆功能

def login():

#代表什么都不做

   pass

#注册功能

   def register():

 #代表什么都不做

   pass

#还款功能

   def repay():

   pass

函数的参数  

在定义阶段,x,y称之为形参。

def func(x,y):

  x,y print(x,y)

#在调用阶段:10,100称之为实参

   func(10,100)

''' 函数的参数 '''

#在定义阶段:x,y称之为形参 def fnnc(x,y): print(x,y)

# 在调用阶段:10,100称之为实参 func(10, 100)

 


 位置参数

    位置形参

    位置实参

   必须按照位置一一传参 '''

在定义阶段:

位置形参

  def fnnc(x,y): print(x,y)

# 在调用阶段:10,100称之为位置实参

   func(10, 100)

 

 

关键字参数

   关键字实参

   按照关键字传参     

def fnnc(x, y): print(x, y)

# 在调用阶段:10,100称之为关键字参数

   func(10, 100)

#不能少传

# func(y=111) 报错

#不能多传

# func(y=111,x=24,z=36) 报错 

 

 

默认参数

在定义阶段,为参数设置默认值

  def foo(x=100,y=111):

   print(x,y)
#不传参,则使用默认参数 foo()
#传参,使用传入的参数 foo(200,300)
''' 函数的嵌套定义

函数对象:

   函数的内存地址称之为函数对象

函数的名称空间:

        内置:python解析器自带的都称之为“内置名称空间”

   全局: 所有顶着头写的变量,函数...都称之为“全名称空间”

   局部: 在函数内部定义的,都称之为“局部名称空间” 

名称空间加载顺序:

  内置====>全局====>局部

名称空间查找顺序:

  局部=====>全局====>内置

#函数的嵌套定义

def func1():

   print('from func1...')

def func2():   

   print('from func2...')

#函数对象

 

print(func1)
def f1(): 

   pass 

def f2(): 

   pass

dict1={'1':f1,'2':f2}

choice=input('请选择功能编号')

if choice=='1':

  print(dict1[choice])

  dict1[choice]()

elif choice=='2'

  print(dict1[choice])

  dict1[choice] ()

 

x =10

#名称空间

#函数的嵌套定义

def func1():

  #x=20

  print('from func1...')

  print(x)

  def func2():

    print('from func2...')

func1()

 

#名称空间

#函数的嵌套定义

def func1():

  #x=20

  print('from func1...')

  print(x)         #报错(代码是自上而下,print(x)无法引用x=30,所以报错)

  x=30

  def func2():

    print('from func2...')

func1()

 

posted @ 2019-06-25 22:03  肥宅冲丫  阅读(163)  评论(1编辑  收藏  举报