01 while 循环
# 1死循环,会造成CPU的占用率过高
# i=1
# while True:
# i+=1
#2打印1-10
# n=1
# while True:
# if n <= 10:
# print(n)
# n+=1
# else:
# break
# 3打印1-10,改进1
# n=1
# while True:
# if n>10:
# break
# print(n)
# n+=1
#4打印1-10,改进2
# n=1
# while n<= 10:
# print(n)
# n+=1
# while True:
# name=input('please input your name :')
# pwd=input('please input your password:')
# if name == 'm' and pwd == '123':
# print('登陆成功')
# else:
# print('用户名或密码错误')
# 4、while+break:break的意思是结束本层循环
# while True:
# name=input('please input your name :')
# pwd=input('please input your password:')
# if name == 'm' and pwd == '123':
# print('登陆成功')
# break
# else:
# print('用户名或密码错误')
#5 while+continue:continue的意思是结束本次循环,进入下一次循环
# n=1
# while n <= 5:
# if n == 4:
# n+=1
# continue
# print(n)
# n+=1
# 6、练习题:循环嵌套
n=0
tag=True
while tag:
if n == 3:
print('失败尝试的次数过多')
break
name=input('please input your name:')
pwd=input('please input your password:')
if name == 'm' and pwd == '123':
print('登陆成功')
while tag:
cmd=input('请输入你的命令:')
if not cmd:continue
if cmd == 'q':
tag=False
break
print('%s is running' %cmd)
else:
print('用户名或密码错误')
n+=1
03可变or不可变类型
# 可变:值改变,但是id不变
# 不可变:值改变,id也变.(没改变原来值,产生了新值)
x=10
print(id(x))
x=11
print(id(x))
l=['a', 'b', 'c']
print(id(l))
l[0]='A'
print(l)
print(id(l))
04 数字类型
#一、int基本使用
#1 int用途:年龄,等级,编号
# 2、定义方式
# age=18
# print(age,type(age),id(age))
# 3、常用操作+内置方法
# 比较大小
# 数学运算
age=input('>>:')
age=int(age)
if age > 10:
print('too big')
05 字符串类型
# 一、str基本使用
# 1、描述性的数据:姓名、性别、地址等
# 2 定义方式:在单引号、双引号、三引号内,包含一串字符
# name='m'
# print(name,type(name),id(name))
# 3、优先掌握的操作:
# 3.1、按索引取值(正向取+反向取):只能取
# msg='he lo'
# print(msg[0])
# print(msg[2])
# msg[2]='A' #字符串只能取不能替换
# 3.2切片(顾头不顾尾,步长)
# msg = 'hello world'
# print(msg[0:4]) #hell
# print(msg[0:4:2]) #hl
# 3.3长度len
# msg='hello'
# print(len(msg))
# 3.4成员运算in和not in
# msg = 'alex say my name is alex'
# if 'alex' in msg:
# print('exist')
#
# print('alex' not in msg)
# print('alex' in msg)
# 3.5只能移除字符串左右两边的字符strip
# name = ' X mmm '
# print(name)
# name=name.strip()
# print(name)
# msg='**********b*****belly is nice********'
# print(msg.strip('*')) #b*****belly is nice
# msg='*****/ ***** belly is nice*****// **'
# print(msg.strip('* /')) #belly is nice
# while True:
# cmd=input('cmd>>:').strip()
# if len(cmd) == 0:continue
# if cmd == 'q':break
# print('%s is running ' %cmd)
# 3.6 split
# info='$PATH:$HOME/.local/bin:$HOME/bin'
# res=info.split(':')
# print(res) #['$PATH', '$HOME/.local/bin', '$HOME/bin']
# print(res[1]) #$HOME/.local/bin
# inp='get a.txt'
# cmd=inp[0:3]
# filepath=inp[4:]
# print(cmd) #get
# print(filepath) #a.txt
# res=inp.split(' ')
# print(res) #['get', 'a.txt']
# 3.7循环取值
# msg='xyz'
# n=0
# while n < len(msg):
# print(msg[n])
# n+=1
# 需要掌握的操作
# 1、strip,lstrip,rstrip
# print('***********m********'.lstrip('*')) #m********
# print('***********m********'.rstrip('*')) #***********m
# 2、lower,upper
# msg='Abc'
# print(msg.lower()) #abc
# print(msg.upper()) #ABC
# 3、startswith,endswith
# msg='alex is nice'
# print(msg.startswith('x')) #False
# print(msg.startswith('alex')) #True
# print(msg.endswith('ce')) #True
# 4、format的三种玩法
# print('my name is %s . my age is %s ' %('m', 18))
# print('my name is {name}. my age is {age}'.format(age=18, name='m'))
# print('my name is {}. my age is {}'.format('m', 18))
# print('my name is {0}. my age is {1} {1} {1} {1}'.format('m', 18))
# 5、split,rsplit
# info='$PATH:$HOME/.local/bin:$HOME/bin'
# print(info.split(':',1)) #['$PATH', '$HOME/.local/bin:$HOME/bin']
# print(info.split(':',2)) #['$PATH', '$HOME/.local/bin', '$HOME/bin']
# print(info.rsplit(':',1)) #['$PATH:$HOME/.local/bin', '$HOME/bin']
#6、join
# info='$PATH:$HOME/.local/bin:$HOME/bin'
# str_to_list=info.split(':')
# print(str_to_list) #['$PATH', '$HOME/.local/bin', '$HOME/bin']
# l=['$PATH', '$HOME/.local/bin', '$HOME/bin']
# list_to_str=':'.join(l)
# print(list_to_str,type(list_to_str)) #$PATH:$HOME/.local/bin:$HOME/bin <class 'str'>
# 注意:join只能连接所包含的元素全部为字符串类型的列表
# l=['a',2,3]
# ':'.join(l) #报错!!
# 7、replace
# msg='Alex say my name is Alex'
# print(msg.replace('Alex', 'Abby',1))
# 8、isdigit
# print('asdf32131'.isdigit())
# AGE=30
# while True:
# age=input('>>:').strip()
# if not age.isdigit():continue
# age=int(age)
# if age > 30:
# print('too big')
# elif age < 30:
# print('to small')
# else:
# print('you got it')
# break
# print(r'a\tb') #a\tb r开头的字符串内都是原声字符串,右斜杠没有特殊意义
# print('a\tb')
# 其他操作(了解)
# 1、find,rfind,index,rindex,count
# msg='hello alex hhaha alex'
# print(msg.find('alex',0,3)) #在0-3中找Alex在大字符串msg中的起始索引,没有找到则返回-1
# print(msg.index('alex')) #找的是Alex在大字符串msg中的起始索引,没有找到则报错
# print(msg.count('alex')) #alex在大字符串中出现的次数
06 列表类型
# 一、list的基本使用
# 1、用途:存放多个值
# 2、定义方式:[]内用逗号分隔开多个元素,每个元素可以是任意数据类型
# l=[1,'a',[1,2]]
# print(type(l),l)
# l=list([1,'a',[1,2]])
# print(type(l),l)
# 3、常用操作+内置方法
# 优先掌握的操作
# 3.1按索引存取值(正向存取+反向存取):即可以去也可以改
# names=['m','alex','wxx','xxx','zzz']
# print(names[4]) #zzz
# print(names[-1]) #zzz
# print(names[-2]) #xxx
# print(id(names))
# names[0]='M'
# print(id(names))
# print(names)
# names[5]=3
# 3.2切片(顾头不顾尾,步长)
# names=['m','alex','wxx','xxx','zzz']
# print(names[0:3:2]) #['m','wxx']
# print(names[:])
# 了解:反向步长
# print(names[3:-1:-1]) #[]
# print(names[-1::-1]) #['zzz','xxx','wxx','alex','m']
# 3.3长度
# names=['m','alex','wxx','xxx','zzz']
# print(len(names))
# 3.4成员运算in和not in
# names=['m','alex','wxx','xxx','zzz']
# print('alex' in names)
# print(4 in names)
# 3.5追加与插入
# names=['m','alex','wxx','xxx','zzz']
# names.append('1')
# names.append('2')
# names.append('3')
# print(names)
# names.insert(2, 'min')
# print(names)
# 3.6删除列表中某一个元素
# names=['m','alex','wxx','xxx','zzz']
# del names[2]
# print(names) #['m','alex','xxx','zzz']
# res=names.remove('wxx') #指定要删除的元素,remove方法没有返回值
# print(res) #None 无返回值
# print(names)
# 从列表中取走一个元素
# res=names.pop(0)
# print(res) #m
# print(names) #['alex', 'wxx', 'xxx', 'zzz'] 按照索引删除的元素(会返回刚刚删掉的元素),超出索引限制则报错
# 3.7循环
# names=['m','alex','wxx','xxx','zzz']
# for x in names:
# print(x)
# 需要掌握的操作
# names = ['m', 'm', 'alex', 'wxx', 'xxx', 'zzz', 1, 2, 3, 4]
# names.reverse()
# names.reverse()
# print(names)
# print(names.count('m')) #2
# names.clear()
# print(names)
# l=names.copy()
# print(l)
# 找names中第一个匹配的项
# print(names.index('alex')) #2
# 比较排序
# names=['b','a','+']
# names.sort()
# print(names)
# 了解:字符\|列表之间比较大小
# x='hello'
# l1=[1,2,'a','b] #列表比大小,一一对应的比,第一个出结果后无需再比
# 二、该类型总结
# 1、存多个值
# 2、有序
# 3、可变
# 练习题:
# 1、队列:先进先出
# l=[]
# 入队first->second->third
# l.append('first')
# l.append('second')
# l.append('third')
# print(l)
# 出队:
# print(l.pop(0)) #first
# print(l) #['second', 'third']
# print(l.pop(0)) #second
# print(l) #['third']
# print(l.pop(0)) #third
# print(l) #[]
# 2、堆栈:先进后出
# 入栈:first->second->third
# l.append('first')
# l.append('second')
# l.append('third')
# print(l) #['first', 'second', 'third']
# 出栈:third->second->first
# print(l.pop(-1)) #third
# print(l) #['first', 'second']
# print(l.pop()) #second ,默认为 index=-1,删除最后一个列表值。
# print(l) #['first']
# print(l.pop()) #first
# print(l) #[]
07 元组类型
# 一、tuple基本使用
# 1、用途:不可变列表
# 2、定义方式
# t=(1,2,3) #t=tuple((1,2,3))
# print(type(t))
# 3、常用操作+内置方法
# 优先掌握的操作:
# 3.1按索引取值(正向取+反向取):只能取
# t=('a', 'b', 'c')
# print(t[-1]) #c
# t[-1]=33333 #报错
# 3.2切片(顾头不顾尾,步长)
# t=('a','b','c','d','e')
# print(t[0:5:2]) #('a', 'c', 'e')
# 3.3长度
# 3.4成员运算in和not in
# 3.5 循环
# 需要掌握的方法
# t=('a','b','c','d','e','c')
# print(t.index('c')) #2
# print(t.count('c')) #2
# 二、该类型总结
# 1 存多个值
# 2 有序
# 3 不可变
08 字典类型
# 一:dict基本使用
# 1、用途:存多个值,key:value.key对value有描述作用
# 2、定义方式:{}内用逗号分开多个元素,每一个元素都是key:value形式
# 其中key必须是不可变类型,key通常都应该是字符串类型
# 其中value可以使任意数据类型
# info={'name':'m',(1,2):18}
# print(info['name']) #m
# print(info[(1,2)]) #18
# 3、常用操作+内置方法
# 优先掌握的操作
# 3.1按key存取值:可存可取
# d={'x':1}
# print(id(d))
# d['x']=2
# print(id(d))
# print(d)
# d['y']=3
# print(d)
# 3.2长度len
# info={'x':1,'y':2,'z':3}
# print(len(info)) #3
# 3.3成员运算in和not in:判断的是字典的key
# info={'x':1,'y':2,'z':3}
# print('x' in info) #True
# 3.4删除
# info = {'x': 1, 'y': 2, 'z': 3}
# print(info)
# del info['x']
# print(info) #info={'y':2,'z':3}
# print(info.popitem()) #
# print(info)
# print(info.pop('xxxx', None))
# print(info)
# 3.5 键keys(),值values(),键值对items()
# msg_dic={
# 'apple':10,
# 'tesla':100000,
# 'mac':3000,
# 'lenovo':30000,
# 'chicken':10,
# }
# print(msg_dic.keys())
# print(msg_dic.values())
# print(msg_dic.items())
# 3.6循环
# msg_dic = {
# 'apple': 10,
# 'tesla': 100000,
# 'mac': 3000,
# 'lenovo': 30000,
# 'chicken': 10,
# }
# print(msg_dic.items())
# for k in msg_dic:
# print(k, msg_dic[k])
# apple 10
# tesla 100000
# mac 3000
# lenovo 30000
# chicken 10
# for k in msg_dic.keys():
# print(k)
# apple
# tesla
# mac
# lenovo
# chicken
# for v in msg_dic.values():
# print(v)
# 30000
# 10
# 3000
# 100000
# 10
# k,v=('apple', 10)
# for k,v in msg_dic.items():
# print(k,v)
# 掌握的操作
# msg_dic = {
# 'apple': 10,
# 'tesla': 100000,
# 'mac': 3000,
# 'lenovo': 30000,
# 'chicken': 10,
# }
# if 'applexxx' in msg_dic:
# print(msg_dic['applexxx'])
# print(msg_dic.get('apple111',123123123))
# msg_dic.update()
# d1={'x':1,'y':2}
# d1.update({'x':2,'z':3})
# print(d1)
# msg_dic.setdefault
# 1、key存在,则不改变key对应的值,放回原值
# d={'x':1,'y':2}
# res=d.setdefault('x',1000)
# print(d)
# print(res) #1
# 2、key不存在,则增加一个key:value,返回新增的value
# d={'x':1,'y':2}
# res=d.setdefault('z',1000)
# print(d) #{'x':1,'y':2,'z':3}
# print(res) #1000
# 总结:setdefault有则不变,无则增加
# s='hello alex alex is is saying hello !'
# words=s.split()
# print(words) #['hello', 'alex', 'alex', 'is', 'is', 'saying', 'hello', '!']
# d={}
# for word in words:
# d.setdefault(word,words.count(word))
# print(d)
# 了解
# d={}.fromkeys(['name','age','sex'],None)
# print(d)
# 二、dict类型总结
# 1、存多个值
# 2、无序
# 3、可变