zoukankan      html  css  js  c++  java
  • 末学者笔记--Python基础三玄

    Python基础三玄

    、可变类型和不可变类型                                                              

    1.可变类型

    #id不变的情况下,value可以变,则称为可变类型,如列表,字典

    l1 = [1,2,3,4]
    t1 = (1,2,3,4)
    print(id(l1))
    l1[1] = 33333333333333333333333
    print(id(l1))
    info = {'name':'张小三'}
    print(id(info))
    info['name'] = '李四'
    print(id(info))

    》》

    36500304

    36500304

    6410768

    6410768

    》》

    2. 不可变类型:

    #value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)

    如:整数,浮点数,字符串

    # a = 10

    # print(id(a))

    # a = 100

    # print(id(a))

    其id前后不同

     

    引申】:

     元组,集合

    a = (1,2,3,4)
    print(id(a))
    b = (1,2,3,4)
    print(id(b))


    s1 = {1,2,3,4}
    print(id(s1))
    s2 = {1,2,3,4}
    print(id(s2))

    》》

    7709728

    7709872     #同值的变量id却不同

    6223672

    6223552

    》》

     

    但是添加字典的值,id可不变

    s1 = {1,2,3,4}
    print(id(s1))
    s1.add('a')
    print(s1)
    print(id(s1))

    》》

    6486056

    {1, 2, 3, 4, 'a'}

    6486056

    》》

    二:内置函数(leninnot in)                                              

    1.len统计长度

    # a = {'name':'程泽宇', 'age':23}

    # print(len(a))

     

    2.Innot in

    in :....里面,有则true,无则false

    # print('e' in 'hello')

     

    not in :不在.....里面,没有则true,有则false

    # print('e' not in 'hello')

     

    、基本运算符                                                                    

     

    、比较运算符                                                                             

     

     

    、赋值运算符                                                                            

     

     

    、身份运算符                                                                            

    is==的区别

    #is判断内存地址
    #==判断变量值
    #一个内存地址可以对应多个变量,一个变量只能对应一个内存地址

    a =10
    b =10.0
    print(a==b)
    print(a is b)
    print(id(a))
    print(id(b))

    》》

    True

    False

    505359648

    6504192

    》》

    、流程控制if...else....                                                                  

    1.语法

    if 条件语句

        执行的代码块

    else:

        执行的代码块

    2.额外

    a = {}
    # a为None,0,空 三种情况时为假,其余都为真
    if a:

        print('真')
    else:
        print('假')

    》》

    》》

     

    、逻辑运算符                                                                       

     

    练习:

    #1.定义布尔型变量 has_ticket 表示是否有车票

    #2.定义整形变量 knife_length 表示刀的长度,单位:厘米

    #3.首先检查是否有车票,如果有,才允许进行安检

    #4.安检时,需要检查的长度,判断是否超过20厘米

    #   如果超过20厘米,提示刀子的长度,不允许上车

    #   如果不超过20厘米,按键通过

    #5.如果没有车票,不允许进门

     

    ticket = input('请问您是否有车票:(1:有,2:无):')
    if ticket=='1':
        nife = input('您的随身刀具长度为:')
        if  nife <='20':
            print('请上车,一路平安')
        else:
            print('刀具过长,请处理之后再上车')
    else:
        print('请购买车票再来')

     

    、流程控制之while                                                                 

    while 条件:    

        # 循环体

     

        # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件。。。

    # 如果条件为假,那么循环体不执行,循环终止

    1. 打印04的数字

    i = 0
    while i < 5:
        print(i)
        i+=1

     

    2.打印010之间的偶数

    方案一:

    i =0
    while i <11:
        print(i)
        i+=2

     

    方案二:

    i =0
    while i < 11:
        if i % 2 == 0:
            print(i)
        i+=1

     

    3.死循环

    除了0,None,空这几个假量,其他的几乎都可以作死循环条件

    如:

    while 1:
        print('循环到底')

     

    4.while....else...

    count = 0
    while count <= 3 :
        count += 1
        print("hehe",count)
    else:
        print("循环已执行完")

    》》

    hehe 1

    hehe 2

    hehe 3

    hehe 4

    循环已执行完

    》》

     

    5.pass,continue,break使用

    continue跳过本次循环进入下一次循环】:

    count = 0
    while count <= 4 :
        count += 1
        if count==3:
            continue
        print("hehe",count)

    》》

    hehe 1

    hehe 2

    hehe 4

    hehe 5

    》》

     

    breck跳出整个循环体

    count = 0
    while count <= 4 :
        count += 1
        if count==3:
            break
        print("hehe",count)

    》》

    hehe 1

    hehe 2

    》》

     

    pass是仅用来占位的,一般作补全语境用

    count = 0
    while count <= 3 :
        count += 1
        if count==3:
            pass     #触发条件不作任何处理
        print("hehe",count)

    》》

    hehe 1

    hehe 2

    hehe 3

    hehe 4

    》》

     

    6.猜拳游戏

    import random    #‘import’:调用模块random’:随机数
    win =0

    fault=0
    balance=0
    while True:
        com = random.choice(['1', '2', '3'])  # 1:石头,2:剪刀,3:布
        print('——————欢迎来到猜拳大赛——————')

        sum = input('请输入 ——1:石头,2:剪刀,3:布, 4:结束游戏    ')
        print(com)
        #赢
        if (sum=='1'and com=='2') or (sum=='2'and com=='3') or (sum=='3' and com=='1'):

            print('流弊,你赢了!')
            win+=1
        #败
        elif (sum=='1'and com=='3') or (sum=='2'and com=='1') or (sum=='3'and com=='2'):

            print('犹豫,就会败北!')
            fault+=1
        #平
        elif (sum==com):

            print('你瞅啥,平局!')
            balance+=1
        elif sum=='4':
            print('胜:%s  败:%s 平:%s' %(win,fault,balance))
            break
        else:

            print('请输入正确数字')

    十.流程控制之for循环                                                    

    1 迭代式循环:for,语法如下

      for i in range(10):

        缩进的代码块

    【列出1至10间的奇数

    for i in range(1,10,2):     #取1至10间,步长为2的数
        print(i)

    >>

    1

    3

    5

    7

    9

    >>

     

    【例1

    a = {'name':'张小三','age':23}
    for i in a:
        print(i)
    for i in a.items():
        print(i)
    for i,k in a.items():
        print(i,k)

    >>

    name

    age

    ('name', '张小三')

    ('age', 23)

    name 张小三

    age 23

    >>

    2 breakcontinue(同上while

    十一:文件

    1.文件操作

    在桌面上创建test.txt文本并写入值:

     

    python中打开此文件:

    将文件的路径复制粘贴如下

     

    file = open('C:UsersAdministratorDesktop est.txt','r',encoding='utf-8')

    #open:打开文件,内接文件路径;

    #后接‘r’或‘w’或‘a’,encoding='utf-8':表示以utf-8’转码来进行读或写或添加操作,有些电脑是gbk’转码

    #或者直接接rbwbab,分别表示:以二进制形式读,写,添加操作

    #这里有一个报错,因为‘U’在Python里是有特殊含义的,需改正如下三种:


    file = open('C:/Users/Administrator/Desktop/test.txt','r',encoding='utf-8')    #将‘’变‘/’
    file = open('C:\Users\Administrator\Desktop\test.txt','r',encoding='utf-8')    #多加一个‘’
    file = open(r'C:UsersAdministratorDesktop est.txt','r',encoding='utf-8')    #在引号前面加一个‘r’,强烈推荐

     

    #这里要注意字符编码,秉承一个原则就不会出现乱码(用什么方式写的,就用什么方式打开)

    2.r’及‘rb’:

     

    正常分三步:

    file = open(r'C:UsersAdministratorDesktop est.txt','r',encoding=utf-8)   #打开文件
    file.read()    #读或写操作
    f.close()    #关闭文件,若不关闭,当查看文件过多时,会大量占用内存

     

    总是关闭很繁琐,有简单的,在前面加‘with’即可自动关闭:

    with open(r'C:UsersAdministratorDesktop est.txt','r',encoding='gbk') as f:

        a=f.read()
        print(a)    #查看文件为原文件内容

    当将r’改为‘rb’,查看的文件就是一堆字节码

    with open(r'C:UsersAdministratorDesktop est.txt','rb') as f:

        a=f.read()
        print(a)

     

    【拓展】

    with open(r'C:UsersAdministratorDesktop est.txt','r',encoding='gbk') as f:
        data = f.read(3)    #只读3个字符
        print(data)
        data = f.readline()    #读一整行
        print(data)

    》》

    2介绍

    之后的进行只对金额:

    》》

     

        data = f.readlines()    #把内容转化成列表的形式
        print(data)

        for i in data:
        print(i)    #会以每行输出

    # res = f.readable()    #是否可读,判断为布尔类型

     

     

     

    3.写。‘w’及‘wb

    在桌面新建一个空txt文件

    with open(r'C:UsersAdministratorDesktop est1.txt','w',encoding='gbk') as f:
        f.write('你好,世界网')

    查看:

     

     

    with open(r'C:UsersAdministratorDesktop est1.txt','wb',) as f:
        f.write(b'holle,world')    #需要加‘b’,来转码写入

    #    f.write(b'你好,中国')    #这个报错是因为二进制只支持ASCII码,不支持中文
    查看:

     

    【note】:这个写操作会覆盖掉源文件内容

    补:

    # res = f.writable()#是否可写

     

    4.追加:‘a’,‘ab

    a’和‘ab’的区别与读写类似

    with open(r'C:UsersAdministratorDesktop est.txt','a',encoding='gbk') as f:
        f.write('回手掏')    #只追加在末尾而不覆盖

        f.writelines(['最','后','一','行'])    #把列表的元素添加到文档中

        f.write('1111 222 ')    #针对文本模式的写,需要自己写换行符

     

    5.光标

    f.seek(0,0)    #等价于f.seek(0),代表把光标移动到开头

    【注】seek只在字节上移动光标,不移字符

     

    f.seek(2,1)    #代表在相对位置移动2个字节(1代表光标的相对位置,2代表在相对位置上把光标向后移动2个字节)

     

    f.seek(-3,2)    #代表在末尾往前移动3个字节(2代表把光标移动到末尾,-3代表把光标向前移动3个字节)

     

    f.read(3)    #若是utf-8模式则代表读取3个字符,若是bites模式下则代表读取三个字节(意思是光标在第三个字节后面)

     

    【光标位置移动】

    #光标的移动模式  0:顶头  1:相对位置   2:末尾位置

        #12只能在bytes(字节)模式下去运行(0,1)  (0,2)除外

        #utf8中一个汉字3个字节,生僻字占的更多gbk模式中一个汉字占2个字节

    # f.seek(3,0)    #3代表字节

     

    【例】

     

    with open(r'C:UsersAdministratorDesktop est.txt','rb') as f:
        f.seek(26,0)
        a =f.read(4)
        print(a.decode('gbk'))
        f.seek(2,1)
        a =f.read(6)
        print(a.decode('gbk'))
        f.seek(-4,2)
        a =f.read(4)
        print(a.decode('gbk'))

    》》

    pyth

    的创始

    一行

    》》

    ————————————————————————————分割线——————————————————————————

  • 相关阅读:
    POJ2407:Relatives(欧拉函数) java程序员
    POJ1664:放苹果(搜索) java程序员
    关于android中数据库的创建以及基础的增删改查的相应操作
    家庭版记账本app开发进度。开发到现在整个app只剩下关于图表的设计了,具体功能如下
    在tap的碎片上与活动进行绑定实现点击事件(日期时间选择以及按钮跳转时间)
    使用tap、Fragment等相关相关知识点。实现类似微信的界面
    android学习相关intent和fragment的先关知识点
    家庭记账本app进度之关于tap的相关操作1
    家庭版记账本app进度之关于listview显示账单,并为其添加点击事件
    家庭版记账本app进度之编辑框组件
  • 原文地址:https://www.cnblogs.com/feige2L/p/10951385.html
Copyright © 2011-2022 走看看