Python学习日记(三)——Python基本数据类型(运算符、int、str、tuple、dict、range)
运算符
1、算数运算
2、比较运算
3、赋值运算
4、逻辑运算
5、成员运算
基本数据类型
1、数字
int(整型)
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
- #加法实际上是调用__add__,先了解
- n1 = 123
- n2 = 456
- print(n1 + n2)
- print(n1.__add__(n2))
- #ret——获取可表示的二进制最短位数
- n1 = 4 #0000 0100
- ret = n1.bit_length()
- print(ret)
2、布尔值
"hello world"
- 索引
- 切片
- #——索引——
- s = "alex"
- print(s[0])
- print(s[1])
- print(s[2])
- print(s[3])
- # print(s[4])
- # 超出范围会报错:IndexError: string index out of range
- #显示范围
- ret = len(s)
- print(ret)
- #——切片——
- s = "alex"
- # 0=< 0,1 < 2
- print(s[0:2])
- #——for循环——
- s = "alex"
- for item in s:
- print(item)
- 其它——移除空白,分割,长度
- a1 = "sullivan"
- #capitalize——首字母大写
- ret = a1.capitalize()
- print(ret)
- #输出结果:Sullivan
- a1 = "sullivan"
- #center(self, width, fillchar=None):
- #内容居中,width:总长度;fillchar:空白处填充内容,默认无
- ret = a1.center(20,'*')
- print(ret)
- #输出结果:******sullivan******
- a1 = "sullivan is sulli"
- #count——子序列的个数
- ret = a1.count("a")
- print(ret)
- #输出结果:1
- ret = a1.count("su")
- print(ret)
- #输出结果:2
- ret = a1.count("su",0,4)
- print(ret)
- #输出结果:1
- a1 = "sullivan"
- #endwith——是否已 xxx 结束
- #startwith——是否已 xxx 起始
- print(a1.endswith('n'))
- #输出结果:True
- print(a1.endswith('u'))
- #输出结果:False
- #获取字符串大于等于0,小于2的位置,
- print(a1.endswith('u',0,2))
- #输出结果:True
- #content——将Tab键转换为空格
- content = "hello\t999"
- print(content)
- print(content.expandtabs())
- print(content.expandtabs(20))
- #find——寻找子序列位置,如果没找到,返回 -1
- #rfind——从右向左找
- s = "sullivan is sulli"
- print(s.find("ll"))
- #format——字符串格式化,动态参数,将函数式编程时细说
- s = "hello {0},age {1}"
- print(s)
- #{0} 占位符
- new1 = s.format('sullivan',19)
- print(new1)
- #输出结果:hello sullivan,age 19
- #index——寻找子序列位置,如果没找到,报错
- #和find功能一样,且find不报错,忽略掉就行
- """
- 都不用传参数
- isalnum——判断是否是数字和字母
- isalpha——判断是否是字母
- isdigit——判断是否是数字
- isspace——判断是否全是空格
- istitle——判断是否是标题,首字母是否大写
- isupper——判断是否全是大写
- islower——判断是否全是小写
- title——变标题
- upper——变大写
- lower——变小写
- """
- a = "sullivan1"
- print(a.isalnum())
- print(a.isalpha())
- print(a.isdigit())
- print(a.isspace())
- print(a.istitle())
- print(a.isupper())
- print(a.islower())
- #join——连接
- #li = ["prime","sullivan"] #列表类型中括号
- li = ("prime","sullivan") #元组类型小括号
- print("".join(li))
- print("_".join(li))
- print("***".join(li))
- #ljust——内容左对齐,右侧填充
- #rjust——内容右对齐,左侧填充
- s = "Sullivan"
- set = s.ljust(20,'_')
- print(set)
- #输出结果:Sullivan____________
- set = s.rjust(20,'_')
- print(set)
- #输出结果:____________Sullivan
- #lstrip——去除左边的空格
- #rstrip——去除右边的空格
- #strip——去除左右两边的空格
- s = " sulli "
- news = s.lstrip()
- print(news)
- news = s.rstrip()
- print(news)
- news = s.strip()
- print(news)
- #partition——按指定字符分割为前,中,后三部
- #rpartition——从右向左找
- s = "i love you"
- ret = s.partition('love')
- print(ret)
- #输出结果:('i ', 'love', ' you') 元组类型
- #replace——替换
- s = "i love you"
- ret = s.replace("i","I")
- print(ret)
- #输出结果:I love you
- #split——按指定字符分割
- #rsplit——从右向左
- s = "sullisulli"
- ret = s.split("l")
- print(ret)
- #输出结果:['su', '', 'isu', '', 'i']
- ret = s.split("l",1)
- print(ret)
- #输出结果:['su', 'lisulli']
- ret = s.rsplit("l",1)
- print(ret)
- #输出结果:['sullisul', 'i']
- #swapcase——大写变小写,小写变大写
- s = "Sullivan"
- print(s.swapcase())
- #输出结果:sULLIVAN
4、列表
创建列表
- name_list = ['alex', 'seven', 'eric']
- 或
- name_list = list(['alex', 'seven', 'eric'])
基本操作
- 索引
- 切片
- 循环
- name_list = ["prime","cirila","sullivan"]
- #——索引——
- print(name_list[0])
- #输出结果:prime
- #——切片——
- print(name_list[0:2])
- #输出结果:['prime', 'cirila']
- print(name_list[2:len(name_list)])
- #输出结果:['sullivan']
- #——循环——
- for i in name_list:
- print(i)
- """
- 输出结果:
- prime
- cirila
- sullivan
- """
- 追加
- 删除
- 长度
- 包含
- name_list = ["prime","cirila","sullivan"]
- #append——向后追加
- name_list.append('seven')
- name_list.append('seven')
- name_list.append('seven')
- print(name_list)
- #count——元素出现的次数
- print(name_list.count('seven'))
- #extend——扩展,批量添加数据
- temp = [111,222,33,44]
- name_list.extend(temp)
- print(name_list)
- #index——获取指定元素的索引位置
- print(name_list.index('cirila'))
- #insert——向指定索引位置插入数据
- name_list.insert(1,'SB')
- print(name_list)
- #pop——在原列表中移除掉最后一个元素,并将移除的元素赋值给a1
- a1 = name_list.pop()
- print(name_list)
- print(a1)
- #remove——移除从左边数第一个元素
- name_list.remove('seven')
- print(name_list)
- #reverse——翻转
- name_list.reverse()
- print(name_list)
- #sort——排序
- # name_list.sort()
- # print(name_list)
- #因为数字和字符都存在所以出错,了解即可
- #del——删除指定索引位置
- print(name_list)
- del name_list[1]
- print(name_list)
- del name_list[2:3]
- print(name_list)
- 上面程序的输出结果
- ['prime', 'cirila', 'sullivan', 'seven', 'seven', 'seven']
- 3
- ['prime', 'cirila', 'sullivan', 'seven', 'seven', 'seven', 111, 222, 33, 44]
- 1
- ['prime', 'SB', 'cirila', 'sullivan', 'seven', 'seven', 'seven', 111, 222, 33, 44]
- ['prime', 'SB', 'cirila', 'sullivan', 'seven', 'seven', 'seven', 111, 222, 33]
- 44
- ['prime', 'SB', 'cirila', 'sullivan', 'seven', 'seven', 111, 222, 33]
- [33, 222, 111, 'seven', 'seven', 'sullivan', 'cirila', 'SB', 'prime']
- [33, 222, 111, 'seven', 'seven', 'sullivan', 'cirila', 'SB', 'prime']
- [33, 111, 'seven', 'seven', 'sullivan', 'cirila', 'SB', 'prime']
- [33, 111, 'seven', 'sullivan', 'cirila', 'SB', 'prime']
5、元组
创建元组
- ages = (11, 22, 33, 44, 55)
- 或
- ages = tuple((11, 22, 33, 44, 55))
特点
1、元组和列表几乎是一样的
2、列表是可以进行修改的,元组是不能修改的
- 索引
- 切片
- 循环
- 长度
- 包含
- name_tuple = ('prime','cirila')
- #——索引——
- print(name_tuple[0])
- #len,因为长度是2,但是字符的排序是从0开始的
- print(name_tuple[len(name_tuple)-1])
- #——切片——
- print(name_tuple[0:1])
- #——循环——
- for i in name_tuple:
- print(i)
- #count——计算元素出现的个数
- print(name_tuple.count('prime'))
- #index——获取指定元素的索引位置
- print(name_tuple.index('prime'))
- #删除
- #del name_tuple[0],不支持删除
- #TypeError: 'tuple' object doesn't support item deletion
- 上面程序的输出结果
prime- cirila
- ('prime',)
- prime
- cirila
- 1
- 0
6、字典(无序)
创建字典
- person = {"name": "mr.hou", 'age': 18}
- 或
- person = dict({"name": "mr.hou", 'age': 18})
常用操作:
- 索引
- 新增
- 删除
- 键、值、键值对
- 循环
- 长度
- user_info = {
- "name":"ciri",
- "age":16,
- "gender":'W'
- }
- #——索引——
- print(user_info['name'])
- #——切片——,不能用。因为切片是连续的,自己定义的key没有连续性
- #——循环——,默认输出所有的key
- for i in user_info:
- print(i)
- for i in user_info.keys():
- print(i)
- """
- 输出结果都是
- name
- age
- gender
- """
- #输出所有的值
- for i in user_info.values():
- print(i)
- """
- 输出结果
- ciri
- 16
- W
- """
- #输出所有的键值对
- for k,v in user_info.items():
- print(k,v)
- """
- 输出结果
- name ciri
- age 16
- gender W
- """
- #获取所有的键key,值value,键值对
- print (user_info.keys())
- print (user_info.values())
- print (user_info.items())
- """
- 输出结果
- dict_keys(['name', 'age', 'gender'])
- dict_values(['ciri', 16, 'W'])
- dict_items([('name', 'ciri'), ('age', 16), ('gender', 'W')])
- """
- #clear——清楚所有的内容
- user_info.clear()
- print(user_info)
- #get——根据key获取值,如果key不存在,可指定一个默认值,不指定会返回None
- val = user_info.get('age')
- print(val)
- val = user_info.get('age111')
- print(val)
- val = user_info.get('age111','123')
- print(val)
- """
- 输出结果
- 16
- None
- 123
- """
- #索引取值时key不存在,会报错;get则会返回none,所以推荐用get
- #has_key 检查字典中指定key是否存在,python3里没有了,但是可以用in代替
- ret = 'age' in user_info.keys()
- print(ret)
- #update——更新
- print(user_info)
- test = {
- "a1": 123,
- "a2": 456
- }
- user_info.update(test)
- print(user_info)
- """
- 输出结果
- {'name': 'ciri', 'age': 16, 'gender': 'W'}
- {'name': 'ciri', 'age': 16, 'gender': 'W', 'a1': 123, 'a2': 456}
- """
- #del——删除指定索引的键值对
- del test['a1']
- print(test)
- #pop——获取并在字典中移除,可以传参数,移除指定的值
- #popitem——不能传参数,从尾部移除
- set = user_info.popitem()
- print(set)
- print(user_info)
- set = user_info.pop('name')
- print(set)
- print(user_info)
- """
- 输出结果
- ('gender', 'W')
- {'name': 'ciri', 'age': 16}
- ciri
- {'age': 16}
- """
其它
1、for循环
- li = [11,22,33,44]
- for item in li:
- print item
2、enumrate
为可迭代对象添加序号
enumerrate在循环的时候会加上一列,相当于变成了键值对
- li = ["电脑","鼠标垫","U盘","游艇"]
- for key,item in enumerate(li,start=1):
- print(key,item)
- inp = input("请输入商品:")
- #字符串(str)转换成数字(int)
- inp_num = int(inp)
- print(li[inp_num-1])
3、range和xrange
指定范围生成指定的数字
python2.7
range在2.7里,创建指定范围里的所有数
xrang只在2.7里面有,不会一次性创建所有的数
python3
在python3中只有range,且效果等同于27里的xrange
- print range(1, 10)
- # 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
- print range(1, 10, 2)
- # 结果:[1, 3, 5, 7, 9]
- print range(30, 0, -2)
- # 结果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]
练习题
一、元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
- #写法一
- li = [11,22,33,44,55,66,77,88,99,90]
- l1 = []
- l2 = []
- for i in li:
- if i <= 66:
- l1.append(i)
- else:
- l2.append(i)
- temp = {"k1": l1,"k2": l2}
- print(temp)
- #写法二
- li = [11,22,33,44,55,66,77,88,99,90]
- dic = {
- "k1": [],
- "k2": [],
- }
- for i in li:
- if i <=66:
- dic['k1'].append(i)
- else:
- dic['k2'].append(i)
- print(dic)
二、查找
- li = ["alec", " aric", "Alex", "Tony", "rain"]
- tu = ("alec", " aric", "Alex", "Tony", "rain")
- dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"}
- for i in li:
- b = i.strip()
- b = b.title()
- if b.endswith("c") and b.startswith("A"):
- print(b)
- for i in tu:
- b = i.strip()
- b = b.title()
- if b.endswith("c") and b.startswith("A"):
- print(b)
- for i in dic.values():
- b = i.strip()
- b = b.title()
- if b.endswith("c") and b.startswith("A"):
- print(b)
三、输出商品列表,用户输入序号,显示用户选中的商品
- li = ["电脑","鼠标垫","U盘","游艇"]
- for i,j in enumerate(li,start=1):
- print(i,j)
- inp = input("请输入商品:")
- num = int(inp)
- len_li = len(li)
- if num > 0 and num <= len_li:
- print(li[num-1])
- else:
- print("商品不存在!")
四、购物车
功能要求:
- 要求用户输入总资产,例如:2000
- 显示商品列表,让用户根据序号选择商品,加入购物车
- 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
- 附加:可充值、某商品移除购物车
- goods = [
- {"name": "电脑", "price": 1999},
- {"name": "鼠标", "price": 10},
- {"name": "游艇", "price": 20},
- {"name": "美女", "price": 998},
- ]
- goods = [
- car_list = {} #{"商品名":{"价格" : 699,"个数" : 1}}
- i1 = input("请输入您的总资产:")
- asset_all = int(i1)
- goods = [
- {"name": "电脑", "price": 1999},
- {"name": "鼠标", "price": 10},
- {"name": "游艇", "price": 20},
- {"name": "美女", "price": 998},
- ]
- for i in goods:
- print(i["name"],i["price"])
- #输出商品列表
- #循环购物
- while True:
- i2 = input("请选择商品,按y退出")
- if i2 == "y":
- break
- for item in goods:
- if item["name"] == i2:
- name = item["name"]
- #判断购物车是否有此类商品
- if name in car_list.keys():
- car_list[name]["num"] = car_list[name]["num"] + 1
- else:
- car_list[name] = {"num":1,"single_price":item["price"]}
- print("购物车:",car_list)
- #结算
- all_price = 0
- for k,v in car_list.items():
- n = v["single_price"]
- m = v["num"]
- all_sum = m * n
- all_price = all_price + all_sum
- if all_price > asset_all:
- print("购买失败——穷逼")
- else:
- print("购买成功")
五、用户交互,显示省市县三级联动的选择
- dic = {
- "河北": {
- "石家庄": ["鹿泉", "藁城", "元氏"],
- "邯郸": ["永年", "涉县", "磁县"],
- },
- "河南": {
- "郑州": ["中原", "惠济", "金水"],
- "开封": ["龙庭", "金明", "顺河"],
- },
- "山西": {
- "太原": ["小店", "迎泽", "杏花岭"],
- "大同": ["南郊", "新荣", "阳高"],
- }
- }
- dic = {
- "河北": {
- "石家庄": ["鹿泉", "藁城", "元氏"],
- "邯郸": ["永年", "涉县", "磁县"],
- },
- "河南": {
- "郑州": ["中原", "惠济", "金水"],
- "开封": ["龙庭", "金明", "顺河"],
- },
- "山西": {
- "太原": ["小店", "迎泽", "杏花岭"],
- "大同": ["南郊", "新荣", "阳高"],
- }
- }
- #循环输出所有的省
- for x in dic:
- print(x)
- i1 = input("请输入省份:")
- #循环输出选择省的市
- a = dic[i1]
- for y in a:
- print(y)
- i2 = input("请输入市:")
- #循环输出选择市的区
- a = dic[i1][i2]
- for z in a:
- print(z)
- i3 = input("请输如区:")
- print("地址为:",i1,i2,i3)
Python学习日记(三)——Python基本数据类型(运算符、int、str、tuple、dict、range)的更多相关文章
- Python学习(三) —— 基本数据类型
基本数据类型 一.整数类型(int) 32位机器,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647 64位机器,整数的位数是64位,取值范围位 ...
- Python学习日记(三) 学习使用dict
数据按类型可划分为: 不可变数据类型(可哈希):元祖.string.int.bool 可变数据类型(不可哈希):dict.list 集合本身是可变数据类型,元素是不可变数据类型 字典中的key必须是不 ...
- Python学习日记(三十六) Mysql数据库篇 四
MySQL作业分析 五张表的增删改查: 完成所有表的关系创建 创建教师表(tid为这张表教师ID,tname为这张表教师的姓名) create table teacherTable( tid int ...
- Python学习日记(三十三) Mysql数据库篇 一
背景 Mysql是一个关系型数据库,由瑞典Mysql AB开发,目前属于Oracle旗下的产品.Mysql是目前最流行的关系型数据库管理系统之一,在WEB方面,Mysql是最好的RDBMS(Relat ...
- Python学习日记(三十八) Mysql数据库篇 六
Mysql视图 假设执行100条SQL语句时,里面都存在一条相同的语句,那我们可以把这条语句单独拿出来变成一个'临时表',也就是视图可以用来查询. 创建视图: CREATE VIEW passtvie ...
- Python学习日记(三十九) Mysql数据库篇 七
Mysql函数 高级函数 1.BIN(N) 返回N的二进制编码 ); 执行结果: 2.BINARY(str) 将字符串str转换为二进制字符串 select BINARY('ASCII'); 执行结果 ...
- Python学习日记(三十四) Mysql数据库篇 二
外键(Foreign Key) 如果今天有一张表上面有很多职务的信息 我们可以通过使用外键的方式去将两张表产生关联 这样的好处能够节省空间,比方说你今天的职务名称很长,在一张表中就要重复的去写这个职务 ...
- Python学习日记(三十七) Mysql数据库篇 五
pymsql的使用 初识pymysql模块 先在数据库中创建一个用户信息表,里面包含用户的ID.用户名.密码 create table userinfo( uid int not null auto_ ...
- Python学习日记(三十五) Mysql数据库篇 三
使用Navicate 创建一个连接去使用Mysql的数据库,连接名可以取任意字符但是要有意义 新增一个数据库 填写新数据库名,设置它的字符集和排序规则 新建一个表 增加表中的信息 点击保存再去输入表名 ...
- Python学习日记(三十二) hmac检验客户端的合法性和socketsever模块
Hmac模块 其实这个模块类似hashlib模块,它能将一些重要的信息通过算法加密成密文,让信息更具有安全性. 关于hmac加密算法的了解:它的全名是哈希运算消息认证码(Hash-based Mess ...
随机推荐
- centos安装mysql(for 小白)
安装前提: 安装号centos.SecureCRT 安装准备: centos自带数据库Mariadb,先将其移除 下载mysql: 镜像网址:http://mirrors.sohu.com/mysql ...
- vue 2.0+ 怎么写本地接口获取数据
在vue-cli脚手架项目中,找到build ---- webpack.dev.conf.js 文件,具体位置如下图: 找到文件后添加下面的内容,写在头部: //这是 webpack.dev.conf ...
- vue axios传参报错的解决方法
今天有人问同一套后台系统为什么jquery可以正常使用,axios却报错呢,下面总结如下: 总的来说是jquery和axios传参类型不同,那为什么jquery和axios请求时传参类型不同? 1)j ...
- linux添加地址映射
- Flutter——AspectRatio组件
AspectRatio 的作用是根据设置调整子元素 child 的宽高比. AspectRatio 首先会在布局限制条件允许的范围内尽可能的扩展,widget 的高度是由宽度和比率决定的,类似于 Bo ...
- (14)占位符%和format
# 在介绍占位符之前,这里先介绍下索引,索引可以方便的帮我们拿到容器内的数据 # 索引可以简单的理解为一个有序的标记,我们把容器里的元素每一个都编上一个编号 # 凡是有序的容器类型数据,都可以通过索引 ...
- MBG(Mybatis Generator)配置
配置需注意2点, 1.对于匹配所有表用%,多表配合使用_和%,这个和SQL Like查询模糊匹配方法一致 2.配置报错的话,提示如下:标黄的部分其实是正则表达式 The content of elem ...
- 2018web前端面试题总结
web面试题 css面试 一.css盒模型 css中的盒子模型包括IE盒子模型和标准的W3C盒子模型.border-sizing: border-box, inherit, content-box ...
- 「数据结构与算法(Python)」(一)
算法的提出 算法的概念 算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务.一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写 ...
- Java8-Optional-No.02
import java.util.Optional; import java.util.function.Supplier; public class Optional2 { static class ...