python基础02 函数

一、Python函数

内置函数
print  input  len  type  str  int  float  list  range
pop  append  insert  keys   split  replace  strip
remove  clear

函数的特点:可以重复使用

函数的语法:def 关键字
函数名命名的规范:小写字母 不能以数字开头,不同的字母之间用下划线隔开

语法:

def 函数名:
  函数体:  #你希望这个函数体为你实现什么功能,

函数的调用: 函数名()
练习:
# 请把1-100连续的整数相加求和,写成一个函数
def sum(m,n):
   sum=0
   for item in  range(m,n+1):
      sum+=item
   print("sum={0}".format(sum))
sum(1,100)

return 当你调用函数的时候,就会返回一个值,return后面的表达式
return 在函数里面相当于一个结束符号 表示函数到此为止,后面的代码不会被执行

#写函数,检查传入列表的长度,如果大于2,那么仅仅保留前两个长度的内容,并将新内容返回
def check_list(L):
    if (len(L)>2):
       new_list=L[0:2]
       return new_list
L=[1,2,3,4]
res=check_list(L)
print(res)

动态参数 不定长参数 *args arguments

def make_sandwich(*args):
      print(args)
make_sandwich("生菜","鸡蛋","培根")
关键字参数 key-value   **kwargs key  word  必须加**
def kw_function(**kwargs):
	print(kwargs)
kw_function(x=1,y=2)  // 运行结果为:{'x': 1, 'y': 2}

变量作用域
全局变量和局部变量
1、作用范围不一样 全局 在模块里面都能用 函数的局部只能用于函数
2、当全局和局部变量同名且同时存在的时候,函数优先调用局部变量
3、当局部变量没有 就优先用全局的
4、global 声明这是一个全局变量

a=1 #全局变量
def add(b):
      a=5 #局部变量
      print(a+b)
add(10) #运行结果为:15
print(a)  #运行结果为:1
#输入num为四位数,对其按照如下的规定进行加密:
#(1) 每一位分别加5,然后分别将其替换为该数除以10取余后的结果
#(2) 将该数的第1位和第4位互换,第二位和第三位互换
#(3) 最后合起来作为加密后的整数输出
num=print("请输入四位数") #input是控制台获取数据,都是字符串形式
new_num=""
for item in num:
     new_num+=str((int(item)+5)%10)
print(new_num[::-1])

二、引入模块

为什么要学python ?
因为python中有非常丰富的库

 怎么引入不同的模块?
 第一步安装:
 a.在线安装   打开cmd
  1) pip install 模块名
  2)使用国内源去进行安装  
     pip install 国内源地址  模块名
  3)file——setting——project interpreter

 b.离线安装
   自己去python的官网或者是网上找到离线安装包
   1)解压
   2)拷贝解压后 的文件  到python安装路径
   3) win+R 在cmd里面利用cd 一级一级的进入到安装包文件的路径  安装文件 setup.py
       python setup.py install


       文件安装到哪了?
       lib-->sitepackage
#import email.mime.python_math
#一层一层的剥开
# email.mime.python_math.add(1,11)

from email.mime import python_math  #推荐大家使用

三、OS文件处理

file=open("python11.txt")
# mode 打开这个文件的模式
#  r(只读)   w(只写)   a(追加)
# r+  w+   a+
# rb  rb+ wb wb+ ab ab+ 做单元测试的时候
res=file.read()
print(res)

  1. file文件open之后默认的是r 只读模式 如果你要写入内容 报错:io.UnsupportedOperation:not writable
  2. r+ 可读可写 先写的话 从头开始覆盖写 读只读光标之后的内容 读写跟着光标走
  3. 如果要写入中文 要注意编码格式
  4. w 只写 如果硬要去读 就会报错
  5. w+ 可读可写 不管是w+ 还是 w 如果文件存在,就直接清空,再重写 如果文件不存在,则新建一个文件,然后写
  6. a 追加
    file=open(“python11.txt”,“a”,encoding=“utf-8”)
    file.write(“柠檬班666”)
    如果文件存在,就直接追加写,写在后面;如果文件不存在,则新建一个文件写

\n 换行转义符
file.read() #读取所有内容
file.readLine() #按行读取
file.readLines() #读取多行,返回的是列表

#输出一个由*组成的直角三角形
#*
#**
#***
#****
#*****
#方式一:
for item in range(5):
      print("*"*i)
#方式二:
for i in range(1,6):# 控制行数
   for j in range(1,i+1):
   	  print("*",end="") #end="" 不换行输出
   print("") # print语句会换行
	
#写一段代码,分别求出0-100之间的所有偶数和和所有奇数的和
j_sum=0
o_sum=0
for item  in range(0,101):
     if item%2==0:
        o_sum+=item 
     if item%2==1:
        j_sum+=item
print("0-100之间的所有偶数和为:{0}".format(o_sum))
print("0-100之间的所有奇数和为:{0}".format(j_sum))
# 新建一个目录/新建一个文件夹
os.mkdir("Lisa") # 新建一个文件夹

# 跨级新建目录  用/符号来代表路径的不同层级   必须确保上面的层级是存在的
os.mkdir("Lisa/vict") 

#删除文件夹
os.rmdir("Lisa/vict")

os.getcwd()  #获取当前的工作目录

os.path.realPath(__file__)  #获取当前文件所在的绝对路径

#拼接路径
  #方式一:
   new_path=os.getcwd()+"/python"
   print(new_path)
    #方式二:(前提:必须保证python目录存在)
   new_path_2=os.path.join(os.getcwd(),"python","vict")
   print(new_path_2)

#判断是否是文件  返回值是布尔类型
   print(os.path.isfile(__file__)) #true
   print(os.path.isfile(os.getcwd()))#false

#判断是否是目录:print(os.path.isdir(os.getcwd())) True

#怎么判断文件是否存在?返回布尔值
print(os.path.exists(os.path.realPath(__file__)))

#罗列出当前路径的所有文件和目录
print(os.listdir("路径"))


四、异常处理

异常:你在运行代码过程中遇到的任何错误 带有error字样的 都是异常
异常处理:我们对代码中所有可能会出现的异常进行的处理

import os
try:#警察
   os.mkdir("Lisa") #FileExistsError 嫌疑人
catch FileExistsError:#警力出动
    print("捉拿归案,等待进一步处理")

#try....expect....else else跟随try,你好我就好,你不好我就不好
#try...expect....finally 无论try、catch是如何运行的,finally都会执行
#try...expect try相当于警察,它里面的内容相当于嫌疑人,expect相当于警力出动

五、函数练习题

 #等腰三角形,每个边都是5个*号
 #          *
 #         * *
 #        * * *
 #       * * * *
 #      * * * * *
for i in range(1,6):
   for j in range(1,6-i):
       print(" ",end="")
   for k in range(1,i+1):
       print("* ")
    print("")


# 输出99乘法表
for i in range(1,10): # 控制行数
    for j in range(1,i+1): # 控制列数
       print("{0}*{1}={2} ".format(j,i,j*i),end="")
     print("")


# 经典冒泡排序,利用for循环,完成a=[1,7,4,89,34,2]的冒泡排序
# 冒泡排序,小的排前面,大的排后面
# 排序最终使得数组中的这几个数字按照从小到大的顺序排序
# 冒泡比较  一般最多比较n-1趟就完成 n是元素的个数
a=[1,7,4,89,34,2]
for i in range(1,len(a)):
  if j in range(i,len(a)-1)
     if a[j]>a[j+1]:
       a[j],a[j+1]=a[j+1],a[j]
 print(a)


#1、写一个函数,可以完成任意指定整数的相加,并返回结果
#2、自动贩卖机,只接受1元、5元、10元的纸币或者硬币,可以1块、5块或者10块,最多不超过10块,饮料只有橙汁、椰汁、矿泉水和早餐奶,售价分别为3.5,4,2,4.5,写一个函数用来表示贩卖机的功能,用户投钱和选择饮料,并通过判断之后,给用户吐出饮料和找零
def buy_drink:
        drinks={"1":3.5,"2":4,"3":2,"4":4.5}
        total=0 #存储我们购买饮料的总金额
        用户选择饮料
        while True:
           choose=input("请选择你要购买的饮料: 1:橙汁 2:椰汁 3:矿泉水 4:早餐奶 q 退出")
           if choose in drinks.keys():
               total+=drinks[choose]
           elif choose=="q":
               print("退出选择饮料")
               break
           else:
               print("您输入的选项不存在")

        while True:
              money=input("请投币:只能投1元、5元、10的硬币或纸币,按q 退出投币")
              if  money=="1"  or money=="5"  or money=="10
              	  toubi+=int(money)
                  if  toubi>total:
                       print("您刚刚购买了{0}元饮料,你已支付{1}元,找零{2}元".format(total,toubi,toubi-total))
	       break
                  elif toubi<total:
	        print("您刚刚购买了{0}元饮料,你已支付{1}元,还需支付{2}元".format(total,toubi,total-toubi))
	  else:
	       print("您刚刚购买了{0}元饮料,你已支付{1}元,支付完毕".format(total,toubi))
            elif money=="q":
                  print("退出投币")
                   break
           else:
               print("您输入的选项不存在")
buy_drink()

六、python类

类   关键字class   def 函数名(参数):函数的关键字
类语法:
  class 类名:  # 类名的规范是:数字 字母 下划线组成,不能以数字开头  首字母大写  驼峰命名
        类属性
        类方法
 class boyfriend:
    age="25"
    def cooking(self): #类里面的方法,都必须带self这个参数,self 是一个固定的占坑符号
       print("会做饭")


#实例对象  具体的一个例子  
#实例对象语法:类名()
#实例具有类里面所有的属性和方法的使用权限
#调用属性: 实例.属性名
#调用方法: 实例.方法名()  实例.函数名()  def开头的才是函数


#类的概念:具有某一类共同属性和特性的事物
#类一般包含属性以及方法
类里面的方法分为三种:
      实例方法  self
      类方法    cls
      静态方法  普通方法
1、实例和类名都可以直接调用
2、不同点
   类方法和静态方法,不可以调用类里面的属性值,如果你要参数,请自己传递参数
3、什么时候可以定义类方法和静态方法,当你的某个函数与其他的类函数 类属性没有半毛钱关系
     就可以定义类方法和静态方法

初始化函数
def init(self):
pass

  def __int__(self): # 千万不要手残,这个不是初始化函数
            pass
class Teacher:
    def __init__(self,name,age):
        elf.name=name
        self.age=age
teacher=Teacher("小王",18)

#什么时候可以使用初始化函数?
#想用就用
#如果某个属性值是多个函数共用的  就可以用初始化函数

你可能感兴趣的:(python)