Python运维开发基础06-语法基础【转】
上节作业回顾 (讲解+温习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-语法基础 - 陈思齐 - 博客园 https://www.cnblogs.com/chensiqiqi/p/9163053.html
Python运维开发基础06-语法基础【转】的更多相关文章
- Python运维开发基础04-语法基础【转】
上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...
- Python运维开发基础03-语法基础 【转】
上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...
- Python运维开发基础01-语法基础【转】
开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...
- Python运维开发基础01-语法基础
标签(空格分隔): Mr.chen之Python3.0执教笔记(QQ:215379068) --仅供北大青鸟内部学习交流使用 开发不是看出来的,开发一定是练出来的: 想学好开发,没有捷径可走,只有不断 ...
- Python运维开发基础10-函数基础【转】
一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...
- Python运维开发基础09-函数基础【转】
上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能 import ...
- Python运维开发基础08-文件基础【转】
一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...
- Python运维开发基础07-文件基础【转】
一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...
- Python运维开发基础05-语法基础【转】
上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Mr.chen import os,time Tag = ...
随机推荐
- 收获,不止_Oracle读书笔记
PMON:含义为Processes Monitor,是进程监视器,如果你在执行某些更新语句,未提交时进程崩溃了,这时PMON会自动回滚该操作,,无需你人工去执行ROLLBACK命令.除此之外还可以干预 ...
- Java_异常处理误区
转自:https://www.ibm.com/developerworks/cn/java/j-lo-exception-misdirection/index.html 本文着重介绍了 Java 异常 ...
- CentOS 网络设置
CentOS 网络设置有两种方式配置网络可以连接外网: 自动分配与手动设置Ip 一,自动分配ip: 新装的centos6.0,用ifconfig只显示ifcfg-lo的信息,可以用ifup eth0的 ...
- C++回顾day02---<拷贝构造函数:重点>
一:补充---无参构造函数(默认无参构造函数)在实例化对象时注意点 (一)若没有写构造函数,则类会含有一个默认无参构造函数 (二)若自定义一个构造函数,则类不会提供默认构造函数 class A { p ...
- python第四次周末大作业
''' 选课系统开发 系统登录需要有两类用户:学生.管理员,针对不用用户提供不同功能: 学生用户 :对于学生用户来说,登陆之后有三个功能 1.查看所有课程 2.选择课程 3.查看所选课程 4.删除已选 ...
- Docker 从入门到放弃(三)镜像使用
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载. 下面我们来学习: 1.管理和使用本地 Docker ...
- windows 使用 php 的exif 问题 Call to undefined function exif_imagetype()
保证 extension=php_mbstring.dll 在 extension=php_exif.dll 之前
- 微信小程序ext_json示例
{ "template_id": 0, "ext_json": "{\"extEnable\": true, \"ext ...
- Webpack2学习记录-1
1.安装前准备 安装 webpack 之前,需要安装 node,这时最新的是 6,npm 是 4.如果有老的 node 项目在跑建议安装下 nvm. 2.建议安装在局部,即在项目下的 node_mod ...
- [译]ES6特性
原文 作用域 使用let/const替代var. var有什么错? var说明的变量会产生作用于提升的概念. ES5: var x = 'outer'; function test(inner) { ...