Python基础

1.Python简介

1.1 Python是什么编程语言

从编程语言的几个方向来说

  1. 编译型和解释型

    • 什么是编译型?什么是解释型?

      • 编译型:就是把源代码一下全部都编译成二进制文件(优点:执行效率高。缺点:开发效率较低)
      • 解释型:就是源代码从上到下一条一条交给计算机,计算机收到一条就执行一条(优点:开发效率高。缺点:执行效率较低)
    • Python属于解释型
  2. 静态语言和动态语言
    • 什么是静态语言?什么是动态语言?

      • 静态语言:创建变量时需声明变量的数据类型
      • 动态语言:创建变量时不需要声明变量的数据类型
    • Python属于动态语言
  3. 强类型定义语言和弱类型定义语言
    • 什么是强类型定义语言?什么是弱类型定义语言?

      • 强类型定义语言:如果一个变量指定了一个数据类型,那么如果不强制转换那它永远就都是这个数据类型了
      • 弱类型定义语言:一个变量可以赋予多个数据类型的值
    • Python属于强类型定义语言

2.Python入门

2.1输出

#python2 写法
print "Hello World!"#python3 写法
print("Hello World!")
#如果要输出带有换行的,那么就用三对引号
print("""
第一行
第二行
""")
#如果在执行时报错或者乱码(输出中文会)
#在py文件的头加入:#-*- coding:utf-8 -*-

2.2变量

  • 什么是变量?

    • 首先变量有一个名字,然后它有一个值。这就是变量

      • v(变量名) = 1(值)

      • v = 1
        
    • 补充:这里的v所指向的不是1这个值,而是这个值所存在的内存地址

  • 变量的命名规则:

    • 变量名由字母,数字,下划线组成

    • 变量不能是数字开头

    • 禁止使用Python里面的关键字和内置函数的名字

      • 常见关键字(help(“keywords”)可以查看)

        help("keywords")False               def                 if                  raise
        None                del                 import              return
        True                elif                in                  try
        and                 else                is                  while
        as                  except              lambda              with
        assert              finally             nonlocal            yield
        break               for                 not
        class               from                or
        continue            global              pass
      • 如果记不住还有一点就是在使用IDE的时候如果是Python关键字那么它会变颜色

    • 要见名知意(如下:

      name = "nanke" #这让别人知道名字是nanke
      #而不是
      a = "nanke"
      
    • 变量名写法

      • 驼峰体:OnePage
      • 下划线法:one_page

2.3常量

  • ​ 常量就是一般不更改的变量,一般用大写来表示。如:

    LANGUAGE_NAME = "Python"
    

2.4注释

  • 单行注释

    #print("Hello World!")
    
  • 多行注释

    """
    name = "nanke"
    print(name)
    """
    

2.5基本数据类型

其实本不该在这里列举的,因为基本数据类型里面有好多好多的操作方法。在这里我就简单介绍一下什么是整形,什么是字符串,什么是布尔

  • 整形

    val = 123
    
  • 字符串

    val = "123"
    
  • 布尔

    val = True
    val = False
    

    这里,是引号包裹起来的都是字符串,不管里面是什么

    然后,不是引号包裹起来的数字几乎都是整型了

    布尔型就只有两个一个真一个假(True和False)

2.6输入

  • python2

    name = raw_input("请输入你的名字:")
    
  • python3

    name = input("请输入你的名字:")
    
  • 注意:不管是Python2还是Python3里面name接收的值的数据类型都是字符串类型。下面来举个栗子

    n1 = input("请输入一个数字:")
    n2 = input("请输入一个数字:")
    val = n1 + n2
    print(val)
    
    • 在这里我n1输入1 ,n2输入2。那么val的值会是什么呢?
    • 可能初学者会认为是3,但实际上并不是。
    • 它会输出12(注:这里的12依旧是字符串)
    • 为什么是12呢?因为这是做的字符串加法
    • 如果我想让它变成真正的1+2呢?如下
    n1 = input("请输入一个数字:")
    n2 = input("请输入一个数字:")
    val = int(n1) + int(n2)
    print(val)
    

2.7if else elif

  • if

    • if 就是如果XX 那就XX

    • 说人话就是 如果条件满足 就执行什么

    • 比如

    • if 你是男人:

      ​ 进男厕所

    if gender == '男':print('进男厕所')
    
  • if else

    • 如果理解了上一个,那么这个也就好理解了
    • 如果是男人就进男厕所,否则进入女厕所
    if gender == '男':print('进男厕所')
    else:print('进女厕所')
    
  • if elif else

    • 如果理解了前两个,这个就瞬间懂了
    if gender == '男':print('进男厕所')
    elif gender == '女':print('进女厕所')
    else:print('进宠物医院吧')
    

3.运算符

3.1while循环

  • 什么是循环?

    • 循环就好像是在操场跑圈,一直围绕着操场跑。
    • 当然,一个人也不能无止境的跑,那么肯定有停下来的条件。
    • 那么我让它跑十圈就停下来
    i = 1
    while i <= 10:print('跑了'+str(i)+'圈')i = i + 1
    """
    跑了1圈
    跑了2圈
    跑了3圈
    跑了4圈
    跑了5圈
    跑了6圈
    跑了7圈
    跑了8圈
    跑了9圈
    跑了10圈
    """
    
  • break

    • 如果在跑10圈的过程中,如果外面突然打雷下雨,那么是不是就得停下来了
    • 那么我让它在第五圈的时候就不跑了
    i = 1
    while i <= 10:print('跑了'+str(i)+'圈')if i == 5:breaki = i + 1
    """
    跑了1圈
    跑了2圈
    跑了3圈
    跑了4圈
    跑了5圈
    """
    
    • 这里他跑了五圈就停止了。
    • 所以很明显break的作用就是退出这一整个循环
  • continue

    • 如果假设我们跑的这十圈里面可以使用接力,一个人替一个人跑一圈
    • 那么我在第五圈的时候使用接力
    i = 1
    while i <= 10:if i == 5:i = i + 1continueprint('跑了'+str(i)+'圈')i = i + 1
    """
    跑了1圈
    跑了2圈
    跑了3圈
    跑了4圈
    跑了6圈
    跑了7圈
    跑了8圈
    跑了9圈
    跑了10圈"""
    
    • 这里可以看出来continue的作用就是退出这一个循环
  • 总结

    • break

      • 就是结束整个循环
      • 如果执行到break,那么就跳出这个循环体
    • continue
      • 就是结束这一次的循环
      • 如果执行到continue,并不会跳出整个循环,只是结束这个循环的这一次的循环

3.2格式化输出

  • %s

    name = 'nanke33'
    msg = "今天是个好日子,%s好开心"%(name,)
    print(msg)
    
    • 结果是

      • 今天是个好日子,nanke33好开心
  • %d和%i

    n1 = 1
    n2 = 2
    msg = "%d+%i=%d"%(n1,n2,n1+n2,)
    print(msg)
    
    • 结果是

      • 1+2=3
    • 这里%d和%i都是数字
  • %%

    print("80%%")
    
    • 结果是

      • 80%
    • 这里要使用百分号%就得多加一个百分号来转义,不然Python会以为一个百分号是一个占位符

3.3运算符

3.3.1 算术运算符

#  +
print(1+2)  #3
#  -
print(2-1)  #1
#  *
print(2*2)  #4
#  /  除 (python3)
print(10/4) #2.5
#  /  除 (python2)
print(10/4) #2
#  %  取模
print(9/2)  #1
#  **  n1**n2 n1的n2次方
print(3**2)  #9
#  //  取整数
print(10/4)  #2

3.3.2比较运算符

#由于是比较运算,所以只有是或不是,返回布尔值,真或假
n1 = 1
n2 = 2
#等于
print(n1 == n2)   #False
#不等于
print(n1 != n2)   #True
#大于
print(n1 > n2)    #False
#小于
print(n1 < n2)    #True
#大于等于
print(n1 >= n1)   #False
#小于等于
print(n1 <= n1)   #True

3.3.3赋值运算符

n1 = 1
n2 = 2
#  =
n3 = n1 + n2
#  +=
n1 += n2 # n1 = n1 + n2
#  -=
n1 -= n2 # n1 = n1 - n2
#  *=
n1 *= n2 # n1 = n1 * n2
#  /=
n1 /= n2 # n1 = n1 / n2
#  %=
n1 %= n2 # n1 = n1 % n2
#  **=
n1 **= n2 # n1 = n1 ** n2
#  //=
n1 //= n2 # n1 = n1 // n2

3.3.4逻辑运算

  • and(与)

    print(True and False) #False
    
  • or(或)

    print(True or False) #True
    
  • not(非)

    print(not True) #False
    

3.3.5成员运算

  • in

    print('a' in 'abc')#True
    
  • not in

    print('a' not in 'abc')#False
    

4.数据类型

4.1整形(int)

  • 在Python2中有int 和 long

  • 在Python3中只有int

  • 在Python2中的/要显示小数

    from __future__ import division
    value = 3/2
    print(value)
    

4.2布尔型(bool)

  • True
  • False

4.2.1转换

#整形除了0为False,其余的都是True
val = bool(1)  #True
val = bool(0)  #False
#字符串除了空字符串为False,其余的都是True
val = bool("")  #False
val = bool("nanke")  #True
  • 其余的数据类型除了空的是False,非空的都是True

4.3字符串(str)

4.3.1字符串相加

n1 = "1"
n2 = "2"
val = n1 + n2
print(val)
#结果是12

4.3.2字符串相乘

  • 如果有学过其他语言的小伙伴打印n条Hello World!会用循环来。在Python中有个简单的方法就是字符串相乘

    val = "Hello World!\n"
    print(val*8)
    #结果
    #Hello World!
    #Hello World!
    #Hello World!
    #Hello World!
    #Hello World!
    #Hello World!
    #Hello World!
    #Hello World!
    

4.3.3索引

  • 字符串的索引其实很简单,就比如一个单词Hello,它的第一个是H第二个是e…类似的,找它第几个就是字符串的索引,使用方法:

    val = "Hello"
    print(val[1])
    #结果e
    
    • 这里有人问,为啥不是H而是e,不是第一个吗?
    • 因为计算机里面是从0开始数数的,而不是1.
    • 所以这里的val[1]就代表val这个变量的第二个单词啦

4.3.4切片

  • 什么是切片?切片其实就是把一个单词切成你想要的。

  • 如:Hello你只想要Hel怎么做呢?

    val = "Hello"
    print(val[0:3])
    #结果
    #Hel
    
    • 这个时候可能又会问,0-3不是四个吗?为啥只有三个
    • 这里我的理解是因为它的区间是半开半闭区间[0,3)

4.3.5步长