一、查缺补漏
  1. end=' 任意值 ' 表示换行,任意值会显示在换行前,不写默认换行
  2. input() 用户键盘输入 默认输入str类型,如要和int类型比较需要强制类型转换
二、退出、结束循环和嵌套循环
  1. continue和break 结合循环使用
    a. continue:结束本次循环,进入下一个循环 ,注意continue是结束当前循环体,但 i 还是会继续增加
    列:for i in range(5):
      if i == 3:
      continue
      elif i == 4:
      print(i)
      else:
      print(i) 结果为:0 1 2 4
    b. break:退出循环
    列:for i in range(5):
      if i == 3:
      break
      print(i) 结果为:0 1 2
  2. 嵌套循环
    a. 嵌套循环:循环里面还有循环,比如两个for循环,不要写三层循环
    列:for k in range(2):
      print('外层循环',k)
      for i in range(5):
      print(i) 结果为:外层循环0 01234 外层循环1 01234
      解释:外层循环第一次,内层循环五次,外层再开始循环第二次,内层再循环五次
      range()生成的列表元素有多少个就执行多少次
    b. 函数循环:解耦双层for循环
    列:def test02():
      for i in range(5):
      print(i)
      def test01():
      for k in range(2):
      print('外层循环',k)
      test02()
      test01() 结果为:外层循环0 01234 外层循环1 01234
      解释:函数test01被执行k=0,进入函数test02循环五次,再到test01函数k=1,进入test02循环五次
三、函数
  1. 函数:一段可以直接被另外一个程序或者代码去引用的代码
  2. 定义
    语法:def 函数名称(): -----定义函数
        函数体
        return返回值
        函数名称() -------调用函数
    注意:函数名一般用下划线,函数体要缩进(Tab,4个空格)
        return是函数运行结束的标识符,遇到return直接跳出函数
        函数的返回值return的值可以写也可以不写,不写或return后面未写返回值,默认返回None
        调用函数时不会显示return的值,但其实函数返回值中包括return后面的值
        列:def name_list():
          print("alisa")
          return 1
          name_list()
          res=name_list()
          print(res) 结果为:alisa alisa 1
  3. 函数参数
      a. 形参:占个坑,表示这里有值 如:def test(name) name就为形参
          实参:函数调用的时候传给函数的值 如:def test(name="alisa") alisa为实参
      b. 必须参数 (必须传参,但不一定被调用)
        i. 函数调用的时候必须传,不传就会报错 比如a中的name就为必须参数
        ii. 必须按参数的顺序进行传递,一一对应

                         

       图中调用的name和age的顺序和函数的顺序必须对应,要不然会传反

        iii. 参数未被使用,不会高亮
        iv. 函数的参数不一定在函数中去使用,调用函数的时候还是必须要传
    c. 关键字参数---最好使用
      i. 函数调用传递参数的时候,将某个值给固定的参数 调用时(参数=实参)
      ii. 无需关注函数参数的顺序
      iii. 即使不被高亮,也不会报错
    d. 默认参数
      i. 函数调用的时候,有默认参数可以不传参 定义时(参数=实参)
      ii. 函数调用的时候,如果传了参数如下图name_01,会覆盖掉默认参数
    e. 不定长参数
      i. *args:接收多个参数,以元组的形式接收,*后面的值可以随意更改
      ii. **kwargs:接收多个关键字参数,以字典的形式接收,**后面的值可以随便定义
      iii. 在函数体内使用的时候不能加*,和**,调用的时候不能反过来
四、变量作用域
  1. 全局变量:定义在函数外面,整个py文件都能用,或者是整个类都可以使用的变量 如下图name="alisa"
   局部变量:定义在函数里面,只在某个函数内可以使用 如下图name="老王"
  2. global关键字-----定义为全局变量
    a. 作用:global关键字修饰变量后,就表示声明该变量为全局变量
    b. 被声明的全局变量如果在函数体中,一定要先调用这个函数
    c. 先global声明再对其赋值
五、几个小知识点
1. 函数定义时的形参是否用到函数体里,是不一定,可是调用函数时,一定要根据定义时的参数进行传参,否则会报错
2. 高亮是pycharm里的特别提醒,没有应用改变量或者参数时,是灰色的,就说明函数体里没有引用这个变量或者参数
3. 关键字参数实际是传参的一种形式,采取形参=value的形式,不用纠结,注意区分就好
4. debug中,step into:是进入函数内部