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 \n"% 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 \n"% 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()

时间: 2024-08-01 22:42:43

python 学习之数据类型的相关文章

小Y的Python学习日志--数据类型

#本文仅为个人学习过程的整理和记录,如有从他人博客.网站摘录的内容,本人会明确标明,如有涉及侵权,请联系本人,本人会在第一时间删除. 一下的资料整理来自(1)廖雪峰的Python教程 http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 (2)简明Python教程 http://woodpecker.org.cn/abyteofpython_cn/chinese/ 四.Python数据

python学习之数据类型

和其他高级编程语言一样,python也有它的各种数据类型,但相比其他语言来讲,python的数据类型相对好用,其中也包含有字符串.整形.浮点型等,但在介绍数据类型之前,也需要注意其变量的命名规则. 请务必牢记下述有关变量的规则: ? 变量名只能包含字母.数字和下划线.变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message. ? 变量名不能包含空格,但可使用下划线来分隔其中的单词.例如,变量名greeting_message可行,但

Python学习笔记——数据类型和变量

在Python中,能够直接处理的数据类型有: 整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等. 浮点数 浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的.浮

python学习day01 数据类型 if while

一.简介 python是由吉多·范罗苏姆创建的,开发效率高可移植可扩展可嵌入,缺点是运行速度慢.不能加密.不能多线程运行.目前python的主要方向是云计算.WEB开发.科学运算.人工智能.系统运维.金融.图形GUI,python是解释型语言通过Cpython解释器进行解释,转化成机器能识别的语言,python通常使用pycharm进行开发. 二.安装 在官网www.python.org下载python3.5以上安装包进行安装,注意path下打勾(配置环境变量),这样在控制台上输入python就

python学习之数据类型—元组tuple

元组:tuple 1.python四大不可变数据类型之一(int,str,tuple,bool) 2.以小括号包起来起来,如只有一个元素,需在尾部加一个逗号,因为不加的话,python可能认为其实一个变量或是做数学运算等 3.元组中的第一层数据不可变,如其第二层数据类型为可变数据类型(list,dict,set),其可变 4.元组可通过循环,切片等进行查询 5.元组是有序的 增: ??元组不可变,故无法增加元素 删: ?? 同上 改: ??同上 查: 索引和切片查询: tuple_staudy

Python学习2——数据类型

整型 num01 = 100 num01 = 100 #十进制 num02 = 0x6F #十六进制 num03 = 0o41 #八进制 print (num01) print (num02) print (num03) 打印出来的结果都是十进制整型:100,111,33. 常见的运算: import math print(abs(-100)) #绝对值 print(math.fabs(-100)) #绝对值 print(math.sqrt(100)) #平方根 print(math.pow(3

小猿圈python学习-基本数据类型

什么是数据类型? 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,"汉"是文字,否则它是分不清1和'汉'的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他.Python中常用的数据类型包括多种,今天我们暂只讲4种, 数字.字符串.布尔类型.列表. 数字int(整型) 在

Python学习 day7 数据类型整理

数据类型整理 - int -bit_length 使用方法 用一个int型例如int后的n n.bit_length() - to_bytes,将数字转换成字节类型: 6表示用多少个人字节表示,little/big,用于指定生成字节的顺序 result = val.to_bytes(6,'little') print(result) - from_bytes,将字节转换成数字 result = b'\x02\x00\x00\x00\x00\x00' data = int.from_bytes(r

小Y的Python学习日志--数据类型(if 循环)

#本文仅为个人学习过程的整理和记录,如有从他人博客.网站摘录的内容,本人会明确标明,如有涉及侵权,请联系本人,本人会在第一时间删除.  以下的资料整理来自(1)廖雪峰的Python教程 http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 (2)简明Python教程 http://woodpecker.org.cn/abyteofpython_cn/chinese/ 1. 流程控制 (