上节作业回顾 (讲解+温习120分钟)

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# author:Mr.chen
# 添加商家入口和用户入口并实现物品分类功能的“购物车程序” import os,time goods_dict = {
"家用电器":{
"冰箱":1200,
"空调":2500,
"电视":4000,
"洗衣机":2000,
"加湿器":500,
"净化器":3000
},
"食品":{
"草莓":200,
"香蕉":100,
"梨":300,
"橙子":400,
"火龙果":600,
"大龙虾":1200
},
"母婴":{
"奶粉":500,
"纸尿裤":200,
"儿童床":4000,
"儿童水壶":1000,
"营养辅食":2500,
"婴儿带":1500,
"安全坐骑":8000
},
"电脑配件":{
"显示器":1500,
"CPU":2500,
"内存":3000,
"硬盘":2000,
"主板":1000,
"显卡":5500,
"光驱":800
},
"家具":{
"柜子":2000,
"桌子":1000,
"床":3000,
"沙发":5000,
"灯台":500,
"椅子":800
}
} Tag = True #控制程序退出
Tag_values = True #控制商品价格修改分支功能的关闭
Tag_add = True #控制商品新增分支功能的关闭
buy_List = {} #购物车字典 while Tag :
#第一级入口选择菜单
os.system("clear")
print ("《用户入口选择》".center(50,'-'))
print ("\n")
print ("1,用户入口".center(50))
print ("2,商家入口".center(50))
print ("3,程序退出".center(50))
print ("\n") choice = input ("请选择:")
if choice == "1" :
while Tag :
#第二级用户购买功能选择菜单
os.system("clear")
print ("《用户购买菜单》".center(50,'-'))
print ("\n")
print ("1,商品购买".center(50))
print ("2,购物车".center(50))
print ("3,结帐退出".center(50))
print ("\n")
choice = input ("请选择(输入b返回上级菜单):")
if choice == "b" or choice == "B" :
break
elif choice == "1" :
pass #仿照商家入口写法,同学们帮我完成这三个功能
elif choice == "2" :
pass #仿照商家入口写法,同学们帮我完成这三个功能
elif choice == "3" :
pass #仿照商家入口写法,同学们帮我完成这三个功能
else :
print ("你的输入有误!")
time.sleep(1.5)
elif choice == "2" :
while Tag :
#第二级商家管理功能选择菜单
Tag_values = True
Tag_add = True
os.system("clear")
print ("《商家管理功能清单》".center(50,"-"))
print ("\n")
print ("1,修改现有商品价格".center(50))
print ("2,新增商品".center(50))
print ("\n")
choice = input ("请选择(输入b返回上级菜单):")
if choice == "b" or choice == "B" :
break
elif choice == "1" :
while Tag_values :
#第三级价格修改商品类别选择菜单
os.system("clear")
print ("《商品类别选择清单》".center(50,"-"))
print ("\n")
for type in goods_dict :
print (type.center(50))
print ("\n")
type_input = input ("请输入你想修改的商品的类别(输入b返回上级菜单):")
if type_input == "b" or type_input == "B" :
break
elif type_input in goods_dict :
while Tag_values :
#第四级价格修改商品选择清单
os.system("clear")
print ("《{}类别商品清单》".format(type_input).center(50,"-"))
print ("\n")
for item in goods_dict[type_input] :
print (item.center(50))
print ("\n")
item_input = input ("请输入你想修改价格的商品名称(输入b返回上级菜单):")
if item_input == "b" or item_input == "B" :
break
elif item_input in goods_dict[type_input] :
while Tag_values :
print ("此商品的价格为:{}元".format(goods_dict[type_input][item_input]))
value_input = input ("请输入要修改的价格(输入b返回上级菜单):")
if value_input == "b" or value_input == "B" :
break
elif value_input.isdigit() :
goods_dict[type_input][item_input] = int(value_input)
print ("{}商品的价格修改成功!".format(item_input))
Tag_values = False
time.sleep(2) else :
print ("您的输入有误!") else :
print ("你的输入有误!")
time.sleep(1.5)
else :
print ("你的输入有误!")
time.sleep(1.5)
elif choice == "2" :
while Tag_add :
#第三级商品新增种类输入功能菜单
os.system("clear")
print ("\n")
print ("\n")
print ("\n")
type_input = input ("请输入你想新增的商品类别:(输入b返回上级菜单)")
if type_input == "b" or type_input == "B" :
break
elif type_input in goods_dict :
while Tag_add :
#第四级商品新增名称输入功能菜单
print ("\n")
print ("\n")
print ("\n")
item_input = input ("请输入你想新增的商品名称(输入b返回上级菜单):")
if item_input == "b" or item_input == "B" :
break
elif item_input not in goods_dict[type_input] :
while Tag_add :
#第五级商品新增价格输入功能菜单
values_input = input ("请输入新增商品的价格:")
if values_input.isdigit() :
goods_dict[type_input][item_input] = int(values_input)
print ("种类:{}-名称:{}-价格:{}的商品录入成功!".format(type_input,item_input,values_input))
Tag_add = False
time.sleep(1.5)
else :
print ("请输入数字价格!")
else :
print ("系统里已经存在此商品,或者您的输入有误!")
time.sleep(1.5)
else :
print ("没有这个商品类别,请重新输入!")
time.sleep(1.5)
else :
print ("输入有误!")
time.sleep(1.5)
elif choice == "3" :
Tag = False
else :
print ("你的输入有误!")
time.sleep(1.5)
else :
print ("程序终止运行!")

一,集合的使用

集合是一个无序的,不重复的数据组合,它的主要作用如下:

  • 去重复,把一个列表变成集合,就自动去重复了
  • 关系测试,测试两组数据之前的交集,差集,并集等关系

1.1 集合的创建

#代码演示:

>>> s = {1,3,5,7}
>>> type (s)
<class 'set'>
>>> t = {"a","b","c"}
>>> type (t)
<class 'set'>

1.2 集合的去重复特性

#代码演示:

>>> a = [1,3,5,7,9,3,5,7,4,2]
>>> a = set (a) #将列表转换成集合
>>> a
{1, 2, 3, 4, 5, 7, 9} #元素去掉了重复
>>> a = list(a) #将集合转换回列表
>>> a
[1, 2, 3, 4, 5, 7, 9] #列表中重复元素消失了

1.3 集合的并集(|)

#代码演示:

>>> a = {1,3,5,7,9}
>>> b = {1,3,4,6,8}
>>> a | b
{1, 3, 4, 5, 6, 7, 8, 9} #两个集合的元素合并

1.4 集合的交集(&)

#代码演示:

>>> a = {1,3,5,7,9}
>>> b = {1,3,4,6,8}
>>> a & b #两个集合共有的元素
{1, 3}

1.5 集合的差集(-)

#代码演示:

>>> a = {1,3,5,7,9}
>>> b = {1,3,4,6,8}
>>> a - b #集合a独有的元素
{9, 5, 7}

1.6 集合的对称差集(^)

#代码演示:

>>> a = {1,3,5,7,9}
>>> b = {1,3,4,6,8}
>>> a ^ b #去掉两个集合共有的元素,合并各自独有元素
{4, 5, 6, 7, 8, 9}

1.7 集合的元素添加(add,update)

#代码演示:

>>> a = {1,3,5,7,9}
>>> a.add("abc") #添加单个元素
>>> a
{1, 3, 5, 7, 9, 'abc'}
>>> a.add("Tom")
>>> a
{1, 3, 5, 7, 9, 'Tom', 'abc'}
>>> a.update("a","b","c") #添加多个元素
>>> a
{1, 3, 'c', 5, 7, 9, 'b', 'a', 'Tom', 'abc'}

1.8 集合的元素删除(remove,del)

#代码演示:

>>> a
{1, 'c', 5, 7, 9, 'b', 'a', 'Tom', 'abc'}
>>> a.remove(1) #集合元素的查找删除
>>> a
{'c', 5, 7, 9, 'b', 'a', 'Tom', 'abc'}
>>> del a #删除整个集合
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

1.9 判断元素是否在集合中(in)

#代码演示:

>>> a = {1,3,5,7,9}
>>> 1 in a
True
>>> 2 in a
False

1.10 集合元素的个数(len)

#代码演示:

>>> a = {1,3,5,7,9}
>>> len(a)
5

二,数据运算

2.1 算数运算

运算符 描述 实例
+ 加-两个对象相加 a+b输出结果30
- 减-得到负数或一个数减去另一个数 a-b输出结果-10
* 乘-两个数相乘或是返回一个被重复若干次的字符串 a*b
/ 除-x除以y b/a输出结果2
% 取模-返回除法的余数 b%a输出结果0
** 幂-返回x的y次幂 a**b为10的20次方,输出结果1000000000
// 取整除-返回商的整数部分 9//2输出结果4,9.0//2.0输出结果4.0
#代码演示:

>>> a = 5
>>> b = 3
>>> a + b
8
>>> a - b
2
>>> a * b
15
>>> a / b
1.6666666666666667
>>> a % b
2
>>> a ** b
125
>>> a // b
1

2.2 比较运算

运算符 描述 实例
== 等于-比较对象是否相等 (a==b)返回False
!= 不等于-比较两个对象是否不想等 (a!=b)返回true
<> 不等于-比较两个对象是否不相等 (a<>b)返回True。这个运算符类似!=。
> 大于-返回x是否大于y (a>b)返回False
< 小于-返回x是否小于y (a< b)返回True
>= 大于等于-返回x是否大于等于y (a>=b)返回False
<= 小于等于-返回x是否小于等于y (a<=b)返回True
#代码演示:

>>> 3 == 3
True
>>> 3 == 5
False
>>> "abc" == "abc"
True
>>> "abc" == "abcd"
False
>>> 3 > 5
False
>>> 3 < 5
True
>>> 3 >= 5
False
>>> 3 <= 5
True

2.3 赋值运算

运算符 描述 实例
= 简单的赋值运算符 c=a+b将a+b的运算结果赋值为0
+= 加法赋值运算符 c+=a等效于c=c+a
-= 减法赋值运算符 c-=a等效于c=c-a
*= 乘法赋值运算符 c*=a等效于c=c*a
/= 除法赋值运算符 c/=a等效于c=c/a
%= 取模赋值运算符 c%=a等效于c=c%a
**= 幂赋值运算符 c**=a等效于c=c**a
//= 取整除赋值运算符 c//=a等效于c=c//a
#代码演示:

>>> a = 5
>>> b = 4
>>> a += b #a = a + b
>>> a
9
>>> a -= b #a = a - b
>>> a
5
>>> a *= b #a = a * b
>>> a
20
>>> a /= b #a = a / b
>>> a
5.0
>>> a %= b #a = a % b
>>> a
1.0
>>> a = 2
>>> a **= b #a = a ** b
>>> a
16
>>> a //= b #a = a // b
>>> a
4

2.4 逻辑运算

运算符 描述 实例
and 布尔"与"-如果x为False,x and y返回False,否则它返回y的计算值 (a and b)返回True
or 布尔"或"-如果x是True,它返回True,否则它返回y的计算值 (a or b)返回True
not 布尔"非"-如果x为True,返回False,如果x为False,它返回True not(a and b)返回false
#代码演示:

if username == "yunjisuan" and userpassword == "666666" :
print ("登陆成功!") #两个全都要为真,才为真,并且的意思 if username == "yunjisuan" or username == "benet" :
pirnt ("用户名输入正确!") #只要有一个为真就为真,或者的意思

2.5 成员运算

运算符 描述 实例
in 如果在指定的序列中找到值返回True,否则返回False x在y的序列中,如果x在y序列中返回True
not in 如果在指定的序列中没有找到值返回True,否则返回False。 x不在y序列中,如果x不在y序列中返回True
#代码演示:

>>> "a" in "abcd"   #字符串
True
>>> "e" in "abcd"
False
>>> "a" in ["a","b","c"] #列表
True
>>> "e" in ["a","b","c"]
False
>>> "a" in {"a","b","c"} #集合
True
>>> "e" in {"a","b","c"}
False
>>> "a" in {"a":1,"b":3,"c":5} #字典
True
>>> 3 in {"a":1,"b":3,"c":5}
False
>>> 5 in ("a","b",5) #元组
True
>>> 2 in ("a","b",5)
False

2.6 身份运算

运算符 描述 实例
is is是判断两个标识符是不是引用自一个对象 x is y,如果id(x)等于id(y),is返回结果1
is not is not是判断两个标识符是不是引用自不同对象 x is not y,如果id(x)不等于id(y)。is not返回结果1

面向对象才会用,这里不介绍

2.7 位运算

运算符 描述 实例
& 按位与运算符 (a&b)输出结果12,二进制解释:0000 1100
| 按位或运算符 (a|b)输出结果61,二进制解释:0011 1101
^ 按位异或运算符 (a^b)输出结果49,二进制解释:0011 0001
~ 按位取反运算符 (~a)输出结果-61,二进制解释:1100 0011,在一个有符号二进制数的补码形式
<< 左移动运算符 a<< 2输出结果240,二进制解释:1111 0000
>> 右移动运算符 a>>2输出结果15,二进制解释:0000 1111

运算演示:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:Mr.chen a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0 c = a & b # 12 = 0000 1100
print (c) c = a | b # 61 = 0011 1101
print (c) c = a ^ b # 49 = 0011 0001 相同为0,不同为1
print (c) c = ~a # -61 = 1100 0011 #运维班不讲
print (c) c = a << 2 # 240 = 1111 0000 #运维班不讲
print (c) c = a >> 2 # 15 = 0000 1111 #运维班不讲
print (c)

三,Linux中的惊喜

请同学们在文件中运行以下代码,惊喜就会到来

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# author:Mr.chen
# 惊喜 for color in range(30,37) :
for i in [0,1,4,5,0] :
print ("\033[{}m 恭喜你,中奖了 !\033[{}m".format(color,i).center(70,"*"))

请同学们根据惊喜的结果和代码含义,自己反推这是为什么?

四,结语与阶段性作业

Python语法基础部分到此节就全部学习完了。和基础语法相关的所有常用用法和技巧,基本也就这么多了。在语法基础篇中,我着重训练同学的是作为开发应该具备的一种逻辑思路。有了思路,我们就需要将思路存储在硬盘上,而不再是内存里。因此接下来,我们要学习的就是文件基础篇

阶段性检测作业:

完成时间:间隔一次课

  • 根据上节回顾里的代码样例,完成用户入口的功能仿写
  • 无法完成的同学,Python语法基础阶段的学习不合格

Python运维开发基础06-语法基础的更多相关文章

  1. Python运维开发基础06-语法基础【转】

    上节作业回顾 (讲解+温习120分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 添加商家入口和用户入口并实现物 ...

  2. Python运维开发基础04-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...

  3. Python运维开发基础03-语法基础 【转】

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...

  4. Python运维开发基础01-语法基础【转】

    开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...

  5. Python运维开发基础01-语法基础

    标签(空格分隔): Mr.chen之Python3.0执教笔记(QQ:215379068) --仅供北大青鸟内部学习交流使用 开发不是看出来的,开发一定是练出来的: 想学好开发,没有捷径可走,只有不断 ...

  6. Python运维开发基础10-函数基础【转】

    一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...

  7. Python运维开发基础09-函数基础【转】

    上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能 import ...

  8. Python运维开发基础08-文件基础【转】

    一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...

  9. Python运维开发基础07-文件基础【转】

    一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...

  10. Python运维开发基础05-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Mr.chen import os,time Tag = ...

随机推荐

  1. 利用javascript:void(0)制作假的提交按钮替代button

    在写html页面,我们很自然的在表单提交的地方采用button来作为提交按钮,但是,用<button type=”button”>按钮</button>作为提交代码会有个问题, ...

  2. 20181009-5 选题 Scrum立会报告+燃尽图 04

    Scrum立会报告+燃尽图(04)选题 此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2194] 一.小组介绍 组长:刘 ...

  3. node 使用范围 和 node的优势 (为什么 创业公司 选择的不是 java php ruby 等)

    链接 一些国外大公司 范围: 第一: 希望合并后台多个接口 成为一个接口,  或者频繁改动接口 相关, 比如数据 和数据格式之类,  后台难以配合, 这里可以使用node作为后台的应用层调用其他接口 ...

  4. Android 平台代号、版本、API 级别和 NDK 版本

    代号.标记和细分版本号 简要来说,Android 的开发是围绕着版本系列进行的,这些版本使用美味的点心名字(按字母顺序)作为代号. 平台代号.版本.API 级别和 NDK 版本 为方便起见,代号与以下 ...

  5. nginx 配置 getsimplecms 配置文件

    getsimplecms的安装需要两个php类库,一个是dom操作,一个是gd library. 所以先安装这两个类库,重启php解释器. yum install php-xml; yum insta ...

  6. Winform开发之DataGridView的增删改

    DataGridView是一个非常强大的控件,用法很多.这里介绍一个简单的增删改例子. 贴效果图 右侧输入学生信息点击新增,将数据增加到数据库,并且加载到datagridview中,点击选择某条数据修 ...

  7. centOS上安装MySQL5.7

    在centos上安装mysql,前提得有sudo的权限.没有的话先去跟管理员申请一个. STEP 1 - 安装MySQL 首先打开浏览器访问下 https://dev.mysql.com/downlo ...

  8. 【maven】mvn 命令

    ===========maven参数打包================== 在使用mvn package进行编译.打包时,Maven会执行src/test/java中的JUnit测试用例,有时为了跳 ...

  9. swagger api 转graphql npm 包试用

    graphql 比较方便的进行api 的查询,操作,swagger 是一个方便的open api 描述标准,当前我们有比较多的 restapi 但是转换为graphql 是有成本的,还好swagger ...

  10. xshell 用密钥登录服务器

    来源:http://coolnull.com/3510.html 说明:ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式 ...