zoukankan      html  css  js  c++  java
  • python--day2--基础数据类型与变量

    笔者:QQ:   360212316

    python控制语句

    for循环语句示例:

    for i in range(10):
        print(i)

    for循环语句示例1:

    for i in range(10):
        print(i)
    else:
       print("for循环正常完成")

    多层for循环语句示例:

    for i in range(10):
        for j in range(10):
            print(i, j)

    for循环猜年龄示例:

    feng_age = 39
    for i in range(3):
        guess_age = int(input("年龄:"))
        if guess_age == feng_age:
            print("猜对了")
            break
        elif guess_age >= feng_age:
            print("猜大了")
        elif guess_age <= feng_age:
            print("猜小了 ")

    break:跳出整个循环

    continue:跳出当前层的循环,执行下一个程序

    exit():退出整个程序

    变量:

    变量的作用:保存状态(程序的运行本质是一系列状态变化,变量的目的就是用来保存状态,变量值的变化就构成了程序的不通结果)

    数据类型:

    什么是数据类型及数据类型分类:

       程序的本质就是驱使计算机去处理各种状态变化,这些状态分为很多种:

    例如:

            张三-------------------------------------------------->字符串

            1000------------------------------------------------->数字

            衣服,鞋子,帽子-------------------------------------->列表

    python中的数据类型

    python使用对象模型来存储数据,每一个数据类型都是一个内置的类,每建设一个数据,实际就是在初始化生成一个对象,即所有数据都是对象。

    对象的三个特性:

            身份:内存地址,可以用id()获取

            类型:决定了该对象可以保存什么类型值,可执行何种操作,遵循什么规则,可用type()

            :对象保存的真实数据

            注意:我们定义的数据类型,只需要这样a=1,内部生成1这样的对象会自动触发,我们无需关心

    这里定义的字符串、数字、列表等都是数据类型(用来描述某中状态),除此之外还有很多其他数据类型,处理不同的类型就要需定义不同的数据类型:

    标准类型 其他类型
    数字 类型type
    字符串 null
    列表 文件
    元组 集合
    字典 函数 /方法
     
      模块

    标准数据类型

    数字:

    定义 a=1
    特性:
        1、只能存放一个值
        2、一经定义,不可更改
        3、直接访问
    数字分类:整型,布尔,浮点,复数

    整型:

        python中的整型分为长整型和整型,python2.7是分整型和长整型之分,python3中不区分长整型和短整型。

    布尔值bool:

        Ture和Flase

        1和0。

        非0的值都为真,0为假。

    浮点数float:

        python的浮点数就是小学中的小数,类似C语言中的double.
        在运算中,整数与浮点数运算的结果是浮点数

        浮点数也就是小数,之所以称为浮点数,是因为按照科学计数法来表示时,一个浮点数的小数点位置是可变的,比如1.23*109和12.3*108是相等的。浮点数可以用数学写法,比如1.23、3.1415,-9.88,等等。但是对于很大或者很小的浮点数,就必须需用科学计数法表示,把10用e代替1.23*109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等

    整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有四舍五入的误差。

    复数complex:

    复数是由实数部分和虚数部分组成,一般形式为x+yj,其中的x是实数部分,y是复数的虚数部分,这里的x和y都是实数。

      注意:虚数部分的字母j大小写都可以。

      例子:

    C:Usersxiaofeng>python
    Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 1.3 + 2.5j == 1.3 + 2.5j
    True
    >>>

    数字相关内建函数:

    函数名 功能 示例
    int 当传入参数为小数时,直接去掉小数部分 int(3.5)
    去掉小数部分得3
    round 四舍五入去小数 round(3.5)
    结果得4
    math.floor 类似int,离取原小数最近但大于原小数的数 math.floor(3.5)
    结果得4
    float 浮点型工程函数
    complex 复数工厂函数
    bool 布尔型工程函数 传入参数非空,非0,非None均返回Ture
    abs 绝对值工程函数 abc(-1)得1
    coerce 接受两个参数,把数据转成相同类型的,返回一个元组 corece(-1,3,2)得(-1.0,3,2)
    divmod 返回元组,包含商和余数 divmod(93,10)得(9,3)
    pow 取平房 pow(2,3,3)相当于2**3%3得2,
    pow(2,3)等同于2**3
    hex 十进制转16进制 hex(10),得0xa,0x开头表示16进制
    oct 十进制转8进制 oct(10),得012,0开头代表8进制
    ord 根据ASCII表,将字符转换成十进制 ord('a'),得97
    chr 根据ASCII表,将十进制转换成字符 char('97')得'a'

    字符串:


    定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或''' '''中间包含的内容称为字符串
    特性:
       1、只能存放一个值
       2、不可变
       3、按照从左到右的顺序定义的字符集合,下边从0开始顺序访问,有序
    注意:
        1、字符串的单引号和双引号都无法取消特定字符的含义,如果想让引用内所有的字符均取消特殊含义,就需要在引号前面加r,例如:name=r'zhang san'
        2、unicode字符串与r连用,r必须在前面,如name=ur'zhang san'

    字符串的创建:

    'hello word'
    "hello word"
    '''hello word'''
    """hello word"""

    字符串常用操作:


            移除空白:
             例子:

    msg6 = '  name   '
    print(msg6.strip())     # strip去除两边空格
    结果:
    name

    切片:

    例子1:

    name = 'hello world'
    print(name[::2])
    
    结果:
    hlowrd

    例子2

    name = 'hello world'
    print(name[:3:2])
    结果:
    hl

    例子3

    name = 'hello world'
    print(name[1:3])
    结果:
    el

    索引:

    例子:

    name = 'hello world'
    print(name.index('l'))
    结果:
    2

    长度:

    例子:

    name = 'hello world'
    print(len(name))
    结果:
    11

    字符串的各种操作:

    name = "Pan Feng"
    
    print(name.capitalize())  #字符串首字母大写
    结果:
    Pan feng
    
    =============================================================
    name = "Pan Feng"
    print(name.center(50,'-'))  #输出结果总长度50,两边用自定义符号补全
    结果:
    ---------------------Pan feng---------------------
    
    ===========================================================
    name = "Pan Feng"
    print(name.casefold())      #大写转小写
    结果:
    pan feng
    
    ============================================================
     
    name = "Pan Feng"
    print(name.count('n'))    #统计字符串中的字母n出现了几次
    结果:
    2
    可选参数:
    sub -- 搜索的子字符串
    start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
    end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
    
    =========================================================
    name = "Pan Feng"
    print(name.encode())  #字符串转二进制
    结果:
    b'Pan Feng'
    
    ===========================================================
    name = "Pan Feng"
    print(name.endswith('g')) #检测字符串是否以字母"g"结尾,如果是则返回TRYE,如果不是返回flase
    结果:
    True
    可选参数:
    suffix -- 该参数可以是一个字符串或者是一个元素。
    start -- 字符串中的开始位置。
    end -- 字符中结束位置。
    
    =========================================================
    name = "Pan 	Feng"
    print(name.expandtabs(tabsize=20)) #如果字符串中加入了	参数,可可以使用expandtebs执行table的长度
    结果:
    Pan                 Feng
    
    name = "Pan Feng"
    print(name.find('n'))  #查找字符'n'在字符串中出现的位置,字符串也可以且切片
    结果:
    2
    可选参数:
    str -- 指定检索的字符串
    beg -- 开始索引,默认为0。
    end -- 结束索引,默认为字符串的长度。
    
    
    ========================================================
    name = "Pan Feng"
    print(name[2])  #字符串切片
    结果:
    n
    
    names = "my name is {name},age is {age}"
    print(names)
    print(names.format(name="panfeng",age="22"))
    
    占位符,站位符必须在字符串中定义,定义必须使用大括号,.format()中的变量名是大括号之中的内容
    
    =========================================================
    
    name = "Pan Feng 2"
    print(name.isalnum()) #阿拉伯数字和字母的组合,并且不能有空格和特殊字符,如果有特殊字符,结果为flase,
    结果:
    False
    相反:
    name = "PanFeng2"
    print(name.isalnum())
    True
    
    ========================================================
    name = "PanFeng"
    print(name.isalpha())  #判断纯英文字母为true,并且不能有空格
    结果:
    True
    
    
    =====================================================
    name = "Pan Feng"
    print(name.isalpha())
    结果:
    True
    
    =====================================================
    name = "12"
    print(name.isdecimal())  #判断字符串是否是十进制,十进制结果为True
    结果:
    True
    
    name = "panfeng"
    print(name.isdecimal())  
    结果:
    False
    ======================================================
    name = "Pan Feng"
    print(name.isdigit())  #判断字符串是否为整数,是整数结果为True,反之flase
    结果:
    False
    
    
    ==================================================
    
    
    print("A_23".isidentifier()) 判定字符串是否是一个合法的标识符,如果是返回结果True,反之flase
    结果:
    True
    
    ==================================================
    
    name= "pan feng"
    print(name.islower())  #判断字符串是否全部是小写,如果是返回结果Ture,反之Flase
    结果:
    Ture
    
    ================================================
    
    name= "PAN FENG"
    print(name.isupper())  #判定字符串是否全部是大写,如果是返回结果Ture,反之Flase
    结果:
    True
    
    ==================================================
    
    name= "Pan Feng"
    print(name.istitle()) #判定字符串首字母是不是大写,如果是则返回Ture,反之Flase。
    如果一个单词中有两个大写字母,结果也是flase
    结果:
    True
    
    ===============================================
    print("  ".isspace())  #判断字符串是否全部是空格,如果是则返回Ture,反之Flase。
    结果:
    True
    
    =========================================
    name= "Pan Feng"
    print(name.index('e')) #索引字母e的位置,从0开始数,空格也算,一个空格占一位
    结果:
    5
    
    =============================================
    name= "Pan Feng"
    print("abc12".isnumeric())
    
    
    
    
    
    ==============================================
    
    print(''.join(['1','2','3','4']))
    结果:
    1234   #返回通过指定字符连接序列中元素后生成的新字符串。
    
    print('+'.join(['r','a','b','b']))
    结果:
    r+a+b+b #返回通过指定字符连接序列中元素后生成的新字符串。
    
    
    s1 = "-"
    s2 = ""
    seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
    print (s1.join( seq ))
    print (s2.join( seq ))
    ==============================================
    name = "pan feng"
    print(name.ljust(50,'*'))  #字符串左对齐,50是整个字符串长度,不都用‘-’补全,不指定用空格补全
    结果:
    pan feng******************************************
    
    可选参数:
    width -- 指定字符串长度。
    fillchar -- 填充字符,默认为空格。
    
    ================================================
    name = "pan feng"
    print(name.rjust(50,'-')) ##字符串左对齐,50是整个字符串长度,不都用‘-’补全,不指定用空格补全
    结果:
    ------------------------------------------pan feng
    
    可选参数:
    width -- 指定字符串长度。
    fillchar -- 填充字符,默认为空格。
    
    ======================================================
    
    用于截掉字符串左边的空格或指定字符。
    name = "             pan feng"
    print(name.lstrip())     #左边去掉空格回车
    str = "     this is string example....wow!!!     ";
    print( str.lstrip() );
    str = "88888888this is string example....wow!!!8888888";
    print( str.lstrip('8') );
    
    结果:
    pan feng
    this is string example....wow!!!     
    this is string example....wow!!!8888888
    
    
    =============================================================
    p = str.maketrans("abcde","12345")  #定义字符串与数字的对应表
    name = "pan feng" 
    print(name.translate(p))  将定定义对应表和字符串替换
    结果:
    p1n f5ng
    
    ========================================================
    
    name = "Pan Feng"
    print(name.lower())  #大写转小写
    
    结果:
    pan feng
    
    ===================================================
    name = "-  --Pan Feng----  --"
    
    print(name.replace("P","z")) #替换单个字符
    结果:
    -  --zan Feng----  --
    
    =================================================
    
    name = "-  --Pan Feng----  --"
    print(name.rjust(50,'-'))
    结果:
    ------------------------------  --Pan Feng----  --
    
    =================================================
    name = "-  --Pan Feng----  --"
    print(name.rfind('g'))
    结果:
    12
    ==============================================
    name = "-  --Pan Feng----  --"
    
    print(name.rindex('g'))
    结果:
    12
    ==========================
    name = "  -  --Pan Feng----  --  "
    print(name.rsplit())
    
    结果:
    ['-', '--Pan', 'Feng----', '--']
    
    ===============================================
    name = "  -  --Pan Feng----  --  "
    print(name.rstrip())   #右边去掉空格回车
    
    结果:
      -  --Pan Feng----  --
    
    ========================================
    name = "  -  --Pan Feng----  --  "
    print(name.lstrip()) #去掉左边空格
    结果:
    -  --Pan Feng----  --  
    
    ==========================================
    以空格划分生成列表,默认
    name = "  -  --Pan Feng----  --  "
    print(name.split())
    
    结果:
    ['-', '--Pan', 'Feng----', '--']
    
    
    =====================================
    判断字符串以什么开头
    name = "  -  --Pan Feng--
    --  --  "
    print(name.startswith('F'))
    
    结果:
    False
    
    
    ======================================
    大小写互换,小写变大写,大写变小写
    name = "  -  --Pan Feng--
    --  --  "
    print(name.swapcase())
    结构:
      -  --pAN fENG--
    ========================================
    去掉两边空格
    
     name = "  -  --Pan Feng----  --  "
     print(name.strip())
     
    结果:
    -  --Pan Feng----  --
    
    ======================================
    name = "  -  --Pan feng----  --  "
    print(name.title())
    
    结果:
      -  --Pan Feng----  --  
    
    ==========================================
    name = "  -  --Pan feng----  --  "
    print(name.zfill(50))
    结果:
    0000000000000000000000000  -  --Pan feng----  --

    列表中最常用的操作

    去除空格

    切片

    长度

    索引

    数据运算符

    算数运算符:

    以下例子a=10,b=20

    运算符 描述 示例
    + 加法运算 a + b 得 30
    - 减法运算

    a - b 得 -10

    * 乘法运算 a * b 得 200
    / 除法运算 b / a 得 2
    % 取模 - 将%号左边的值除以%号右边的值并且将得到的结果的余数返回 10%5得0 ,10%3 得1, 20%7 得6
    **

    幂 - 返回x的y次幂,就是返回多少次方

    2**8 得256

    // 取整除 - 返回x除以y的商的整数部分 9//2得4 , 9.0//2.0得4.0

    比较运算符:

    运算符 描述 示例
    == 判定两个对象是否相等 (a == b) is not true.
    != 判断两个对象是否不相等 (a != b) is true.
    > 大于   返回a是否大于b (a > b) is not true.
    < 小于   返回a是否小于b (a < b) is true.
    >= 大于等于  返回a是否大于等于b (a >= b) is not true.
    <= 小于等于  返回a是否小于等于b (a <= b) is true.

    赋值运算符:

    运算符 描述 示例
    = 赋值,将右边的值赋值个左边的变量名 c = a + b 将会把a+b的结果赋值给c
    += 自加赋值,将+=左边的值与+=右边的值相加,然后再把结果赋值给+=左边的值 c += a相当于 c = c + a
    -= 自减赋值 c -= a相当于 c = c - a
    *= 自乘赋值

    c *= a 相当于 c = c * a

    /= 自除赋值 c /= a 相当于 c = c / a
    %= 自取模赋值 c %= a 相当于 c = c % a
    **= 自求冥赋值

    c **= a 相当于 c = c ** a

    //= 自取正赋值

    c //= a 相当于 c = c // a

    位运算:

    下表中a=60,b=13

    运算符 描述 实例
    & 按位与运算符:参与运算的两个值,如果两个相应位都是1,则该位的结果为1,否则为0 (a & b)输出结果为12,二进制解释0000 1100
    | 按位或运算,只要对应的两个二进制位有一个为1时,结果位就为1 (a|b)输出结果61,二进制解释0011  1101
    ^ 按位异或运算,当两对应的二进制位相异,结果为1 (a^b)输出结果为49,二进制解释0011  0001
    ~ 按位取反运算,对数据的每个二进制位取反,及把1变为0,把0变为1 (~a)输出结果为-61,二进制解释:11000011在一个有符号二进制的补码形式
    << 左移动运算符:运算数的各二进制位全部左移动若干位,由<<右边的数指定移动的位数,高位丢弃,低位补0 a<<2,结果为240,二进制解释:1111 0000
    >> 又移动运算符,把>>左边的运算数的各二进制位全部右移动若干位,<<右边的数指定移动的位数 a>>2,结果为15,二进制解释:0000 1111

    逻辑运算:

    以下例子a=10,b=20

    运算符 逻辑表达式 描述 实例
    and x and y 布尔“与”,如果x为flase, x and y返回false,否则返回y的计算值 (a and b)返回20
    or x or y 布尔“或”,如果x是非0,它返回x的值,否则它返回y的计算值 (a or b)返回10
    not not x 布尔'非',如果x为true,返回flase,如果x为flase,则返回Ture not(a and b)返回flase

    成员运算符:

    运算符 描述 实例
    in 如果在指定的序列中找到值返回Ture,否则返回Flase x在y的序列中,如果x在y的序列中,则返回Ture
    not in 如果在指定的序列中没有找到值,返回Ture,否则返回Flase x不再y的序列中,如果x不再y的序列中,则返回flase

    运算符优先级,由上到下,优先级从高到低

    运算符 描述
    ** 指数(最高优先级)
    ~+- 按位反转,一元加号和减号
    */%// 乘、除、取模、取整数
    +- 加减法
    >> << 右移左移运算符
    & 位‘and’
    ^| 位运算符
    <=、<、>、>= 比较运算符
    ==、!== 等于不等于
    =、 %=、 /=、 //=、 -=、 +=、 *=、 **= 赋值运算符
    is 、is not 身份运算符
    in、not in 成员运算符
    not or and 逻辑运算符

    列表

    列表的创建

    names = ['aaa', 'bbb', 'ccc']

    列表的用法例子:

    # 定义列表
    names = ['aaa', 'bbb', 'ccc']
    print(names)
    
    # 列表的增加
    names.append('ddd')
    print(names)
    
    # 列表的插入
    names.insert(3,'111')
    print(names)
    
    # 列表的删除
    #  方法1
    names.remove('111')
    print(names)
    # 方法2
    names.pop(3)
    print(names)
    # 方法3
    del names[2]
    print(names)
    
    names[3] = "111"
    print(names)
    
    # 列表的统计
    print(names.count("111"))
    
    # 列表的扩展
    names1 = ["xiao1", "xiao2"]
    names.extend(names1)
    print(names)
    
    # 列表的反转
    names.reverse()
    print(names)
    # 列表的排序
    names.sort()
    print(names)
    # 列表的下标获取
    print(names.index('aaa'))
    # 列表的切片
    print(names[0:3])

    购物车程序

    product_list = [
        ["iphone", 5800],
        ["mac", 12800],
        ["coffer", 30],
        ["bike", 2000]
    ]
    shopping_list = []
    gong_zi = input("工资:")
    if gong_zi.isdigit():
        gong_zi = int(gong_zi)
    
    while True:
        for i, items in enumerate(product_list):
           print(i,items[0],items[1])
        user_chose = input("商品编号:")
        if user_chose.isdigit():
            user_chose = int(user_chose)
            if user_chose < len(product_list) and user_chose >= 0:
                p_items = product_list[user_chose]
                if p_items[1] <= gong_zi:
                    gong_zi -= p_items[1]
                    shopping_list.append(p_items)
                    print("您购买的商品是33[31;1m%s33[0m,您的余额是33[31;1m%s33[0m" % (p_items[0],gong_zi))
                else:
                    print("33[32;1m购买不起,你的余额:33[0m33[31;1m%s33[0m" % gong_zi)
            else:
                print("33[41;1m商品不存在33[0m")
        elif user_chose == 'quit':
            print("-----shopping-------")
            for shopp in shopping_list:
                print(shopp)
            print("您的余额是33[31;1m%s33[0m" % gong_zi)
  • 相关阅读:
    window.location.href无法跳转的解决办法
    HTTP 错误 405.0
    C# 浅拷贝与深拷贝
    C# .ToString() 格式化
    深入理解AsyncTask
    【转】Android子线程真的不能更新UI么
    深入理解Activity的启动模式
    Android7.0,剪裁后提示“无法保存经过裁剪的图片”
    Android工程改包名
    javah命令,提示“找不到类文件”
  • 原文地址:https://www.cnblogs.com/alber/p/5981753.html
Copyright © 2011-2022 走看看