zoukankan      html  css  js  c++  java
  • python笔记(一)

     
    ascii: 字母,数字,特殊字符: 1个字节,8位。
    unicode: 16位 俩个字节 升级32位 四个字节。
    utf-8: 最少一个字节,8位表示。 英文字母8位 1个字节。
    欧洲16位,2个字节。
    中文24位, 3个字节。
    gbk: 中文2个字节, 英文字母1个字节。
     
     
     

    1 . 格式化输出

     
    %s %d %%
     
    %是占位符。
    s是字符串
    d是数字。
    %%转义百分号
     
    栗子:
     
    name = input("name:")
    age = int(input("age:"))
    sal = input("sal:")
     
    info ='''
    name:%s
    age: %d
    sal: %s
    ''' %(name,age,sal)
     
    print(info)
     
     
    #format三种用法:
    #用法1
    s='i love {}, i like {},age is {}'.format('you','me',18)
    print(s)
     
    #用法2
    s='i love {0}, i like {0},age is {1}'.format('you',18)
    print(s)
     
    #用法3
    s='i love {name}, i like {name},age is {age}'.format(age=18,name='you')
    print(s)
     
     
     

    2 .逻辑运算

    or and not
     
    or 的规律 如果x为真则返回x,如果x为假,则返回y.
    and的规律 如果x为真则返回y,如果x为假,则返回x.
    >>> 0 or 3 = 3
    >>> 1 or 2 = 1
     
    >>> 0 and 3 = 0
    >>> 1 and 2 = 2
     
    >>> not 5 = False
    >>> not 0 = True
     
     
    3 if 控制
     
    score = int(input("输入分数:"))
     
    if score > 100:
    print("我擦,最高分才100...")
    elif score >= 90:
    print("A")
    else:
    print("太笨了...E")
     
     
     
    4 while循环
     
    break 用于完全结束一个循环,跳出循环体执行循环后面的语句
    continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
    pass 什么也不做,一半用来占位置,跳过这个内容作为预留内容。
     
     
     
     
    break栗子:
     
    count = 0 while count <= 100 : #只要count<=100就不断执行下面的代码 print("loop ", count) if count == 5: break count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
     
     
    continue 栗子:
     
    count = 0 while count <= 100 : count += 1 if count > 5 and count < 95: #只要count在6-94之间,就不走下面的print语句,直接进入下一次loop continue print("loop ", count)
     
     
    #计算1-2+3.....-99中除了88意外所有数的总和
     
    i=0
    j=-1
    sum=0
    while i<99:
    i=i+1
    if i==88:
    continue
    else:
    j=-j
    sum=sum+i*j
    print(sum)
     
    >>>-50
     
     
     
     
     
     

    5. 字符串的操作

     
    s='xu chao yang'
    s1=s.capitalize() #首字母大写
    s2=s.upper() #全部大写
    s3=s.lower() #全部小写
    s4=s.swapcase() #大小写反转
    s5=s.title() #每个隔开的单词首字母大写
    s6=s.center(20,'*') #居中空白填充
    s7=s.expandtabs() #将	 加上前面的字符个数 八位一隔开
    s8=s.__len__() #通用方法查看有多少个元素长度
    s9=s.startswith('xu')#前面的字符是否匹配返回True 或 False
    s10=s.startswith('x',2,4) # 2到5的字符串是否是以x为开头 真或假
    s11=s.find('x') #查找内容当中x在第几个位,找不到返回-1
    s12=s.index('A') #查找内容当中x在第几个位,找不到报错
    s13=s.strip() #去空格
    s14=s.count() #统计个数
    s15=s.split(',') #结果以,分割输出(str--->list)
    s16=s.replace('old','now',1次) #替换
    s17=s.isalnum() #判断字符串由数字或字母组成True or flse
    s18=s.isalpha() #判断字符串只由字母组成True or flse
    s19=s.isdigit() #判断字符串只由数字组成True or flse
    print(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15)
     
     
     

    6 for 循环 是有限循环

    #while循环是无限循环
     
    s='abcdefgs'
    for i in s:
    print(i) #循环s变量里的元素
     
     
     
    s='abcd安藤efgs'
    if '安藤' in s:
    print('有敏感词')
     
     
     

     

    7 数据类型介绍

     
    int 123 用于计算
    bool True,False 用户判断
    str 存储少量数据,进行操作
    list [123,'','1234',[1,2,3]] 存储大量的数据
    元祖 (1,2,3,'第三方',)是只读列表,可以存任何数据。
    dict 字典 键值对 {'name':'','age':16} 存储关系型数据。
    集合 {1,2,3,'abc'} 俩个集合的差集,交集。
     
     
    int :
     
    1=5
    print(i.bit_length()) #转换成2进制最小位数。
     
     
     
    bool :True False
     
     
     
     
    类型之间的转换,想换成什么样的就用什么类型包起来。
    #数字转字符串 int ---str
    i=1
    s =str(i)
    print(s,type(s))
     
    #字符串转数字 str-----int
    i='123'
    s=int(i)
    print(s,type(s))
     
    #数字转成布尔值 int---bool
    i=1
    s =bool(i)
    print(s,type(s))
     
    #布尔值转成数字 bool--int
    #True 1
    #False 0
     
    #字符串转布尔值 str---bool
    s="" ---False
    非空字符串都是True
    s="0" ---True
     
    #字符串转列表 str---list
    split()
     
     
    #列表转字符串 list---str
    print(''.join(s))
     
     
     
     

    str 类型切片

     
    #字符串的索引和切片 第一位索引值是0
    s='ABCDEFGHIGK' #S[首:尾:步长]
    s1 = s[0] #A
    s2 = s[0:3] #ABCD 顾头不顾尾+1位
    s3 =s[-1] #K
    s4 =s[:] #取全部ABCDEFGHIGK
    s5 =s[0:] #取全部ABCDEFGHIGK
    s6 =s[0:5:2] #跳着取ACE
    s7 =s[3:0:-1] #反着取 DCB
    s8 =s[3::-1] #反着取 DCBA
    s9 =s[3::-2] #反跳着取 DB
    s10=s[::-1] #反取全部KGIHGFEDCBA
    print(s10)
     
     
     
     

    list 类型

     
    #切片
    s=['xu',[1,2,3],'chao','yang']
    s1=s[0] #['xu']
    s2=s[1] #[1,2,3]
    s3=s[0:3] #['xu', [1, 2, 3], 'chao']
     
    #list 类型增删改查
     
    s=['a','b','c','d']
    s=['a','b','c','d']
    #
    #s.append(1) #增加到最后['a', 'b', 'c', 'd', 1]
    #s.insert(2,1) #插入到第二位后面['a', 'b', 1, 'c', 'd']
    #s.extend('小小') #拆分成单个元素迭代加入到最后
    #
    #s.pop(0) #按索引删除删除第一个元素
    #s.pop() #按索引删除默认删除最后一个
    #s.remove('a') #按元素去删除
    #s.clear() #清空
    #del s #删除列表
    #del s[2:] #切片删除后俩个值
    #
    #s[0]='aa' #按索引修改A值
    #s[0:2]='小小小' #删除前两个然后拆分插入值['小', '小', '小', 'c', 'd']
    #
    #for i in s:
    # print(i) #循环查询
    #print(s[0:2]) #正常查询
     
    #公共方法
    l=len(s) #4 统计所有字符的个数
    num=s.count('c') #1 统计C共有几个
    print(s.index('c')) #2 统计C的索引号
     
    #排序
     
    s=[1,4,3,2,5]
    #s.sort() #正向排序[1, 2, 3, 4, 5]
    #s.sort(reverse=True) #倒序排序[5, 4, 3, 2, 1]
    #s.reverse() #反转[5, 2, 3, 4, 1]
     
    #list 的嵌套
     
    s=['xu','chao','yang',[1,2,3],'fo']
    #print(s[1][1]) #嵌套去找 h
    #s[0]=s[0].capitalize() #将xu改为Xu 首字符大写
    #s[2]=s[2].replace('ao','ang') #将chao改为chang
    print(s)
     
     
     
     
    #元祖 类型(只读)
    儿子不能改,孙子可能可以改。
     
    tu=(1,2,3,'xu',[2,3,4,'ni'],'yang')
    print(tu[4]) #查询
    tu[4][3]=tu[4][3].upper() #修改ni为大写,孙子元素可以修改
    tu[4].append('sb') #增加sb到[2, 3, 4, 'NI', 'sb']
     
     
     
     
    #join 字符串操作的方法
    可迭代对象都可以操作
     
    s=['x','a','c','d']
    print('*'.join(s)) #用*连接后面的迭代对象x*a*c*d
    print(''.join(s)) #xacd 相当于列表转化为字符串
     
     
    #range 数字列表[1,2,3,...]#顾头不顾尾
     
    #for i in range(0,100): #0-99
    #for i in range(3,10): #3-9
    #for i in range(0,10,3): #0,3,6,9
    #for i in range(10,0,-1): #10-1
    #for i in range(10,0,-2): #10,8,6,4,2
    print(i)
     
     
    #单个单个打印出以下所有内容:
    s=[1,2,3,5,'abc',[2,3,4,5,'cde'],'per']
     
    for i in s:
    if type(i)==list:
    for k in i:
    print(k)
    else:print(i)
     
     
    
     
     

    #dict 字典数据类型 映射 键值队类型 key:values

     
    '''据类型划分: 可变数据类型,不可变数据类型。
    不可变数据类型: 元祖,bool,int,str 这些类型可哈希
    可变数据类型: list,字典,set 这些类型不可哈希
    dict key: 必须是不可变数据类型,可哈希。
    values: 任意数据类型。
     
    dict优点: 二分查找去查询。
    存储大量的关系型数据。
    特点: 只针对<=3.5 无序的。
    '''
     
    dic={
    'name':['小明,小张,小红'],
    'py9':[{'num':71,'avg_age':18},
    {'num':71,'avg_age':18}
    ],
    True:1,
    (1,2,3):'无意义',
    2:['无意义2'],
    }
    print(dic)
     
     
     
     
    dic=
     
    #增1
    #dic['high']=185 #没有这个键值队,新增加
    #dic['age']=16 #如果有键,值覆盖。
    #增2
    #dic.setdefault('weight',100) #增加新内容
    #dic.setdefault('name','xuchao') #如果有值,不做任何处理,如果没有,在新加内容。
     
    #
    #dic.pop('age') #如果有值,直接删除'age'
    #print(dic.pop('age')) #print有返回值.18
    #print(dic.pop('age','没有此键')) #如果没值,可以自定义返回值。
     
    #print(dic.popitem()) #随机删除,3.6是按照删除最后一个。
     
    #dic.clear() #清空字典。
     
    #del dic #删除dic字典
    #del dic['name'] #删除name,如果没有该值则报错。
     
     
    #
    #dic['age']=16 #如果有键,值覆盖修改。
     
    #dic1={'age':15,'name':'chaoyang'}
    #dic.update(dic1) #把dic1的数值覆盖添加到dic里。
     
     
    #
    print(dic.keys(),type(dic.keys())) #只显示键值内容。
    print(dic.values()) #只显示值的内容。
    print(dic.items()) #显示成元祖里面是键值。
    print(dic)
    print(dic['name1']) #显示值,没有该键则报错。
    print(dic.get('name1','aaa')) #显示值,没有该键可以自定义输出。
     
     
    for i in dic: #什么不写打印的是键
    print(i)
     
    for i in dic.keys(): #打印的是键
    print(i)
     
    for i in dic.values(): #打印值。
    print(i)
     
    for i in dic.items(): # 打印值。
    print(i)
     
     
    #容错性高
    a,b=1,2
    print(a,b) #1 2
    print(a) #1
    print(b) #2
     
     
    #一行代码互换
    a=1
    b=2
    a,b=b,a
    print(a) #2
    print(b) #1
     
    a,b=1,2 #1 2
    a,b=[1,2] #1 2
    a,b=[1,2],[2,3] #[1,2] [2,3]
    a,b=(1,2) #1 2
    print(a,b)
     
     
    #美观打印
    for k,v in dic.items():
    print(k,v)
    >>>age 18
    >>>name xu
    >>>sex male
     
     
    #dict嵌套
     
    dic={
    'name':['xu','chao','yang'],
    'py9':{
    'time':'1213',
    'learn_money':19800,
    'addr':'CBD',
    },
    'age':21
    }
     
    #dic['age']=65 #覆盖内容
    #dic['name'].append('aa') #在name列表中添加aaa
    #dic['name'][2]=dic['name'][2].upper() #yang覆盖为大写
    #dic['py9']['female']=6 #新增female:6
    #dic['py9'].setdefault('female',6) #新增female:6
     
     
     
    #作业题 qewwqe1231aaa123afr11 查找出连续的数字共有几组(3)
    info = input('>>>').strip()
    for i in info:
    if i.isalpha():
    info = info.replace(i," ") # 1231 123 11
    l = info.split()
    print(len(l))
     
     

    #模拟购物车功能

     
    flag=True
    while flag:
     
    li =["手机","电脑","鼠标垫","游艇"]
    for i in li:
    print('{}		{}'.format(li.index(i)+1,i))
    num_of_chioce = input('请输入选择的商品号/输入Q或者q退出:')
    if num_of_chioce.isdigit():
    num_of_chioce=int(num_of_chioce)
    if num_of_chioce>0 and num_of_chioce<=len(li):
    print(li[num_of_chioce-1])
    else:print('请输入有效数字')
    elif num_of_chioce.upper() == 'Q':break
    else:print('请输入数字')
     
    #= 赋值
    #== 比较值是否相等
    #is 比较功能,比较的是内存地址
    #id 输出内容
     
    #is
    s=[1,2,3]
    s1=s
    print(s1 is s)
    >>>True
     
    #id
    s=[1,2,3]
    s1=s
    print(id(s),id(s1))
    >>>1961604065160 1961604065160
     
     
    #(小数据池) 目的在一定程度节省空间。
    #数字范围-5----256
    #字符串:1,不能含有特殊字符,
    # 2,s*20还是同一个地址,s*21以后都是俩个地址。
    # 剩下的list dict tuple set 没有小数据池子
    i1=6
    i2=6
    print(id(i1),id(i2)) #结果一样,因为使用小数据池节省空间。
     
    i1=500
    i2=500
    print(id(i1),id(i2)) #结果不一样。
     
     

    #字符集关系

     
     
     
     
     
    '''
    py3:
    str在内存中是用unicode编码。
    bytes类型 是中间类型
    对于英文:
    str :表现形式:s ='xu'
    编码形式 010101010 unicode
    bytes:表现形式:s=b'xu'
    编码形式 000101010 uft-8 gbk ...
    对于中文:
    str :表现形式:s ='中国'
    编码形式 010101010 unicode
    bytes:表现形式:s=b'xe91e91e01e21e31e32'
    编码形式 000101010 uft-8 gbk ...
    '''
     
    s='alex'
    s1=b'alex'
    print(s,type(s)) #alex <class 'str'>
    print(s1,type(s1)) #b'alex' <class 'bytes'>
     
    b='中国'
    b1=b'中国'
    print(b,type(b))
    print(b1,type(b1)) #报错,需要继续转化。
     
    #str--->bytes转化
     
    s1='xu'
    s11=s1.encode('utf-8') #encode编码,如何将str-->bytes
    print(s11) #b'xu'
     
    s1='中国'
    s11=s1.encode('utf-8') #encode编码,如何将str--->bytes
    内部是将unlocode--->uft-8
    print(s11) #b'xe4xb8xadxe5x9bxbd'
     
     
     
     
     

    #购物车作业题

     
    #买家 卖家 商品 金钱
    li=[
    {'name':'苹果','price':10},
    {'name': '香蕉', 'price':20},
    {'name': '西瓜', 'price':30},
    ]
    shopping_char={}
     
    #把货物放在货架上
    print('欢迎光临水果店')
    money=input('让我看看你的钱:')
    if money.isdigit() and int(money)>0:
    while 1:
    for i,k in enumerate(li):
    print('序号{},商品{},价格{}'.format(i,k['name'],k['price']))
    choose =input('请输入您要购买的序号:')
    if choose.isdigit() and int(choose) <= len(li):
    num=input('您要购买的商品数量:')
    if num.isdigit():
    if int(money)>li[int(choose)]['price']*int(num):
    money=int(money)-li[int(choose)]['price']*int(num)
    if li[int(choose)]['name'] in shopping_char:
    shopping_char[li[int(choose)]['name']]=shopping_char[li[int(choose)]['name']]+int(num)
    else:
    shopping_char[li[int(choose)]['name']]=int(num)
    print('购物车中的商品有{},您的余额为{}'.format(shopping_char,money))
    else:
    print('穷鬼,拿钱去。')
    break
    else:
    print('都说了是序号,你傻啊')
     
     

     

    #集合

    #可变的数据类型 它里面的元素必须是不可变的数据类型。
    #集合是无序的,是不可重复的。
     
    set1=set({1,2,3}) #{1, 2, 3}
    set2=set({1,1,2,3}) #{1, 2, 3}
    set3={1,2,3,[2,3],{'name':'aa'}} #报错因为有可变的数据类型。
    print(set2)
     
     
     
    set1={'aa','bb','cc','dd','ee','ee'}
    #
    #set1.add('xu') #正常添加。
    #set1.update('xu') #拆分元素并无序的添加到里面。
     
     
    #
    #set1.pop() #随机删除。
    #set1.remove('aa') #按元素删除,没有则报错。
    set1.clear() #set()空集合表示方法
    del set1 #删除整个集合
    print(set1)
     
    #
    没有改,因为是无序的并且是不可变的数据类型。
     
    #
    for i in set1: #查询
    print(set1)
     
     
     
    set1={'aa','bb','cc','dd','ee','ee'}
    set2={'aa','bb'}
    print(set1&set2) #求交集1
    print(set1.intersection(set2)) #求交集1
     
    print(set2.union(set1)) #并集
     
    print(set1^set2) #反交集1
    print(set1.symmetric_difference(set2)) #反交集2
     
    print(set1-set2) #差集1 set1独有的就是差集
    print(set1.difference(set2)) #差集2
     
    print(set2<set1) #子集1 set2小于set1(全包含)说明就是子集
    print(set2.issubset(set1)) #子集2
     
    print(set1>set2) #超集1
    print(set1.issuperset(set2)) #超集2
     
     
    #set数据类型 可变的数据类型。
    li=[1,2,33,33,2,1,4,5,6,6]
    set1=set(li) #<class 'set'>
     
    #set不可变数据类型设置(将可变数据类型变为不可变的)。
    s=frozenset('xu')
    print(s,type(s)) #<class 'frozenset'>
     
     
    #循环删除字典的某些键值对(直接删除会报错)
    dic={'k1':'v1','k2':'v2','a3':'v3'}
    dic1={}
    for i in dic:
    if 'k' not in i:
    dic1.setdefault(i,dic[i])
    dic=dic1
    print(dic)
    >>>{'a3': 'v3'}
     
     
    #如果元祖里面只有一个元素,且不加,那此元素该是什么类型就是什么类型。
    #元祖
    tu1=(1)
    tu2=(1,)
    print(tu1,type(tu1)) #1 <class 'int'>
    print(tu2,type(tu2))#(1,) <class 'tuple'>
     
     
     
     
     
     
     
     
     
     
     

  • 相关阅读:
    python-套接字编程之udp
    python-套接字编程之tcp
    用脚本获取windows的mac地址
    电脑控制安卓手机(手机投屏)
    人体内脏分布图
    电子发票打印出来太大了,怎么办?
    局域网内搭建各部门文件共享
    樊登读书会:《善战者说:孙子兵法与取胜法则十二讲》
    健康饮食——百万教程
    减肥十律
  • 原文地址:https://www.cnblogs.com/chaoyangxu/p/13785640.html
Copyright © 2011-2022 走看看