Python 学习第二章

发布时间:2019-03-02 10:49:08编辑:auto阅读(2283)

    本章内容

    1. 数据类型
    2. 数据运算
    3. 表达式 if ...else 语句
    4. 表达式 for 循环
    5. 表达式 while 循环

    一、数据类型

       在内存中存储的数据可以有多种类型。

       在 Python 有五个标准的数据类型

    1. Numbers (数字)
    2. String (字符串)
    3. List (列表)
    4. Tuple (元组)
    5. Dictionnary (字典)

    数字

      Python 支持四种不同的数字类型

    • int (有符号整数)
    • long (长整型)
    • float (浮点型)
    • complex (复数)

    字符串

      字符串或串(String)是由数字、字母、下划线组成的一串字符。

    print("我爱你,我的国!")

      这里说一下字符串拼接,在第一章的时候最后一张图显示出字符串拼接。这里我们演示一下怎么用,先看个简单的程序如下:

    #班里面有10人,来了5人,现在有多少人?
    student_number=10
    come_number=5
    new_number=student_number+come_number
    print("班级现有",new_number,"") # 没用字符串拼接
    #班里面有10人,来了5人,现在有多少人?
    student_number=10
    come_number=5
    new_number=student_number+come_number
    print("班级现有"+str(new_number)+"")  #采用字符串拼接

      这里面new_number 数据类型是 int 类型,要通过 str() 转换成字符串(详见第一章介绍)。然后通过 + 号进行拼接

    列表

      List(列表) 是 Python 中使用最频繁的数据类型。

      基本操作:

      • 索引
      • 切片
      • 追加
      • 删除
      • 长度
      • 切片
      • 循环
      • 包含
    a = ["1","2","3","4"]
    b = a[1]
    c = a[0]
    d = a[1:3]      #提取列表中 a[1]和a[2] 用到切片功能,后面在详细的学
    print(b)    #b = 2
    print(c)
    print(d)      #d = ["2","3"]

    元组

      元组是另一个数据类型,类似于List(列表)。

      元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

      创建元组

    age=(11,12,13,43,33,23)
    print(age)

     字典

      字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。

      两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

      字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

    person={"name":"xp","age":24}
    print(person)

    更多内容:猛戳这里

    二、数据运算

      根据这几天学的和查阅资料,整理出以下几种数据运算,当然有些我自己还没练习,先整理出来,后面用到再重点介绍。

     算术运算

    运算符 描述 实例
    + 加——两个数相加 a=1  b=2    a+b 输出结果为 3    
    - 减——两个数相减 a=4  b=2    a-b 输出结果为 2 
    * 乘——两个数相乘 a=1  b=2    a*b 输出结果为 2 
    / 除——两个数相除 a=4  b=2    a/b 输出结果为 2
    % 取模——返回除法的余数 a=5  b=2    a%b 输出结果为 1
    // 整除——返回商的整数部分 a=5  b=2    a//b 输出结果为 2
    ** 幂——返回x的y次幂 a=5  b=2    a**b 输出结果为 25

    比较运算

    运算符 描述 实例
    == 等于——比较对象是否相等 a=1  b=2  a==b 返回false
    != 不等于——比较两个对象是否不相等 a=1  b=2  a==b 返回True
    > 大于——比较两个对象谁大 a=1  b=2  a>b 返回false
    < 小于——比较两个对象谁小 a=1  b=2  a<b 返回ture
    >= 大于等于——比较两个对象的关系 a=1  b=2  a>=b 返回false
    <= 小于等于——比较两个对象的关系 a=1  b=2  a<=b 返回false

    逻辑运算符

    运算符 描述 实例
    and a=false  b=ture   a and b =false
    or a=false  b=ture   a or b =ture
    not a=false  b=ture   nat(a and b) =ture

    逻辑运算符真值表

      and 真值表

    and

    1

    0

    1

    1

    0

    0

    0

    0

      or 真值表

    or

    1

    0

    1

    1

    1

    0

    1

    0

    not 真值表

     

    not

    1

    0

    0

    1

    赋值运算符

    运算符 描述 实例
    = 简单的赋值运算符 a=3 b=a   b 的输出结果为 3
    +=  加法赋值运算符 a=3  c=1  a+=c   a 的输出结果为 4     等价于a=a+c
    -=  减法赋值运算符 a=3  c=1  a-=c   a 的输出结果为 2     等价于a=a-c
    *=  乘法赋值运算符 a=3  c=2  a*=c   a 的输出结果为 6     等价于a=a*c
    /=  除法赋值运算符 a=4  c=2  a/=c   a 的输出结果为 2     等价于a=a/c
    %=  取模赋值运算符 a=9  b=5  a%=b  a 的输出结果为 4    等价于a=a%b
    //=  整除赋值运算符 a=49  b=5  a//=b  a 的输出结果为 9    等价于a=a//b
    **=  幂赋值运算符 a=2  b=3  a**=b  a 的输出结果为 8    等价于a=a**b

     位运算

    运算符 描述 实例
    & 按位 与 运算符 a=11  b=2   (a&b)=2     二进制:0000 0010
    | 按位 或 运算符 a=11  b=2   (a|b)=11    二进制:0000 1011
    ^ 按位 异或 运算符 a=11  b=2   (a^b)=9     二进制:0000 1001   (取不相同的位)
    ~ 按位 取反 运算符 a=11   (~a)=-12     二进制:1000 1100
    << 左移动运算符 a=11  (<<a) =22    二进制:0001 0110
    >> 右移动运算符 a=11  (<<a) =5     二进制:1000 0101

      注意:按位 午饭运算符,高位为1符号位为1为负数,负数在计算机以反码形式存储,反码 = 二进制取反(符号位不变)+1。所以 a = 11 二进制位:0000 1011

    取反后为:1111 0100  ——> 1111 0100-1 = 1111 0011 ——> 取反: 1000 1100 = -12

      问题:a = 11 c=a>>1  那么 a 的最低位移到高位上,后面的一次向右挪一位,那么高位上位1,为什么不是负数呢?结果却是5, 二进制位: 1000 0101

    运算符优先级

    运算符 描述
    ** 指数 (最高优先级)
    ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
    * / % // 乘,除,取模和取整除
    + - 加法减法
    >> << 右移,左移运算符
    & 位 'AND'
    ^ | 位运算符
    <= < > >= 比较运算符
    <> == != 等于运算符
    = %= /= //= -= += *= **= 赋值运算符
    is is not 身份运算符
    in not in 成员运算符
    not and or 逻辑运算符


    更多内容:
    猛戳这里

    三、表达式 if ...else 语句

     缩进:缩进级别必须保持一致

      Tab 键 != 4个空格

      IndentationError: expected an indented block  语法错误

    实例一:猜数字

    1 ge_of_princal = 56   
    2 guess_age = int(input(">>:"))
    3 if guess_age == age_of_princal:
    4     print("yes")
    5 elif guess_age > age_of_princal:
    6     print("太大了,往小的猜")
    7 else:
    8     print("太小了,往大的猜")

     实例二:成绩等级划分

     1 score = int(input("score:"))
     2 
     3 if score > 90:
     4     print("A")
     5 elif score > 80:
     6     print("B")
     7 elif score > 70:
     8     print("C")
     9 elif score > 50:
    10     print("D")
    11 else:
    12     print("退学吧")

    实例三:比较大小

     1 #比较三个数的大小
     2 
     3 max_number = 0
     4 number1 = int(input("number1="))
     5 number2 = int(input("number2="))
     6 number3 = int(input("number3="))
     7 if number1 > number2:
     8     max_number = number1
     9     if max_number > number3:
    10         print("最大值为:",max_number)
    11     else:
    12         max_number = number3
    13         print("最大值为:",max_number)
    14 else:
    15     max_number = number2
    16     if max_number > number3:
    17         print("最大值为:",max_number)
    18     else:
    19         max_number = number3
    20         print("最大值为:",max_number)

    四、表达式 for 循环

       for x in ...:

    name=['xp','qa','ws','ed']
    x=0
    for x in name:
        print(x)

      执行这段代码,会依次打印 name 的每个元素

    xp
    qa
    ws
    ed

      比如我们想计算1-100的整数之和,从1写到100有点困难,利用 Python 提供的 range() 函数,可以生成一个整数序列,再通过 list() 函数转换成 list 。

    sum=0
    x=1
    for x in range(101):    # range() 函数生成(0,100)整数序列
        sum=sum+x          #这里一定要注意缩进
        print(sum)

       range() 函数 可以生成一个整数序列,通过 list() 函数转换成 list (列表)

      比如:生成一个数列 [0,1,2,3,4]

    list_number=list(range(5))
    print(list_number)

      代码打印结果:

    [0,1,2,3,4]

      如果生成1~100之间的奇数怎么实现呢?

    1 for i in range(1,101,2):
    2     if i % 2 ==1:
    3         print("loop:",i)
    View Code

      也可以利用步长来实现:

    for i in range(1,101,2):
            print("loop:",i)

    五、表达式 while 循环

       实例:编写一个登陆接口,输入用户名和密码,认证成功后显示欢迎信息;输错三次后程序退出,不能再输入密码。

     1 n = 3
     2 user_name = "li"
     3 pass_name = "123456"
     4 while n>0:
     5     name = input("请输入用户名:")
     6     password=input("请输入用户名密码:")
     7     if name == user_name and password == pass_name:
     8         print("欢迎进入....")
     9         break
    10     else:
    11         n=n-1
    12     if n==0:
    13         print("该用户名被锁定")
    14     else:
    15         print("密码输入错误,还有", n, "次机会")

      while 的另外一种程序,附带解释图

     1 _user = "li"
     2 _passwd = '123'
     3 counter = 0
     4 while counter <3:
     5     username = input("Username:")
     6     password = input("Passworld:")
     7     if username == _user and password == _passwd:
     8         print("Welcome %s login...."%_user)
     9         break
    10     else:
    11         print("Invalid username or password!")
    12     counter += 1
    13 else:
    14     print("你行不行啊")

      上面程序是利用while循环实现,这里我们用for循环试试

     1 _user_name = "xp"
     2 _user_password = "12345"
     3 for i in range(3):
     4     user_name = input("User_name:")
     5     user_password = input("User_password:")
     6     if user_name == _user_name and user_password == _user_password:
     7         print("Welcome login....")
     8         break
     9     else:
    10         print("Invalid username or password!")

      实例打印1~100之间的偶数部分

    1 #打印1~100之内的偶数部分
    2 even_number = 1
    3 while even_number <= 100:
    4     even_number +=1
    5     if even_number % 2 == 0:
    6         print(even_number)
    View Code

      未完待续........

      有什么不对的地方请大家多多指教,相互交流学习。尽量将自己学会的通过博客给大家展示出来,也希望大家不要着急。

    大家也可以关注我的博客与我互动学习、交流。

     

关键字