本次学习内容
1.for循环
2.continue and break
3.while循环
4.运算符
5.数据类型
数字
字符串
列表
1.for循环
猜年龄的游戏完善下,只有三次机会
for i in range(3)#循环3次
for...else#如果for循环正常结束,就执行else下面的语句
exit()#退出程序
hongpeng_age = 21 for i in range(3): age = int(input("please guess age:"))#int 输入字符串转换成整型 if age == hongpeng_age: print('get it') break elif age < hongpeng_age: print ('try bigger') else: print('try smaller') else: exit("too much times") print('welcome...')
2.continue and break
continue:结束本次循环,继续下一次循环
break:结束本层循环
continue
for i in range(10): for j in range(10): if j > 5: continue else: print (i,j)
break
for i in range(10): for j in range(10): if j > 5: break else: print (i,j)
3.while循环
while True死循环,一直执行到天荒地老
count = 0 while True: print("你是风儿我是沙,缠缠绵绵到天涯...",count) count +=1
上面的3次猜年龄的游戏也能用while实现
age = 21 count = 0 while count < 3: guess_age = input("age:") #判断输入是否是数字 if guess_age.isdigit(): guess_age = int(guess_age) else: continue if guess_age == age: print('get it') break elif guess_age > age: print("try small") else: print("try bigger") count += 1
4.运算符
1、算数运算:
- + 加
- - 减
- * 乘
- / 除
- % 取余
- ** 幂
- // 取整除
2、比较运算:
- == 等于
- != 不等于
- > 大于
- < 小于
- >= 大于等于
- <= 小于等于
3、赋值运算:
- = 赋值
- += a+=b---------a=a+b
- -= a-=b----------a=a-b
- *= a*=b----------a=a*b
- /= a/=b----------a=a/b
- %= a%=b---------a=a%b
- **= a**=b--------a=a**b
- //= a//=b---------a=a//b
4、位运算:
- & 按位与
- | 按位或
- ^ 按位异或,二进制相依时结果为1
- ~ 按位取反
- << 左移
- >> 右移
5、逻辑运算:
6、成员运算:
- in
- not in
7.身份运算
- is 判断两个标识符是不是引用同一对象
- is not
>>> age = 1111111111111
>>> age1 = age
>>> age1 is age
True
#类似软链接
>>> age = 111111111111
>>> age1 = 111111111111
>>> age1 is age
False
#重新在内存中创建
5.数据类型
数字
- 整型int
- 长整型long(python3中没有长整型,都是整型)
- 布尔bool(True 和False1和0)
- 浮点型float
- 复数complex
字符串
定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,' '或'' ''或''' '''中间包含的内容称之为字符串
msg = 'hello world' print(msg[4])#找字符串中索引是4 print(msg.capitalize())#字符串首字母大写 print(msg.center(20,'*'))#字符串居中显示,*补全 print(msg.count('d',0,))#统计字符串中d出现的次数 print(msg.endswith('l'))#是否以l结尾 print(msg.find('p'))#字符串中找p的位置 print(msg.index('l'))#字符串中找l的索引,只找第一个 #find和index的区别,find如果没有找到,输出-1,index没有找到,报错 #format函数,功能和%s一样 print('{0} {1} {0}'.format('name','age')) print('{name}'.format(name = 'alex')) print('{} {}'.format('name','age','hobby')) msg1 = ' while ' msg2 = '11' print(msg1.isalnum())#至少一个字符,且都是字母或数字才返回True print(msg1.isalpha())#至少一个字符,且都是字母才返回True print(msg1.isdecimal())#10进制字符 print(msg1.isdigit())#整型数字 print(msg1.isidentifier())#判断单词中是否含关键字 print(msg1.islower())#全为小写 print(msg1.isupper())#全为大写 print(msg1.isspace())#全为空格 print(msg1.istitle()) print(msg1.ljust(20,'*'))#左对齐 print(msg1.rjust())#右对齐 print(msg1.strip())#移除空白 #字符串中字符替换 msg = 'my name is abcd' table = str.maketrans('a','l') print(msg.translate(table)) msg1 = 'abc' print(msg1.zfill(20))#右对齐 print(msg1.rjust(20,'0'))
isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
False: 汉字数字
Error: 无
isdecimal()
True: Unicode数字,,全角数字(双字节)
False: 罗马数字,汉字数字
Error: byte数字(单字节)
isnumeric()
True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
False: 无
Error: byte数字(单字节)
列表
定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素
特性:
1.可存放多个值
2.可修改指定索引位置对应的值,可变
3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序
name = ['tom','jack','david','alex','alex','domin'] #增 name.append('alice') print(name) name.insert(1,'stevn') print(name) #删除 name.remove('tom') print(name) del name[0] print(name) name.pop(1)#不声明默认删除最后一个元素 print(name) #改 name[2] = 'tomas' print(name) #查 print(name[-1]) print(name[0::2])#步长为2 print(name[-3:]) print(name.index('jack'))#取元素下标 name2 = ['dog','cat'] name.extend(name2)#把name2列表加入name中
name.sort()
print(name)#ascii排序,python3中str和int不能排序,2中可以
n3 = name.copy() n4 = name print(n3,id(name),id(n3)) print(n4,id(name),id(n4)) name.pop() print(n3,id(name),id(n3)) print(n4,id(name),id(n4)) #copy是在内存中重新存放一份数据,python2中有深浅copy一说,python3中都是深copy #n4就是类似linux中的软连接,和name在内存中存放数据的地址一样
小练习1:购物车之初体验,先实现个小目标
- 展示商品列表和价格
- 用户输入薪水
- 用户购物结束打印购买列表、余额
列表
enumerate()
if...else
while True
buy_list = [] dict_list = [ ["iphone",5888], ["mac",12000], ["cloth",300] ] print("welcome".center(20,'*')) for index,item in enumerate(dict_list): print(index,item[0],item[1]) while True: salary = input("salary:") if salary.isdigit(): salary = int(salary) break else: continue while True: choose = input("pleae choose:") if choose.isdigit(): choose = int(choose) if choose >= 0 and choose < len(dict_list): p = dict_list[choose] if salary < p[1]: print("your balance is not enough!") else: buy_list.append(p) salary -= p[1] print('you have buy 33[32;1m[%s] 33[0m,your balance is 33[32;1m[%s] 33[0m'%(p[0],salary)) elif choose == 'quit': print('购买商品如下:'.center(50,'*')) for i in buy_list: print(i[0],i[1]) print('your balance is %s'%salary) exit() else: continue
小练习2
>>> str='四' >>> print(str.isnumeric()) True >>> print('www.example.com'.lstrip('cmowz.')) example.com >>> values = [1,2,3,4,5,6] >>> print(values[::2]) [1, 3, 5] >>> print(1 and 2) 2
小练习3
三级菜单(每一级都能退出和返回上一级)
无敌版
menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车战':{ '携程':{} } }, '浦东':{}, }, '山东':{}, } current_level = menu#记录当前层 last_level = []#记录当前层的前几层 while True: for i in current_level:#遍历字典,打印当前层key print(i) choice = input('>>').strip() if len(choice) == 0:continue if choice == 'q':exit() if choice == 'b': if len(last_level) == 0:break#判断是否back到了首层 current_level = last_level[-1]#如果输入b,当前层就改为上层 last_level.pop()#并删除列表中最后一个值,也就是当前层的上层 if choice not in current_level:continue#这行一定要写在if choice == 'b':的下面,否则输入b会一直continue last_level.append(current_level)#当前层改变前记录到列表中,back时能找到上一层 current_level = current_level[choice]#根据用户输入改变当前层