一、作业
#模拟用户登录 有三次机会 超过了 提示用户是否继续 from_db_username = 'jason' from_db_password = '123' n = 0 while True: if n == 3: choice = input('三次机会已用完,你还想不想要?(y/n)>>>:') if choice == 'y': n = 0 else: break username = input('please input your username>>>:') password = input('please input your password>>>:') if username == from_db_username and password == from_db_password: print('登录成功') break else: n += 1
# 打印金字塔 ''' max_level = 5 * current_level = 1 空格数4个 信号1个 *** current_level = 2 空格数3个 信号3个 ***** current_level = 3 空格数2个 信号5个 ******* current_level = 4 空格数1个 信号7个 ********* current_level = 5 空格数0个 信号9个 ''' max_level = 10 for current_level in range(1,max_level+1): # 打印空格 for i in range(max_level-current_level): print(' ',end='') # 打印星号 for j in range(2*current_level-1): print('*',end='') print()
二、整型与浮点型
#用途:存qq号,手机号,不带字母的身份证号... #定义方式 age = 18 # age = int(18) # int('dsjfjdsf') # int('1.1') # int只能转纯数字的字符串,小数点都不行
# 进制转换 # 其他进制转10进制 # 二进制转十进制 0,1 # 10 # 1*(2**1) + 0*(2**0) 2 # 八进制转十进制 0-7 # 235 # 2*(8**2) + 3*(8**1) + 5*(8**0) # 十六进制转十进制 0-9 A-F # 217 # 2*(16**2) + 1*(16**1) + 7*(16**0) print(int('1100',2)) # int可以传第二个参数,表示的是第一个参数到底是什么进制 然后转成十进制 print(int('14',8)) #要转换的数组必须要用引号引起来 print(int('c',16)) # 10进制转其他进制 # 10进制转二进制 # print(bin(12)) # 0b1100 0b表示后面的数字是二进制数 # 10进制转八进制 # print(oct(12)) # 0o14 0o表示后面的数字是八进制数 14 >>> 1*(8**1) + 4*(8**0)) # 10进制转16进制 # print(hex(12)) # 0xc 0x表示后面的数字是十六进制数
# 可变类型与不可变类型 """ 可变类型:值改变的情况下,id不变,说明你改的是原值 不可变类型:值改变的情况下,id一定变 """ x = 10 print(id(x)) x = 11 print(id(x))
# salary = 1.1 # float(1.1) res = float('1.11') print(type(res)) a = float('1') print(type(a)) #int只能将纯数字的字符串转换成整型,而float既可以将纯数字的字符串转换成浮点型,也可以将带小数点和数字的字符串转换成浮点型
三、字符串
#用途:描述性 #定义方式:'',"","""""" # s = 'hello baby' # str('hello baby') # s1 = str([1,2,3,4]) # print(type(s1)) # s2 = str({'name':'jason','password':123}) # print(type(s2))
#1、按索引取值(正向取+反向取) :只能取 # s = 'hello big baby~' # print(s[0]) #2、切片(顾头不顾尾,步长):从一个大的字符串中截取一段新的小字符串 # 左边的固定就是头,右边固定就是位 没有说按数字来分头尾 # print(s[0:5]) # hello # print(s[0:10:1]) # hello 步长不写默认是1 # print(s[0:10:2]) # 步长表示隔几个取一个 # 了解负数取值 # print(s[-1]) # print(s[0:5:-2]) # 切片取值默认是从左往右的 # print(s[5:0:-1]) # 切片取值默认是从左往右的 # print(s[-1:-10:-1]) #3、长度len:统计的是字符串中字符的个数 # s1 = ' ' # print(len(s1)) #4、成员运算in和not in: 判断一个子字符串是否存在于一个大的字符串中 # print('egon' in 'egon is dsb and egon is sb') # print('g' in 'egon is dsb and egon is sb') # print('jason' not in 'egon is dsb and egon is sb') #5、去掉字符串左右两边的字符strip,不管中间的 # username = input('>>>:').strip() # if username == 'jason': # print('good job') # strip()默认去除字符串首尾的空格 # 使用内置的方法统一采用 句点符(.) # name1 = 'jason' # name2 = ' jason '.strip() # print(name1 == name2) # name3 = '$$$$$eg$on$$$$' # print(name3.strip('$')) # 了解即可 # name4 = '% ¥#jason&*)' # print(name4.strip('% ¥#)')) # rstrip() lstrip() # name5 = '$$$$jason$$$$' # print(name5.lstrip('$')) # left左边 # print(name5.rstrip('$')) # right右边 #6、切分split:针对按照某种分隔符组织的字符串,可以用split将其切分成列表,进而进行取值 # data = 'jaso n|123| handsome' # print(data.split('|')) # username,password,info = data.split('|') # print(username,password,info) # 强调:split切分出来的数据类型是一个列表 # print(data.split('o')) # 切割的顺序其实从左往右的 # print(data.split('o',1)) # 切割的顺序其实从左往右的 # print(data.rsplit('o',1)) # 切割的顺序其实从左往右的 # 如果不指定那么split和rsplit效果是一样 #7、循环 # for i in data: # print(i) # 需要你掌握的 #1、strip,lstrip,rstrip #2、lower,upper # s = 'JaS1oN' # res = s.lower() # print(res) # print(s) # print(s.upper()) # print(s) # 调用字符串的方法并没有改变字符串本身 #3、startswith,endswith # s1 = 'egon is dsb' # print(s1.startswith('e')) # 判断字符串是否以什么什么开头 # print(s1.endswith('n')) # 判断字符串是否以什么什么结尾 #4、format的三种玩法(python推荐使用format做格式化输出) # 第一种 按位置占位 跟%s原理一致 # str1 = 'my name is {} my age is {}'.format('jason',18) # str1 = 'my name is {} my age is {}'.format(18,'jason',) # print(str1) # 第二种 按索引占位 # str1 = 'my {1} name is {0} my {0} age is {0}'.format('egon',18) # print(str1) # 第三种 指名道姓占位(关键字传参) # str1 = 'my {name} name is {age} my {name} age is {name}'.format(name='jason',age=18) # # print(str1) #5、split,rsplit #6、join # data = 'jason|123|handsome' # res_list = data.split('|') # print(res_list) # # res_str = '$'.join(res_list) # 将容器类型中的多个元素通过指定字符拼接成一个字符串 # print(res_str) # l = ['1','a','b'] # res = '|'.join(l) # print(res) #7、replace # str = 'egon is dsb and egon is sb he has a BENZ' # res = str.replace('egon','kevin',1) # print(res) # print(str) #8、isdigit # 判断字符串中包含的是否为纯数字 # while True: # age = input('>>>:') # if age.isdigit(): # age = int(age) # if age > 28: # print('阿姨好') # else: # print('你他妈的能不能好好输') # 需要了解的内置方法 #1、find,rfind,index,rindex,count s = 'kevin is dsb o and kevin is sb' # print(s.find('dsb')) # 返回的是d字符所在的索引值 # print(s.find('xxx')) # 找不到的时候不报错返回的是-1 # print(s.find('i',0,3)) # 还可以通过索引来限制查找范围 # print(s.index('o')) # 返回所传字符所在的索引值 # print(s.index('i',0,3)) # 返回所传字符所在的索引值 # print(s.count('n')) # 统计字符出现的次数 #2、center,ljust,rjust,zfill s9 = 'jason' # print(s9.center(12,'*')) # print(s9.ljust(40,'$')) # print(s9.rjust(40,'$')) # print(s9.rjust(40,' ')) # print(s9.zfill(40)) #3、expandtabs # s10 = 'a bc' # print(s10.expandtabs(100)) #4、captalize,swapcase,title # s12 = 'hElLo WoRLD sH10' # print(s12.capitalize()) # Hello world 首字母大写 # print(s12.swapcase()) # 大小写互换 # print(s12.title()) # 每个单词的首字母大小 #5、is数字系列 num1=b'4' #bytes num2=u'4' #unicode,python3中无需加u就是unicode num3='壹' #中文数字 num4='Ⅳ' #罗马数字 # ''.isnumeric(): unicode,中文数字,罗马数字 只要是表示数字都识别 print(num2.isnumeric()) print(num3.isnumeric()) print(num4.isnumeric()) # ''.isdecimal(): unicode 只识别普通的阿拉伯数字 print(num2.isdecimal()) print(num3.isdecimal()) print(num4.isdecimal()) # ''.isdigit() :bytes,unicode 通常情况下使用isdigit就已经满足需求了 print(num1.isdigit()) print(num2.isdigit()) print(num3.isdigit()) print(num4.isdigit())
四、列表
#作用:多个装备,多个爱好,多门课程,多个女朋友等 #定义:[]内可以有多个任意类型的值,逗号分隔 # my_girl_friends=['alex','wupeiqi','yuanhao',4,5] #本质my_girl_friends=list([...]) # 或 # l=list('abc') # l1=list({'name':'jason','password':'123'}) # print(l1) # list内部原理就是for循环取值 然后一个个塞到列表中去 #优先掌握的操作: #1、按索引存取值(正向存取+反向存取):即可存也可以取 # l = [1,2,3,4] # print(l[0:4:1]) # print(l[0::]) # print(l[5::-1]) # print(id(l)) # l[0] = 69 # print(id(l)) # print(l) #2、切片(顾头不顾尾,步长) l = [11,22,33,44,55] l1 = [99,88,77,66] # [11,22,33,44,55,99,88,77,66] # 1.尾部添加一个66 # l.append(66) # 注意append值能将被添加的数据当作列表的一个元素 # print(l) # 2.任意位置添加元素 # l.insert(2,96) # 通过索引在任意位置添加元素 # print(l) # 注意insert值能将被添加的数据当作列表的一个元素 # 3.添加容器类型数据 # l.append(l1) # l.insert(-1,l1) # l.extend(l1) # 内部原理for循环l1一个个追加到列表的尾部 # l.extend([1,]) # print(l) #3、长度 # print(len(l)) #4、成员运算in和not in # print( 444 in l) #5、往列表中添加元素(******) # append # insert # extend #6、删除 # print(l) # del l[2] # del适用于所有的删除操作 # print(l) # res1 = l.pop() # 尾部弹出 # res2 = l.pop() # res3 = l.pop() # print(res1,res2,res3) # res1 = l.pop(0) # 可以指定索引 按照索引弹出元素 # print(res1) # res = l.remove(33) # 指定要删除的元素的值 # print(l) # print(res) # s = 'haha' # print(s) # del s # print(s) #7、循环 for i in l: print(i)