自学python之路(day4)
一 购物车小程序
goods=[{'name':'香蕉','price':},
{'name':'苹果','price':},
{'name':'菠萝','price':}]
shop_car={}
li=[]
for i in range(,len(goods)):
li.append(i)
money=input('请输入您的总金额:')
if money.isdigit():
while True:
if int(money) > :
for i,j in enumerate(goods):
print('水果序号:{},商品:{},价格:{}'.format(i,j['name'],j['price']))
flag = input("请输入需购买的水果序号:")
if flag.isdigit() and int(flag) in li:
num=input('请输入商品的数量:')
if num.isdigit() and int(num) > :
money=int(money) - goods[int(flag)]['price']*int(num)
if goods[int(flag)]['name'] in shop_car:
shop_car[goods[int(flag)]['name']]=shop_car[goods[int(flag)]['name']] + int(num)
else:
shop_car[goods[int(flag)]['name']]=int(num)
print('购物车中的商品有{},您的余额为{}'.format(shop_car,money))
else:
print('请输入规范的序列号!!!')
else:
print('账户余额不足!!!')
break
else:
print('输入纯数字!!!')
二 集合
集合是无序的、不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希的。
以下是集合最重要的两点:
去重,把一个列表变成集合,就自动去重了。
关系测试,测试两组数据之前的交集、差集、并集等关系。
1)集合的创建
set1 = {,,'abby'}
set2 = set({,,'abby'})
set3 = {,,}
print(set1)
print(set2)
print(set3)
执行结果:
{8, 'abby', 7}
{8, 'abby', 7}
{1, 2, 3}
2)增
set1={'abby','marry','barry','herry'}
#add
set1.add('kaikai')
print(set1)
#update 无序的
set2={'abby','marry','barry','herry'}
set2.update('abc')
print(set1)
执行结果:
{'barry', 'kaikai', 'abby', 'marry', 'herry'}
{'barry', 'b', 'abby', 'a', 'marry', 'c', 'herry'}
3)删
#pop 随机删除
set3={'abby','marry','barry','herry'}
print(set3.pop())
print(set3) #按元素删除
set4={'abby','marry','barry','herry'}
set4.remove('abby')
print(set4) #清空集合
set5={'abby','marry','barry','herry'}
set5.clear()
print(set5)
执行结果:
marry
{'barry', 'abby', 'herry'}
{'marry', 'barry', 'herry'}
set()
3)查
set={'abby','marry','barry','herry'}
for i in set:
print(i)
执行结果
marry
herry
abby
barry
4)其他操作
set1={1,2,3,7,8,9}
set2={4,5,6,7,8,9}
# 交集 (& 或者 intersection)
print(set1 & set2)
print(set1.intersection(set2))
# 并集 (| 或者 union)
print(set1 | set2)
print(set2.union(set1))
# 差集 (- 或者 difference)
print(set1 - set2)
print(set1.difference(set2))
#反交集 (^ 或者 symmetric_difference)
print(set1 ^ set2)
print(set1.symmetric_difference(set2))
执行结果:
{8, 9, 7}
{8, 9, 7}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3}
{1, 2, 3}
{1, 2, 3, 4, 5, 6}
{1, 2, 3, 4, 5, 6}
#子集与超集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6} #set1是set2的子集
print(set1 < set2)
print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 #set2是set1的超集
print(set2 > set1)
print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。 #frozenset不可变集合,让集合变成不可变类型。
s = frozenset('barry')
print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
执行结果:
True
True
True
True
frozenset({'a', 'b', 'y', 'r'}) <class 'frozenset'>
小练习题
#给列表l1去重
l1=[1,2,3,3,5,6,7]
l2=[]
print(set3)
for i in set(l1):
l2.append(i)
li=l2
print(li)
执行结果:
[1, 2, 3, 5, 6, 7]
自学python之路(day4)的更多相关文章
- Python之路,Day4 - Python基础4 (new版)
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- 自学Python之路
自学Python之路[第一回]:初识Python 1.1 自学Python1.1-简介 1.2 自学Python1.2-环境的搭建:Pycharm及python安装详细教程 1.3 ...
- 自学Python之路-Python核心编程
自学Python之路-Python核心编程 自学Python之路[第六回]:Python模块 6.1 自学Python6.1-模块简介 6.2 自学Python6.2-类.模块.包 ...
- 自学Python之路-Python基础+模块+面向对象+函数
自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python 1.1 自学Python1.1-简介 1.2 自学Python1.2-环境的 ...
- 自学Python之路-django
自学Python之路-django 自学Python之路[第一回]:1.11.2 1.3
- 自学Python之路-Python并发编程+数据库+前端
自学Python之路-Python并发编程+数据库+前端 自学Python之路[第一回]:1.11.2 1.3
- 自学Python之路-Python网络编程
自学Python之路-Python网络编程 自学Python之路[第一回]:1.11.2 1.3
- NO.3:自学python之路------集合、文件操作、函数
引言 本来计划每周完成一篇Python的自学博客,由于上一篇到这一篇遇到了过年.开学等杂事,导致托更到现在.现在又是一个新的学期,春天也越来越近了(冷到感冒).好了,闲话就说这么多.开始本周的自学Py ...
- NO.1:自学python之路------Hello world、判断、循环
引言 人工智能如今越来越贴近生活,在这里将记录我自学python与tensorflow的过程.编程使用IDE:visual studio 2017,python版本3.6.4,tensorflow版本 ...
随机推荐
- [原][译]我们为什么需要另一个c++测试框架?Catch||Why do we need yet another C++ test framework?
翻译问题来源:https://github.com/catchorg/Catch2/blob/master/docs/why-catch.md 其他辅助博文:从Google Test 转到 Catch ...
- vim 复制粘贴
首先进入块模式 Ctrl+ v 使用按键j/k/h/l进行选中多列 使用按键y进行复制 在insert模式下:使用按键p进行粘贴
- JSR107缓存规范
Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry. CachingProvider定义了创建. ...
- pgRouting新增扩展
环境依赖:postgresql cgal boost perl 环境变量: boost环境变量 CGAL环境变量 postgresql环境变量 1.新建C++ 空项目 2,添加common引用,更改配 ...
- nodejs常见问题
Js 基础问题 与前端 Js 不同, 后端是直面服务器的, 更加偏向内存方面. [Basic] 类型判断 [Basic] 作用域 [Basic] 引用传递 [Basic] 内存释放 ...
- 设置Oracle数据库开机自启动-亲试ok
1.oracle 用户下 修改$ORACLE_HOME/bin/dbstart [oracle@dev-oracle ~]$ vi /opt/oracle/app/oracle/product ...
- SQL server 数据库的版本为661,无法打开,此服务器只支持655版及更低版本。不支持降级路径
亲测有效. 解决方案:造成这个错误是因为把本地的SQL Server (MSSQLSERVER)服务给禁止了,而把 SQL Server (SQLEXPRESS)服务给启动了,因为这样子,本来应该在数 ...
- SQL Server 2005 企业版没有 Microsoft SQL Server Management
我从网上下载的:SQL Server 2005 集成sp2的 企业版安装后没发现 Management Studio管理工具,起初以为是自己安装时没装上,昨天试了全部安装后还是没找到,很是郁闷,在网上 ...
- JQ菜单滑块
网站导航滑块效果: 复制以下代码保存到html文件中即可查看效果... <html> <head> <title>JQ菜单滑块</title> < ...
- 意想不到的javascript
最近总遇到些叫人想不明白的javascript,先列出来玩玩: 1. var name=1; switch(name){ case 1:console.log(name); break; defaul ...