一、安装python解释器

   官网: https://www.python.org/downloads/windows/

 自行下载安装,添加环境变量

#测试安装是否成功
windows --> 运行 --> 输入cmd ,然后回车,弹出cmd程序,输入python,如果能进入交互环境 ,代表安装成功。
#多版本共存演示
注意:在安装目录下找到python.exe,拷贝一份,命名为python2.exe或python3.exe,一定要保留原版,因为pip工具会调用它。

二、变量的定义

1)例如

#变量名(相当于门牌号,指向值所在的空间),等号,变量值
name='Egon'
sex='male'
age=18
level=10 

2)定义的规范

#1. 变量名只能是 字母、数字或下划线的任意组合
#2. 变量名的第一个字符不能是数字
#3 变量名为中文,拼音,变量名不宜过长,变量名词不达意 #4. 关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del',
'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import',
'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

3)定义的方式

#驼峰体
AgeOfOldboy = 56 
NumberOfStudents = 80
#下划线(推荐使用)
age_of_oldboy = 56 
number_of_students = 80

4)定义变量会有:id,type,value

#1 等号比较的是value,
#2 is比较的是id

#强调:
#1. id相同,意味着type和value必定相同
#2. value相同type肯定相同,但id可能不同,如下
>>> x='Info Egon:18'
>>> y='Info Egon:18'
>>> id(x)
4376607152
>>> id(y)
4376607408
>>> 
>>> x == y
True
>>> x is y
False

三、如何与用户交互(input)

#在python3中
input:用户输入任何值,都存成字符串类型

#在python2中
input:用户输入什么类型,就存成什么类型
raw_input:等于python3的input

四、基本数据类型

1)数字类型,实质指的是int 和 float

#int整型
定义:age=10 #age=int(10)
用于标识:年龄,等级,身份证号,qq号,个数

#float浮点型
定义:salary=3.1 #salary=float(3.1)
用于标识:工资,身高,体重,

2)字符串

#在python中,加了引号的字符就是字符串类型,python并没有字符类型。
定义:name='egon' #name=str('egon') 
用于标识:描述性的内容,如姓名,性别,国籍,种族

#那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
msg = "My name is Egon , I'm 18 years old!"

#多引号什么作用呢?作用就是多行字符串必须用多引号
msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)

字符串拼接

#数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行"相加""相乘"运算。
>>> name='egon'
>>> age='18'
>>> name+age #相加其实就是简单拼接
'egon18'
>>> name*5 
'egonegonegonegonegon'


#注意1:字符串相加的效率不高
字符串1+字符串3,并不会在字符串1的基础上加字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,相当字符串1与字符串3的空间被复制了一次,

#注意2:只能字符串加字符串,不能字符串加其他类型
View Code

a)字符串中优先掌握的内容

#优先掌握的操作:
#1、按索引取值(正向取+反向取) :只能取
#2、切片(顾头不顾尾,步长)
#3、长度len
#4、成员运算in和not in
#5、移除空白strip
#6、切分split
#7、循环

案例

# # 1、按索引取值(正向取+反向取):只能取
# name = 'bo dy'
# print(name[1])  # o
# print(name[-1]) # y
# # 2、切片(顾头部顾尾,步长),可生成列表
# mag = 'hello world'
# print(mag[0:4])  # hell
# print(mag[0:4:2])  # hl
# # 3、长度len
# mag = 'hello'
# print(len(mag))
# # 4、成员运算 in 和 not in      判断正误
# mag = 'zhangsan lisi wangmazi'
# print('lisi' in mag)    # True
# # 5、移除空白strip。。移除左右两边的空白字符
# name = '*******user*****'
# print(name.strip('*'))  # 删除左右两边的*,剩下的是user
# msg = '** * /user is sb  */*** *'
# print(msg.strip('* /'))
# #======小例子========
# while True:
#     # cmd = input('cmd>>:')
#     # cmd = cmd.strip()
#     cmd = input('cmd>>:').strip()
#     if len(cmd) == 0:continue
#     if cmd == 'q':break
#     print('%s is running' %cmd)
# 6、切分 split
# info = 'root:x:0:0::/root:/bin/bash'
# res = info.split(':')
# print(res[0])
# 7、循环
cmd = 'wera'
for i in cmd:
    print(i)
案例

b)需要掌握的操作

# 1、strip , lstrip , rstrip
# 2、lower, upper
# 3、startswith, endwith  判断字符串开头和结尾的
# 4、format的三种用法
# 5、split, rsplit
# 6、join,只能连接包含元素全部为字符串类型的列表
# 7、replace
# 8、isdigit  判断字符串是否是纯数字
# 9、istitle 判断首字母是不是大写
# 1、strip , lstrip , rstrip
print('****user****'.lstrip('*'))   # user****
print('****user****'.rstrip('*'))   # ****user
# 2、lower, upper
msg = 'AvcEd'
print(msg.lower())  # avced
print(msg.upper())  # AVCED
# 3、startswith, endwith  判断字符串开头和结尾的
msg = 'who is sb'   # True
print(msg.startswith('who'))
print(msg.endswith('sb'))
# 4、format的三种用法
print('my name is {x} my age is {y}'.format(y=18,x='nb'))
print('my name is {name} my age is {age}'.format(age=18,name='nb'))
print('my name is {1} my age is {0} {1} {0}'.format('nb',18))
# 5、split, rsplit
info = 'root:x:0:0::/root:/bin/bash'
print(info.split(':',1))    # ['root', 'x:0:0::/root:/bin/bash']
print(info.rsplit(':',1))   # ['root:x:0:0::/root', '/bin/bash']
# 6、join,只能连接包含元素全部为字符串类型的列表
info = 'root:x:0:0::/root:/bin/bash'
str_to_list = info.split(':')
print(str_to_list)  # ['root', 'x', '0', '0', '', '/root', '/bin/bash']
list_to_str=':'.join(str_to_list)
print(list_to_str)
# 7、replace
msg = 'wxx say my name is wxx'
print(msg.replace('wxx','SB',2))
# 8、isdigit  判断字符串是否是纯数字
print('123'.isdigit())
print('12sae3'.isdigit())
案例

c)其他操作(了解)

# 1、find,rfind,index,rindex,count
# 2、center,ljust,rjust,title
# 3、expandtabs
# 4、captalize,swapcase,title
# 5、is数字系列,isdigit,isnumeric,isdecimal
# 6、is 其他
# 1、find,rfind,index,rindex,count
msg = 'hello mr.s hello'
print(msg.find('mr.s'))     # 找的是 'mr.s' 在msg 中起始位置
print(msg.find('mr.s',0,3))  # 没有找到返回 -1
print(msg.index('mr.s'))    # 没有找到,报错,正常的情况下和find一样
print(msg.count('hello'))
# 2、center,ljust,rjust,title
print('info'.center(50,'='))
print('info'.ljust(50,'='))
print('info'.rjust(50,'='))
print('info'.zfill(50))
# 3、expandtabs
print(r'a\tb')
print('a\tb')
print('a\tb'.expandtabs(1))
# 4、captalize,swapcase,title
print('abc'.capitalize())   #  首字母大写
print('Ab'.swapcase())      # 字母大小写交互
print('my name is user'.title())    # 全部首字母大写
# 5、is数字系列,isdigit,isnumeric,isdecimal
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='' #中文数字
num4='' #罗马数字
print(num2.isdigit())
print(num2.isnumeric())
print(num2.isdecimal())
num3=''
print(num3.isnumeric())
# 6is 其他
print(' '.isspace())    # 判断字符串中是否有空格
print('agaga'.isalpha()) # 判断字符串中是否全部是字母
print('agaga123'.isalnum()) # 判断字符串是否由字母或数字组成
示例

d)字符串常用操作归纳

    - upper()      # 转换字符串中的小写字母为大写。
    - title()      # 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())。
    - lower()      # 转换字符串中所有大写字符为小写。
    - rstrip()     # 删除字符串字符串末尾的空格.
    - lstrip()     # 截掉字符串左边的空格或指定字符。
    - max(str)     # 返回字符串 str 中最大的字母。
    - min(str)     # 返回字符串 str 中最小的字母。
    - join(seq)    # 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

3)列表

#在[]内用逗号分隔,可以存放n个任意类型的值
定义:students=['egon','alex','wupeiqi',] #students=list(['egon','alex','wupeiqi',]) 
用于标识:存储多个值的情况,比如一个人有多个爱好

#存放多个学生的信息:姓名,年龄,爱好
>>> students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]]
>>> students_info[0][2][0] #取出第一个学生的第一个爱好
'play'

a)优先掌握的操作

#1、按索引存取值(正向存取+反向存取):即可存也可以改;超出索引就会报错
#2、切片(顾头不顾尾,步长)
#3、长度
#4、成员判断运算in和not in
#5、追加也插入
#6、删除
#从列表中取走一个元素,相当与删除,但有返回值
#7、循环
#1、按索引存取值(正向存取+反向存取):即可存也可以改;超出索引就会报错
names = ['aa','bb','cc','dd']
print(names[0])
print(names[-1])
#2、切片(顾头不顾尾,步长)
names = ['aa','bb','cc','dd']
print(names[0:3:2])
print(names[0:3:-1])    #取空了
print(names[3:0:-1])
print(names[-1::-1])    # 列表反转
#3、长度
print(len(names))
#4、成员判断运算in和not in
print('aa' in names)
print('xx' in names)
#5、追加也插入
names = ['aa','bb','cc','dd']
names.append('ee')
print(names)
names.insert(2,'user')
print(names)
#6、删除
names = ['aa','bb','cc','dd']
del names[2]
print(names)
names = ['aa','bb','cc','dd']
names.remove('bb')
print(names)
#从列表中取走一个元素,相当与删除,但有返回值
names = ['aa','bb','cc','dd']
res = names.pop(0)    # 按照索引删除元素
print(res)
print(names)
#7、循环
for name in names:
    print(name)
示例

b) 熟悉练习的操作

1、反转
2、计数
3、清空
4、复制
5、查看索引
6、排序
names = ['aa','bb','cc','bb',1,2,3,4]
names.reverse()     # 反转
print(names)
a = names.count('bb')
print(a)
names.clear()   # 清空列表。相当于把列表的元素全部删除
print(names)

names = ['aa','bb','cc','bb',1,2,3,4]
list = names.copy()
print(list)
print(names.index('cc'))

names = [1,10,3,-2]
names.sort()    # 列表中的元素必须是同一类型才能比较排序
print(names)
示例

列表综合练习

names = ["zhaoming","caojin","lengmengyun","xiaoyu","xiatian"]
#对应位置:  0      1      2      3    4
                     -3     -2    -1
names = ["zhaoming","caojin","lengmengyun","xiaoyu","xiatian"]
del names[-2]  #删除
names.remove("xiatian") #删除
names.append("zhangsan") #追加
names.insert(1,"lisi") #插入
names[0] = "hongmao" #修改
names.pop() #默认删除最后一个  # del names[1] = name.pop(1)
#names.pop() #默认删除最后一个
print(names)

print(names[0],names[2],names[-1])  
print(names[1:3])   #护头不护尾,及打印位置为1和2的元素
print(names[1:4])  #打印,打印1,2,3元素
print(names.index("caojin")) #找caojin在列表的位置
print(names.count("caojin")) #找曹进在这里面的个数

#names.clear() 清空列表
names.reverse() #反转
names.sort() #排序
print("--->",names)
names2 = [1,2,3,4]
names.extend(names2) #把别的列表内容添加进来
#del names2 #删除列表2      报错
print(names,names2)
names3 = names.copy()
print(names3)
View Code

带索引的循环列表

for i, school in enumerate(school_list):
    print('%s : %s' % (i, school))
View Code

列表常用操作归纳

    - list.append(obj) # 在列表末尾添加新的对象
    - list.count(obj)  # 统计某个元素在列表中出现的次数
    - list.extend(seq) # 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    - list.index(obj)  # 从列表中找出某个值第一个匹配项的索引位置
    - list.insert(index, obj)# 将对象插入列表
    - list.pop(obj=list[-1]) # 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    - list.remove(obj) # 移除列表中某个值的第一个匹配项
    - list.reverse()   # 反向列表中元素
    - list.sort([func])# 对原列表进行排序
    - list.clear()     # 清空列表
    - list.copy()      # 复制列表

不可变的列表(元组)tuple 类型

    - len(tuple) # 计算元组元素个数。
    - max(tuple) # 返回元组中元素最大值。
    - min(tuple) # 返回元组中元素最小值。
    - tuple(seq) # 将列表转换为元组。

4)字典的使用

info={
    'name':'egon',
    'hobbies':['play','sleep'],
    'company_info':{
        'name':'Oldboy',
        'type':'education',
        'emp_num':40,
    }
}
print(info['company_info']['name']) #取公司名

students=[
    {'name':'alex','age':38,'hobbies':['play','sleep']},
    {'name':'egon','age':18,'hobbies':['read','sleep']},
    {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']},
]
print(students[1]['hobbies'][1]) #取第二个学生的第二个爱好

a)dict优先掌握的操作

#1、按key存取值:可改可取,可存
#2、长度len
#3、成员运算in和not in,判断字典的key
#4、删除
#5、键keys(),值values(),键值对items()
#6、循环
#7、变量赋值
#1、按key存取值:可改可取,可存
d = {'x':1}
d['x'] = 2
print(d)
d['y'] = 3
print(d)
#2、长度len
info = {'x': 2, 'y': 3}
print(len(info))
#3、成员运算in和not in,判断字典的key
print('x' in info)
#4、删除
info = {'x': 2, 'y': 3,'z':5}
# del info['x']
# print(info)
# print(info.popitem())  # 随机删除
print(info.pop('y'))
print(info)
print(info.pop('xxxx',None))
print(info)
#5、键keys(),值values(),键值对items()
#6、循环
info = {'x': 2, 'y': 3,'z':5}
for k in info:
    print(k,info[k])
#7、变量赋值
li = [1,2,3]
x,y,z = li
print(x,y,z)
li2 = [1,2,3,4,5,6]
x,y,z,*_ = li2
print(x,y,z)
m = 10
n = 11
m,n = 11,10
print(m,n)
示例

b)熟悉了解的操作

info.get()
info.update()
info.fromkeys()
info.setdefault()
info = {'x': 2, 'y': 3,'z':5}
print(info['x'])
print(info.get('xxx'))  # 即便key不纯在,也不报错

info.update({'x':7,'f':9})
print(info)

d = {}.fromkeys(['name','age','sex'],'初始值')
print(d)

print(info.setdefault('x',500))     # key存在,则不改变key对应的值,返回原值
print(info)
print(info.setdefault('g',500))     # key不存在,则增加值,返回增加的值
print(info)
示例
基于 setdefault 的小例题,用字典统计下面字符串的个数
s = 'hello user user say hello sb sb user sb'
s = 'hello user user say hello sb sb user sb'
words = s.split()   # ['hello', 'user', 'user', 'say', 'hello', 'sb', 'sb']
d = {}
for word in words:
    if word not in d:
        d[word] = 1
    else:
        d[word] += 1
print(d)    # {'hello': 2, 'user': 3, 'say': 1, 'sb': 3}
# setdefault 优化
s = 'hello user user say hello sb sb user sb'
words = s.split()   # ['hello', 'user', 'user', 'say', 'hello', 'sb', 'sb']
d = {}
for word in words:
    # print(word,words.count(word))
    d.setdefault(word,words.count(word))
print(d)    # {'hello': 2, 'user': 3, 'say': 1, 'sb': 3}
例题

c)字典常用操作归纳

- popitem()    # 随机返回并删除字典中的一对键和值(一般删除末尾对)。
- key in dict  # 如果键在字典dict里返回true,否则返回false
- radiansdict.copy()   # 返回一个字典的浅复制
- radiansdict.keys()   # 以列表返回一个字典所有的键
- radiansdict.items()  # 以列表返回可遍历的(键, 值) 元组数组
- radiansdict.clear()  # 删除字典内所有元素
- radiansdict.values() # 以列表返回字典中的所有值
- radiansdict.fromkeys()    # 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
- radiansdict.update(dict2) # 把字典dict2的键/值对更新到dict里
- radiansdict.get(key, default=None)        # 返回指定键的值,如果值不在字典中返回default值
- radiansdict.setdefault(key, default=None) # 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
- pop(key[,default])   # 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

5)布尔型

#布尔值,一个True一个False
#计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,
人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识 >>> a=3 >>> b=5 >>> >>> a > b #不成立就是False,即假 False >>> >>> a < b #成立就是True, 即真 True 接下来就可以根据条件结果来干不同的事情了: if a > b print(a is bigger than b ) else print(a is smaller than b ) 上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。

布尔型的重要性

#所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、其余均为真 

6)类型的归纳重点

#所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、其余均为真 

四、字符串格式化,即用变量替代被格式化字符串的值

例如:

s = "I am %s" % "user"
print(s)    # I am user
for i in range(3):
    print("%s 次hello" %i)
# 打印结果
# 0 次hello
# 1 次hello
# 2 次hello

常见的字符串格式化

s = "I am %s,age %d" % ("user",20)      # 最常用的
print(s)        # I am user,age 20
s = "I am %(name)s,age %(age)d" % {"name":"user","age":99}
print(s)        # I am user,age 99
s = "I am %(n1) + 10s adadgad" % {"n1":"user"}  # 右对齐
print(s)        # I am       user adadgad
s = "I am %(n1)-10d adadgad" % {"n1":19}        # 左对齐
print(s)        # I am 19         adadgad
s = "I am %(n1)+010d adadgad" % {"n1":19}       # 0替代空格
print(s)        # I am +000000019 adadgad
s = "I am %f user" % 1.2            # 默认6位的精度
print(s)        # I am 1.200000 user
s = "I am %.2f user" % 1.2          # 指定2位的精度
print(s)        # I am 1.20 user
s = "I am %(pp).2f %%" %{"pp":123.425556}
print(s)        # I am 123.43 %
 
 
s = "I am {},age {},{}".format("user",18,"chinese")    # 非常常见
print(s)    # I am user,age 18,chinese
s = "I am {:.2%} love".format(0.99)
print(s)    # I am 99.00% love
View Code

特殊的模板字符串格式化

MENU_START = """
--------------------------------------------
             FTP SERVER
---------------------------------------------
{menu1}    {menu2}    {menu3}
"""
menu = MENU_START.format(menu1="[1] 启动服务",
                          menu2="[2] 添加用户",
                          menu3="[3] 结束程序")
print(menu)
# --------------------------------------------
#              FTP SERVER
# ---------------------------------------------
# [1] 启动服务    [2] 添加用户    [3] 结束程序
View Code

字符串作业

练习:用户输入姓名、年龄、工作、爱好 ,然后打印成以下格式
------------ info of Egon -----------
Name  : Egon
Age   : 22
Sex   : male
Job   : Teacher 
------------- end -----------------

字符串综合练习

#!/usr/bin/env python
#-*-coding utf8-*-
#Author:caojin
info = {
    'stu1001': 'caojin',
    'stu1002': 'zhaoming',
    'stu1003': 'zhansan',
    'stu1004': 'lisi',
}
print(info)
print(info['stu1002'])
info['stu1003'] = "张山"  #修改
print(info)
info['st112'] = "孙悟空" #如果没有则是添加
print(info)
del info['stu1004']     #删除
print(info)
info.pop('stu1003')     #删除
print(info)
info.popitem()      #随机删除
print(info)
print(info.get('stu00010'))  #找元素,即便没有也没有错,出现none
print('stu1001' in info)    #判断元素是否在
print('stu1005' in info)

info.setdefault('stu1002',"贝吉塔")  #先去找1002这个元素,如果有,直接返回值;如果没有,则增加新的值
print(info)

b = {
    'stu1001':'lengmengyun',
    1:3,
    3:5
}
print(b)
info.update(b) #把列表b的元素放进info里面,如果有同样的序列,则元素被替换。交叉的覆盖了
print(info)
print(info.items()) #把字典转成了列表
c = info.fromkeys([6,7,8])
print(c)
e = dict.fromkeys([6,7,8],"100")    #创建相同元素
print(e)
f = dict.fromkeys([6,7,8],[1,{"name":"caojin"},444])
print(f)
f[8][1]['name'] = "zhaoming"  #注意用fromkeys创建字典的守护,改一个则都改了
print(f)
print("-----",info,"------")
for i in info:      #两个for效果一样,但是上面个高效,如果数据量上百万,下面个for循环可能会崩溃
    print(i,info[i])
for k,v in f.items():
    print(k,v)
View Code

五、基本运算符

1)算数运算

以下假设变量:a=10,b=20

2)比较运算符

以下假设变量:a=10,b=20

3)赋值运算

以下假设变量:a=10,b=20

4)逻辑运算

>>> True or Flase and False
True
>>> (True or Flase) and False
False

4)身份比较运算

#is比较的是id
#而==比较的是值

六、流程控制之 if  .....elif.....else

1) 基础条件语句,if

# 如果:女人的年龄>30岁,那么:叫阿姨
age_of_girl=31
if age_of_girl > 30:
    print('阿姨好')

2) 如果,那么 即 if ....else...

# 如果:女人的年龄>30岁,那么:叫阿姨,否则:叫小姐
age_of_girl=18
if age_of_girl > 30:
    print('阿姨好')
else:
    print('小姐好')

3) 条件组合判断

#如果:女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨
age_of_girl=18
height=171
weight=99
is_pretty=True
if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True:
    print('表白...')else:
    print('阿姨好')

4)if 嵌套 if

#在表白的基础上继续:
#如果表白成功,那么:在一起
#否则:打印。。。

age_of_girl=18
height=171
weight=99
is_pretty=True
success=False
if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True:
    if success:
        print('表白成功,在一起')
    else:
        print('我跟你开玩笑而已...')
else:
    print('阿姨好')

5)if ...elif...else

 如果:成绩>=90,那么:优秀
 如果成绩>=80且<90,那么:良好
 如果成绩>=70且<80,那么:普通
 其他情况:很差

score=input('>>: ')
score=int(score)

if score >= 90:
    print('优秀')
elif score >= 80:
    print('良好')
elif score >= 70:
    print('普通')
else:
    print('很差')
View Code

练习,简单的用户登录

name=input('请输入用户名字:')
password=input('请输入密码:')

if name == 'egon' and password == '123':
    print('egon login success')
else:
    print('用户名或密码错误')
用户登录验证

七、流程控制之while循环

  目的: 减少重复的代码

1)while的语法

while 条件:    
    # 循环体
    # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件。。。
    # 如果条件为假,那么循环体不执行,循环终止

2)打印数字练习,循环打印奇数,偶数等

#打印0-10
count=0
while count <= 10:
    print('loop',count)
    count+=1

#打印0-10之间的偶数
count=0
while count <= 10:
    if count%2 == 0:
        print('loop',count)
    count+=1

#打印0-10之间的奇数
count=0
while count <= 10:
    if count%2 == 1:
        print('loop',count)
    count+=1
while练习

3)死循环

import time
num=0
while True:
    print('count',num)
    time.sleep(1)
    num+=1  

4)while + break :break的意思是结束本层循环

while True:
    name = input('please input your name:')
    pwd = input('please input your password:')
    if name == 'user' and pwd == '123':
        print('登录成功')
        break
    else:
        print('登录失败')
View Code

5)while + continue :continue的意思是结束本次循环

n = 1
while n <= 5:
    if n == 4:
        n += 1
        continue
    print(n)
    n += 1
View Code

6)while + tag ===》 True 和 False

tag = True
while tag:
    print('第一层')
    while tag:
        print('第二层')
        while tag:
            cmd = input('第三层>>:')
            if cmd == 'q':
                tag = False
                break
View Code

 八、练习作业

1)打印金字塔

    x    
   xxx   
  xxxxx  
 xxxxxxx 
xxxxxxxxx
# 方法一
n = 1
while n <= 9:
    print(('x' * n).center(9, ' '))
    n += 2
# 方法二
for i in range(0,10):
    if i%2 == 1:
        print(("x"*i).center(9, ' '))
View Code

2)打印九九乘法表

# for i in range(1,10):
#     for j in range(1,i+1):
#         print('%s*%s=%s' %(i,j,i*j),end=' ')
#     print()
# 1*1=1
# 2*1=2 2*2=4
# 3*1=3 3*2=6 3*3=9
# 4*1=4 4*2=8 4*3=12 4*4=16
# 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
# 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
# 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
# 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
# 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

for i in range(1,10):
    # 第一层循环
    #print(i)
    for j in range(1, 10):
        # 第二层循环
        c = i*j
        print('%s*%s=%s' %(i,j,c),end='\t')
        # end=' ' 的意义是在循环输出的后面加一个分割,例如 1*1=1 1*2=2 1   end=' '
    print()     #  意思在第二层循环的一次结束后换行,进行下一次循环
View Code

装B代码

print('\n'.join([' '.join(['%s*%s=%-2s' % (j, i, i * j) for j in range(1, i + 1)]) for i in range(1, 10)]))

3)打印3层菜单

python基础
python进阶
python框架
第一层:python基础
入门
语法结构
第二层:入门
简介
python版本
数据类型
第三层:b
返回上一级
入门
语法结构
第二层:q
==========欢迎再来==========
dict = {
    'python基础':{
        '入门':{
            '简介':['python历史','编程语言','python简介'],
            'python版本':['python2','python3','共存'],
            '数据类型':['int','float','list','tuple','dict']
        },
        '语法结构':{
            '条件判断':['if','if...else','if...elif...else'],
            '循环语句':['for','while'],
            '函数体系':['def','class']
        }
    },
    'python进阶':{
        '高级语法结构':{
            '高级语法专题':['迭代器','生成器','装饰器'],
            '函数进阶':['正则匹配','内置函数','自定义函数'],
            '数据库操作':['SQL语法','查询','算法']
        },
        '前端知识学习':{
            'html语法':['if','if...else','if...elif...else'],
            'css语法':['for','while'],
            'js语法':['def','class']
        }
    },
    'python框架': {
        'flask框架': {
            '高级语法专题': ['迭代器', '生成器', '装饰器'],
            '函数进阶': ['正则匹配', '内置函数', '自定义函数'],
            '数据库操作': ['SQL语法', '查询', '算法']
        },
        'tonado框架': {
            'html语法': ['if', 'if...else', 'if...elif...else'],
            'css语法': ['for', 'while'],
            'js语法': ['def', 'class']
        },
        'django框架': {
            'html语法': ['if', 'if...else', 'if...elif...else'],
            'css语法': ['for', 'while'],
            'js语法': ['def', 'class']
        }
    }
}

tag = True
while tag:
    for i in dict:
        print(i)
    choice1 = input('第一层:').strip()
    if choice1 == 'q':
        print('==========欢迎再来==========')
        tag = False
    elif choice1 not in dict:
        print('===========请重新输入===========')
        continue
    while tag:
        for k in dict[choice1]:
            print(k)
        choice2 = input('第二层:').strip()
        if choice2 == 'q':
            print('==========欢迎再来==========')
            tag = False
        elif choice2 == 'b':
            print('返回上一级')
            break
        elif choice2 not in dict[choice1]:
            print('===========请重新输入===========')
            continue
        while tag:
            for m in dict[choice1][choice2]:
                print(m)
            choice3 = input('第三层:').strip()
            if choice3 == 'q':
                print('==========欢迎再来==========')
                tag = False
            elif choice3 == 'b':
                print('返回上一级')
                break
            elif choice3 not in dict[choice1][choice2]:
                print('===========请重新输入===========')
                continue
            while tag:
                list = dict[choice1][choice2][choice3]
                print(list)
                choice4 = input('======确定你的选择,请输入q=====:')
                if choice4 == 'q':
                    print('==========欢迎再来==========')
                    tag = False
                else:
                    continue
View Code

 精简版

利用了列表的特性,list.pop()和list.append()

dict = {
    'python基础':{
        '入门':{
            '简介':['python历史','编程语言','python简介'],
            'python版本':['python2','python3','共存'],
            '数据类型':['int','float','list','tuple','dict']
        },
        '语法结构':{
            '条件判断':['if','if...else','if...elif...else'],
            '循环语句':['for','while'],
            '函数体系':['def','class']
        }
    },
    'python进阶':{
        '高级语法结构':{
            '高级语法专题':['迭代器','生成器','装饰器'],
            '函数进阶':['正则匹配','内置函数','自定义函数'],
            '数据库操作':['SQL语法','查询','算法']
        },
        '前端知识学习':{
            'html语法':['if','if...else','if...elif...else'],
            'css语法':['for','while'],
            'js语法':['def','class']
        }
    },
    'python框架': {
        'flask框架': {
            '高级语法专题': ['迭代器', '生成器', '装饰器'],
            '函数进阶': ['正则匹配', '内置函数', '自定义函数'],
            '数据库操作': ['SQL语法', '查询', '算法']
        },
        'tonado框架': {
            'html语法': ['if', 'if...else', 'if...elif...else'],
            'css语法': ['for', 'while'],
            'js语法': ['def', 'class']
        },
        'django框架': {
            'html语法': ['if', 'if...else', 'if...elif...else'],
            'css语法': ['for', 'while'],
            'js语法': ['def', 'class']
        }
    }
}
layers=[dict]
while True:
    if len(layers) == 0: break
    current_layer=layers[-1]
    # print(current_layer)
    for key in current_layer:
        print(key)
    choice = input('>>: ').strip()
    if choice == 'b':
        layers.pop(-1)
        continue
    if choice == 'q':break
    if choice not in current_layer:continue
    layers.append(current_layer[choice])
View Code

 

posted on 2018-05-29 12:27  可口_可乐  阅读(578)  评论(0编辑  收藏  举报