zoukankan      html  css  js  c++  java
  • python 学习之数据类型

    1.常量:全部都是大写字母,不会改变的变量

    2..pyc文件:是由py文件经过编译后二进制文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python 的虚 拟机来执行的。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同。

    3.字符串

    字符串长度获取:len(str)
    字母处理:
    全部大写:str.upper()
    全部小写:str.lower()
    大小写互换:str.swapcase()
    首字母大写,其余小写:str.capitalize()
    首字母大写:str.title()
    字符串去空格及去指定字符:
    去两边空格:str.strip()
    去左空格:str.lstrip()
    去右空格:str.rstrip()
    去两边指定的字符:str.strip('指定字符'),相应的也有lstrip,rstrip
    字符串判断相关:
    是否以start开头:str.startswith('start')
    是否以end结尾:str.endswith('end')
    是否全为字母或数字:str.isalnum()
    是否全字母:str.isalpha()
    是否全数字:str.isdigit()
    是否全小写:str.islower()
    是否全大写:str.isupper()
    字符串替换相关:
    替换old为new:str.replace('old','new') #默认全替换
    替换指定次数的old为new:str.replace('old','new',替换次数)
    字符串搜索相关:
    搜索指定字符串,没有返回-1:str.find('t')
    指定起始位置搜索:str.find('t',start)
    指定起始及结束位置搜索:str.find('t',start,end)
    从右边开始查找:str.rfind('t')
    搜索到多少个指定字符串:str.count('t')
    上面所有方法都可用index代替,不同的是使用index查找不到会抛异常,而find返回-1
    str.center(width[, fillchar]):
    width -- 这是字符串的总宽度。
    fillchar -- 这是填充符,不填默认是空格。
    str.capitalize():
    capitalize()方法返回字符串的一个副本,只有它的第一个字母大写。
    join方法:
    join 方法用于连接字符串数组
    例:
    s = ['a', 'b', 'c', 'd']
    print ''.join(s)
    print '-'.join(s)

    4.

    创建列表
    sample_list = ['a',1,('a','b')]

    Python 列表操作
    sample_list = ['a','b',0,1,3]

    得到列表中的某一个值
    value_start = sample_list[0]
    end_value = sample_list[-1]

    删除列表的第一个值
    del sample_list[0]

    在列表中插入一个值
    sample_list[0:0] = ['sample value']

    得到列表的长度
    list_length = len(sample_list)

    列表遍历
    for element in sample_list:
        print(element)
       
    Python 列表高级操作/技巧

    产生一个数值递增列表
    num_inc_list = range(30)
    #will return a list [0,1,2,...,29]

    用某个固定值初始化列表
    initial_value = 0
    list_length = 5
    sample_list = [ initial_value for i in range(10)]
    sample_list = [initial_value]*list_length
    # sample_list ==[0,0,0,0,0]


    附:python内置类型
    1、list:列表(即动态数组,C++标准库的vector,但可含不同类型的元素于一个list中)
    a = ["I","you","he","she"]      #元素可为任何类型。

    下标:按下标读写,就当作数组处理
    以0开始,有负下标的使用
    0第一个元素,-1最后一个元素,
    -len第一个元 素,len-1最后一个元素
    取list的元素数量               
    len(list)   #list的长度。实际该方法是调用了此对象的__len__(self)方法。 

    创建连续的list
    L = range(1,5)      #即 L=[1,2,3,4],不含最后一个元素
    L = range(1, 10, 2) #即 L=[1, 3, 5, 7, 9]

    list的方法
    L.append(var)   #追加元素
    L.insert(index,var)
    L.pop(var)      #返回最后一个元素,并从list中删除之
    L.remove(var)   #删除第一次出现的该元素
    L.count(var)    #该元素在列表中出现的个数
    L.index(var)    #该元素的位置,无则抛异常
    L.extend(list)  #追加list,即合并list到L上
    L.sort()        #排序
    L.reverse()     #倒序
    list 操作符:,+,*,关键字del
    a[1:]       #片段操作符,用于子list的提取
    [1,2]+[3,4] #为[1,2,3,4]。同extend()
    [2]*4       #为[2,2,2,2]
    del L[1]    #删除指定下标的元素
    del L[1:3]  #删除指定下标范围的元素
    list的复制
    L1 = L      #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作。函数参数就是这样传递的
    L1 = L[:]   #L1为L的克隆,即另一个拷贝。
           
    list comprehension
       [ <expr1> for k in L if <expr2> ]

    5.字典操作


    radiansdict.clear():删除字典内所有元素
    radiansdict.copy():返回一个字典的浅复制
    radiansdict.fromkeys():创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    radiansdict.get(key, default=None):返回指定键的值,如果值不在字典中返回default值
    radiansdict.has_key(key):如果键在字典dict里返回true,否则返回false
    radiansdict.items():以列表返回可遍历的(键, 值) 元组数组
    radiansdict.keys():以列表返回一个字典所有的键
    radiansdict.setdefault(key, default=None):和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default
    radiansdict.update(dict2):把字典dict2的键/值对更新到dict里
    radiansdict.values():以列表返回字典中的所有值

    作业:实现购物的小程序,支持多用户登录,可以充值和多次购买

    #/usr/bin/env python3
    #coding:utf-8

    import os,json
    import time


    def login(): #用户登陆函数
    shop = [ #商品店
    ("bike",1000),
    ("coffe",30),
    ("alineware",16000),
    ("thinkpad",8000),
    ("iphone",7000),
    ]
    storage_user_file = "./user.py" #存放用户名,密码以及余额的字典,用json格式去存 {"wyx": ["jerry", "100000"]}
    user_login_num = 0
    exit_flag = True #退出程序标志位
    while exit_flag:
    existing_users_dict = json.load(open(storage_user_file,'r')) #读取用户资料,以字典形式存储
    get_user = input("please your username ")
    get_pass = input("please your password ")
    if get_user in existing_users_dict and get_pass == existing_users_dict[get_user][0]: #如果用户名密码正确
    print ("Welcome to login..")
    shop_car = {} #存储购买商品的名称以及商品的价格及和个数 "bike":[100,8]
    salary = existing_users_dict[get_user][1] #获取当前用户的工资
    salary=int(salary)
    while exit_flag:
    for item in enumerate(shop): #在shop列表里的每个元组前加上序号,变为 (1,("bike",100))
    s_index = item[0] #每个元组的的序号
    s_name = item[1][0] #商品
    s_price = item[1][1] #商品的价格
    print(s_index,s_name,s_price) #输出商店里面 商品的标号,商品的名字以及商品的价格
    produc = input("请选择你要购买的商品q=quit,c=check ")
    if produc.isdigit(): #如果商品的标号以及购买的个数为整形
    producnum = input("请输入购买的个数 ")
    producnum = int(producnum)
    produc = int(produc)
    if produc*producnum < salary: #如果购买的商品个数小于工资
    p_product = shop[produc] #商品以及对应的价格,为元组 ('thinkpad', 8000)
    p_product_name = p_product[0] #商品的名称
    p_product_price = p_product[1] #商品的价格
    salary = salary-p_product_price*producnum #工资等于工资减去购买的商品价格乘商品个数
    if str(salary).isdigit():
    existing_users_dict[get_user][1] = salary #在字典做出相应的更改,写入剩余的工资
    shop_car[p_product_name] = [p_product_price,producnum] #把购买的物品和价格以及购买数量放到购物车
    buying_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
    listnum = len(existing_users_dict[get_user]) #查看这个用户是否第一次购买
    if listnum == 2:
    existing_users_dict[get_user].append({}) #改变初始字典结构为 {'wyx': ['jerry', 99910, {}]}
    existing_users_dict[get_user][2][p_product_name]=[buying_time,producnum] #把购买时间写入到文件为 {'用户': ['密码', 余额, {'购买的物品': ['购买时间',数量]}]}
    print(existing_users_dict)
    json.dump(existing_users_dict,open(storage_user_file,"w")) #把剩余的钱存入到文件
    print ("你购买了%s 个数为%s,余额为%s" % (p_product,producnum,salary))
    else:
    existing_users_dict[get_user][2][p_product_name]=[buying_time,producnum] #把购买时间写入到文件为 {'用户': ['密码', 余额, {'购买的物品': ['购买时间',数量]}]}
    json.dump(existing_users_dict,open(storage_user_file,"w")) #把剩余的钱存入到文件
    print ("你购买了%s 个数为%s,余额为%s" % (p_product,producnum,salary))
    else:
    recharge = input("余额不足,是否充值 y or n ")
    if recharge == 'y' or 'yes':
    recharge_num = input("请输入充值数字 ")
    recharge_num = int(recharge_num)
    salary = salary+recharge_num #最新的余额为之前的余额加上充值的余额
    existing_users_dict[get_user][1] = salary #把最新的余额存入字典
    print("充值后的余额为%s" % salary)
    elif recharge == 'n':
    print ('余额不足')
    else:
    print ("输入有误,请重新输入")
    else:
    recharge = input("余额不足,是否充值 y or n ")
    if recharge == 'y':
    recharge_num = input("请输入充值数字 ")
    recharge_num = int(recharge_num)
    salary = salary+recharge_num #工资等于余额加上充值的钱
    existing_users_dict[get_user][1] = salary #改变字典里面的钱
    json.dump(existing_users_dict,open(storage_user_file,"w")) #把剩余的钱存入到文件
    print ("充值后的余额为%s" % salary)
    elif recharge == 'n':
    print("余额不足")
    else:
    print ("输入有误,请重新输入")
    elif produc =='q': #如果用户输入退出键
    print ("你购买的物品".center(40,'-'))
    for i in shop_car:
    produc_price = shop_car[i][0] #本次购物车里的商品价格
    produc_num = shop_car[i][1] #本次购物车里面的购物次数
    print("你本次购买的物品为:%s 价格为:%s 数量为%s " % (i,produc_price,produc_num))
    print("END".center(40,"-"))
    print("你剩余的工资为%s "% salary)
    exit_flag = False
    elif produc == 'c':
    buy_produc_num = len(existing_users_dict[get_user]) #查看是否第一次购物
    if buy_produc_num == 2:
    print("还没有购买商品,请继续购买")
    else:
    print ("你购买的物品".center(40,'*'))
    buy_produc = existing_users_dict[get_user][2] #用户购买的物品包括购买时间和数量
    for producname in buy_produc:
    buy_produc_name = producname #物品价格
    buy_produc_time = buy_produc[producname][0] #购买时间
    buy_producnum = buy_produc[producname][1] #购买数量
    print("你购买的物品为:%s 时间:%s 数量:%s " % (buy_produc_name,buy_produc_time,buy_producnum))
    print("END".center(40,"*"))
    print("你剩余的工资为%s "% salary)
    else:
    print("输入有误,请重新输入")
    else:
    if user_login_num>3:
    print ("You are locked")
    exit_flag = False
    else:
    user_login_num+=1
    print("请继续尝试")

    if __name__ == '__main__':
    login()

  • 相关阅读:
    创建live usb
    gnome2.x面板(panel)或应用程序菜单误删后恢复
    grub & grub2
    linux(CentOS6)下的wifi热点安装配置------hostapd-2.0
    linux(Ubuntu)下的wifi热点安装配置------hostapd-2.0
    BZOJ3884 上帝与集合的正确用法(欧拉函数)
    Luogu4897 【模板】最小割树
    Contest 6
    BZOJ3811 玛里苟斯(线性基+概率期望)
    Contest 5
  • 原文地址:https://www.cnblogs.com/bigjerry/p/5514088.html
Copyright © 2011-2022 走看看