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

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:Mr.chen import os,time Tag = True
menu = {
"北京":{
"海淀区":[
"海淀东",
"海淀西",
"海淀南",
"海淀北"
],
"西城区":[
"西城东",
"西城西",
"西城南",
"西城北"
],
"崇文区":[
"崇文东",
"崇文西",
"崇文南",
"崇文北"
],
"宣武区":[
"宣武东",
"宣武西",
"宣武南",
"宣武北"
]
},
"上海":{
"黄浦区":[
"黄浦东",
"黄浦西",
"黄浦南",
"黄浦北"
],
"徐汇区":[
"徐汇东",
"徐汇西",
"徐汇南",
"徐汇北"
],
"长宁区":[
"长宁东",
"长宁西",
"长宁南",
"长宁北"
],
"静安区":[
"静安东",
"静安西",
"静安南",
"静安北"
]
},
"深圳":{
"罗湖区":[
"罗湖东",
"罗湖西",
"罗湖南",
"罗湖北"
],
"福田区":[
"福田东",
"福田西",
"福田南",
"福田北"
],
"南山区":[
"南山东",
"南山西",
"南山南",
"南山北"
],
"宝安区":[
"宝安东",
"宝安西",
"宝安南",
"宝安北"
]
}
} while Tag :
os.system("clear")
print ("《一级菜单:旅游目的地选择》")
for i in menu :
print (i)
decide_one = input("请输入你想去的地方(输入q退出程序/无上级菜单):")
if decide_one == "q" or decide_one == "Q" :
Tag = False
elif decide_one not in menu :
print ("您的输入有误!")
time.sleep(1.4)
continue
while Tag :
os.system("clear")
print ("《二级菜单:旅游目的地选择》")
for i in menu[decide_one] :
print (i)
decide_two = input("请输入你想去的地方(输入q退出程序/输入b返回上级菜单):")
if decide_two == "b" or decide_two == "B" :
break
elif decide_two == "q" or decide_two == "Q" :
Tag = False
elif decide_two not in menu[decide_one] :
print ("您的输入有误!")
time.sleep(1.5)
continue
while Tag :
os.system("clear")
print ("《三级菜单:旅游目的地选择》")
for i in menu[decide_one][decide_two] :
print (i)
decide_three = input ("请输入你想去的地方(输入q退出程序/输入b返回上级菜单):")
if decide_three == "b" or decide_three == "B" :
break
elif decide_three == "q" or decide_three == "Q" :
Tag = False
elif decide_three not in menu[decide_one][decide_two] :
print ("您的输入有误!")
time.sleep(1.5)
continue
else :
print ("目的地已经到达!")
Tag = False
else :
print ("程序终止...")

一,字符串常用操作

1.1 字符串首字母大写(capitalize)

#代码演示:

>>> name = "yunsjisuan"
>>> name.capitalize()
'Yunsjisuan'

1.2 统计字符串某字母的含有个数(count)

#代码演示:

>>> name = "yunjisuan"
>>> name.count("n")
2
>>> name.count("y")
1

1.3 让字符串在输出时居中显示(center)

#代码演示:

>>> name = "yunjisuan"
>>> name.count("n")
2
>>> name.count("y")
1
>>> name.center(50,"-")
'--------------------yunjisuan---------------------'
>>> name.center(70,"-")
'------------------------------yunjisuan-------------------------------'
>>> name.center(100,"-")
'---------------------------------------------yunjisuan----------------------------------------------'
>>> name.center(100)
' yunjisuan '

特别说明:

name.center(50):一共打印50个字符,不够的用空来代表,把name放在中间

name.center(50,"-"):一共打印50个字符,不够的话用“-”补上,把name放在中间

1.4 将字符串转换成二进制(encode)

#代码演示:

>>> name = "yunjisuan"
>>> name.encode()
b'yunjisuan'
>>> name = "你好吗"
>>> name.encode()
b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x90\x97'

1.5 判断字符串以什么结尾(endswith)

#代码演示:

>>> name = "yunjisuan"
>>> name.endswith("an")
True
>>> name.endswith("j")
False

1.6 查找字符串某字符的下标位置(find,rfind)

#代码演示:

>>> name = "yunjisuan"
>>> name.find("y")
0
>>> name.find("j")
3
>>> name.find("s")
5
>>> name.find("n") #有多个字符,只返回第一个的位置
2
>>> name[0] #利用字符串下标的方式输出字符串的字符
'y'
>>> name[3]
'j'
>>> name[5]
's'
>>> name[2]
'n'

特别提示:

字符串也是可以切片的,一旦获取了我们需要的下标我们可以这样。

#代码演示:

>>> name = "I am student , I like study !"
>>> name.find("student")
5
>>> name[5:12]
'student'

特别提示:

我们还可以从右边开始找字符的下标(rfind)

>>> "yunjisuan benet".rfind("n")
12
>>> "yunjisuan benet"[12]
'n'

1.7 字符串格式化(format)

#代码演示:

>>> "{}真是一个好课程!".format("云计算")
'云计算真是一个好课程!'

1.8 判断字符串是否由字母或数字组成(isalnum)

#代码演示:

>>> "abc1123".isalnum()
True
>>> "abctyu".isalnum()
True
>>> "124223".isalnum()
True
>>> "124223-".isalnum()
False
>>> "124223#".isalnum()
False

1.9 判断字符串是否由纯英文字符组成(isalpha)

#代码演示:

>>> "abcd333".isalpha()
False
>>> "abcd".isalpha()
True
>>> "123".isalpha()
False
>>> "123$".isalpha()
False
>>> "abc$".isalpha()
False

1.10 判断字符串是否由纯数字组成(isdigit)

#代码演示:

>>> "avc".isdigit()
False
>>> "avc1212".isdigit()
False
>>> "1212".isdigit()
True
>>> "1212+".isdigit()
False
>>> "-1212".isdigit()
False

1.11 判断一个字符串是否是合法的变量名(isidentifier)

#代码演示:

>>> "123".isidentifier()
False
>>> "aa".isidentifier()
True
>>> "aa11".isidentifier()
True
>>> "1aa11".isidentifier()
False
>>> "_aa11".isidentifier()
True
>>> "+aa11".isidentifier()
False
>>> "和+aa11".isidentifier()
False

特别提示:

变量名只能由大小写字母或下划线开头

除了开头部分外,可以是大小写字母数字或者下划线随意组合

1.12 判断字符串里的字母是否全是小写(islower)

#代码演示:

>>> "adsad".islower()
True
>>> "adsad1".islower()
True
>>> "adsad12".islower()
True
>>> "Tdsad12".islower()
False
>>> "TdsAd12".islower()
False

1.13 判断字符串是否由空格组成(isspace)

#代码演示:

>>> " ".isspace()
True
>>> " 1".isspace()
False
>>> " a".isspace()
False
>>> "+ ".isspace()
False

1.14 判断字符串里的字母是否全是大写(upper)

#代码演示:

>>> "aBC".isupper()
False
>>> "ABC".isupper()
True
>>> "ABC1231".isupper()
True
>>> "ABC1231$%^".isupper()

1.15 将左边字符串的内容插入到右边字符串的每个字符之间或者列表的每个元素之间(join)

#代码演示:

>>> " ".join(["1","2","3","4"])
'1 2 3 4'
>>> "+".join(["1","2","3","4"])
'1+2+3+4'
>>> "+".join("1234")
'1+2+3+4'
>>> "+".join("abc")
'a+b+c'
>>> "+-".join("abc")
'a+-b+-c'

1.16 让字符串在输出时靠左显示(ljust)

#代码演示:

>>> "yunjisuan".ljust(50,"-")
'yunjisuan-----------------------------------------'

特别提示:

输出50个字符,字符串靠左显示,如果不够用“-”补齐

1.17 让字符串输出时靠右显示(rjust)

#代码演示:

>>> "yunjisuan".rjust(50,"-")
'-----------------------------------------yunjisuan'

特别提示:

输出50个字符,字符串靠右显示,如果不够用“-”补齐

1.18 让字符串里的字母全都变成小写(lower)

#代码演示:

>>> "ABCD".lower()
'abcd'
>>> "ABCD11".lower()
'abcd11'
>>> "ABCD11+_+".lower()
'abcd11+_+'

1.19 让字符串里的字母全都变成大写(upper)

#代码演示:

>>> "abcd".upper()
'ABCD'
>>> "abcd123".upper()
'ABCD123'
>>> "abcd123*&^".upper()
'ABCD123*&^'

1.20 去掉字符串中的空格和回车符(strip,lstrip,rstrip)

#代码演示:

>>> "  abcd  ".strip()  #去掉字符串两头的空格和回车符
'abcd'
>>> " \nabcd\n ".strip()
'abcd'
>>> " \nabcd\n ".lstrip() #去掉字符串左边的空格和回车符
'abcd\n '
>>> " \nabcd\n ".rstrip() #去掉字符串右边的空格和回车符
' \nabcd'

1.21 替换字符串里的字符(replace)

#代码演示:

>>> "yunjisuan benet".replace("n","M",1)
'yuMjisuan benet'
>>> "yunjisuan benet".replace("n","M",2)
'yuMjisuaM benet'
>>> "yunjisuan benet".replace("n","M",3)
'yuMjisuaM beMet'

特别提示:

.replace("要替换的旧字符","替换成的新字符","替换次数")

1.22 字符串的分割成列表(split)

#代码演示:

>>> "yunjisuan benet".split()
['yunjisuan', 'benet']
>>> "yunjisuan benet".split("n")
['yu', 'jisua', ' be', 'et']

特别提示:

.split()默认按照空格分隔字符串成为列表格式

.split("n")指定按照字母“n”进行分割字符串成为列表格式

1.23 将字符串里的大写字母变小写,小写字母变大写(swapcase)

#代码演示:

>>> "sdfsMMVsdf12231**&^&^%".swapcase()
'SDFSmmvSDF12231**&^&^%'

1.24 将字符串里每个单词的首字母大写(title)

#代码演示

>>> "yunjisuan is am lesson".title()
'Yunjisuan Is Am Lesson'

二,逻辑引导与作业

逻辑引导:

  • 在本节我们学习了各种字符串的判断和操作字符串的方式。我们已经可以利用他们来完善我们的数据的输入和输出。
  • 但是,不知道同学们发现没有。我们在实现类似购物这种用户选择性输入的时候,都只能实现的是用户的单项选择。
  • 假如,我们需要实现多选呢?用户一个一个的购买是不是有点过于麻烦了呢?但是对于多选的数据我们又该如何进行判断,并合理的扣款呢?
  • 如果打开用户的多项选择功能,那么就需要判断如下几点:

    1,用户到底在单选还是多选?

    2,用户如果是多选,那么是否有重复的选择
  • 要想实现上述两点判断。我们首先就要看看用户的数据到底在不在我们的选择范围里。如果在就是单选。如果不在它还是纯数字的话就会是多选。
  • 我们还要判断用户到底有没有复选,假如我们不让用户复选商品,但可以多选。那么我们还需要对每个字符进行.count()来计数。如果用户输入了100个选项。我们计数100次?-_-!
  • 如果不想这么麻烦,就需要学习我们下一节的知识--->集合

作业:

购物车优化

用户入口:

  • [x] :用户可以查看新增或修改价格的商品

商家入口:

  • [x] :可以添加商品,修改商品价格
  • [x] :实现商品的分类

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

  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. Class 'SoapClient' not found 解决方法

    Class 'SoapClient' not found ? 在百度上搜了解决办法,可是收效不佳,只知道好像要添加soap扩展模块,但怎么添加却没有说.于是,我上了google.果然,查看一些英文资料 ...

  2. java的初始化(编程思想)

    6.成员初始化 java尽量保证:所有变量在使用前都能得到恰当的初始化.对于方法的局部变量,java以编译错误的形式来贯彻这种保证. 如果类的成员变量时基本类型,那么没有初始化给默认值 在类里定义一个 ...

  3. Beta阶段第1周/共2周 Scrum立会报告+燃尽图 04

    作业要求与 [https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284] 相同 版本控制:https://git.coding.net/li ...

  4. Nginx 反向代理 如何在web应用中获取用户ip

    转载:http://blog.csdn.net/bao19901210/article/details/52537279 问题背景: 在实际应用中,我们可能需要获取用户的ip地址,比如做异地登陆的判断 ...

  5. Android EditText 中hint文字大小以及与输入文字颜色保存一致

    SpannableString 这个就是用来处理android 文本信息 可编辑 可点击 感兴趣的自己去看! /* * Copyright (C) 2006 The Android Open Sour ...

  6. 微信逆向工程之远程操作Mac

    远程控制指令: (功能-指令-是否开启) macbook控制: 屏幕保护-ScreenSave-开启 锁屏-LockScreen-开启 休眠-Sleep-开启 关机-Shutdown-开启 重启-Re ...

  7. CtaAlgo vs PyAlgoTrade

    转自知乎:https://zhuanlan.zhihu.com/p/21971854 在Python量化领域,PyAlgoTrade和zipline并列两大策略回测框架的先驱,其中PyAlgoTrad ...

  8. HDU4819 Mosaic【树套树】

    LINK 题目大意 给你一个\(n*n\)矩阵,每个点有初始权值 q次询问每次把一个矩形的中心节点变成这个矩形中最大值和最小值的平均数 思路 很显然的树套树啊 就是一开始傻逼了没想到怎么去维护这个东西 ...

  9. 使用UNetbootin制作U盘启动

    制作Ubuntu系统启动U盘,可以用软碟通UltraISO,也能用UNetbootin这个软件. UNetbootin的好处是有windows客户端,也有Linux的客户端,也就是说可以很方便的在Li ...

  10. 【转】为什么要用GIT而不是SVN

    原文网址:http://www.cnblogs.com/perseus/archive/2012/11/22/2782051.html 使用了近一年的git之后,再使用svn,发现自己svn这种版本管 ...