1、应用程序运行过程

宏观上: python2源码不标准、混乱、重复代码太多
python3 统一、标准、去除重复代码
语言类型:
编译性:一次性将所有程序编译成二进制文件
缺点:开放效率低、不能跨平台
优点:执行速度快
例如:C语言、C++等等
解释性:当程序执行时,一行一行的解释
优点:开发效率高、可可以跨平台
缺点:运行速度慢
例如:python、php等等
python是一门动态解释性的强类型定义语言

python2中需要添加声明为utf-8
#_*-_encoding:utf-8 _*_
变量
1、就是将一些运算的中间结果暂存到内存中,便于后续代码调用
2、必须由字母、数字、下划线任意组合,切不能数字开头不能使用python中的关键字
3、变量名称具有可描述性、建议不能是中文
常量
1、一直不变的量
数据类型
数字:int 123
print(100,type(100)) #int 整数类型
print(‘100’,type(‘100’))#str 字符串类型(python中单、双引号中内容都是字符串)
+(加)、-(减)、*(乘)、/(除)、%(取余)
字符串srt可以相加进行拼接:print(‘帅哥’+‘美女’)
字符串可以与数字相乘:print(‘坚持’*8)
字符串变量涉及换行:
msg = “”“
这是一段描述
这是二段描述
”“”
print(msg)
布尔值(bool):真(True)或者假(False)
print(True,type(True))
用户交互
1、等待输入
2、将你输入的内容赋值给前面的变量
3、引用input变量的值或输出
4、input输入的内容都是字符串
name = input(‘请输入你的名字’)
age = input(‘请输入你的年龄’)
print(‘我的名字是:’+name,’我的年龄‘+age‘岁’)
条件语句:if
if 条件:
结果
else
结果
例子:
if 5 > 4 :
print(6666)
else
print(7777)
例子2:
num = input(‘请输入您的数字:’)
if num == ‘1’:
print(‘一起玩’)
elif num == ‘2’:
print(‘一起喝酒’)
elif num == ‘3’:
print(‘一起吃饭’)
else:
print(‘猜错了’)
例子3:
num = int(input(‘请输入您的数字:’))
if num == 1:
print(‘一起玩’)
elif num == 2:
print(‘一起喝酒’)
elif num == 3:
print(‘一起吃饭’)
else:
print(‘猜错了’)
例子4:
if name == ‘小二’:
if age == ‘18’:
print(666)
else:
print(333)
else:
print(‘错了。。。’)
while语句
例子:
print('111')
while True:
print('我们不一样')
print('在人间')
print('样')
print('222')
例子2
count = 1
flag = True
while flag:
print(count)
count = conut + 1
if conut > 100:
flag = False
例子3:
count = 1
while count <= 100:
print(count)
count = count + 1
例子4:
count = 1
sum = 0
while conut <= 100:
sum = sum + count
count = count + 1
例子5:
print('11')
while True:
print('222')
print('333')
break
print('444')
print('abc')
例子6:
print(111)
count = 1
while count < 20 :
print(count)
continue
count = count + 1
例子7:
count = 0
while count <= 100:
count += 1
if count > 5 and count < 95:
continue
print("loop",count)
print("--------out of while loop -------")
#例子输出1-10,7除外 count = 0 while count < 10: count += 1 if count == 7: continue print(count) #例子,输入1-100的奇数 count = 1 while count < 101: if count % 2 == 0: print(count) count += 1 #输出1-100的求和 sum = 0 count = 1 while count <= 100: sum += count count += 1 print(sum) #例子计算1-100,1-2+3-4+5...的和 sum = 0 count = 1 while count < 100: if count % 2 == 0: sum = sum - count else: sum = sum + count count += 1 print(sum) #用户登录三次机会重试 i = 0 while i < 3: username = input('请输入账号:') password = int(input('请输入密码:')) if username == '咸鱼哥' and password == 123: print('登录成功') break else: print('登陆失败,请重试') i += 1
ps:while else 当while循环被break打断,就不会执行else的结果
格式化输出
%s 占位符
%d 整数类型
%% 百分号输出
#格式化输出 name = input('请输入名字') age = input('请输入年龄') height = input('请输入身高') msg = "我叫%s,今年%s岁,身高%s,%"(name,age,height) print(msg) 例子 name = input('请输入姓名:') age = input('请输入年龄:') job = input('请输入工作:') hobbie = input('你的爱好:') msg = ''' --------info of %s ------------ Name : %s Age : %d job : %s Hobbie :%s ----------- end ---------'''%(name,name,int(age),job,hobbie) print(msg)
ps:格式化输出想输出%,需要在之前再添加一个%。
编码
ascii码,只能显示英文,特殊字符,数字
万国码:unicode,最开始16位,中文(亚洲)不够 32位 4字节,占用资源多
解决全球化文字问题创建万国码 unicode 为2的32次方;升级UTF-8
UTF-8:最少用一个字节,8位表示一个字节
欧洲16位,两个字节
亚洲24位,三个字节
gbk:中国国产,只能用于ascii和中文的文字,用两个字节
00000001 代表一个 字节 0 代表1位 2种变化8位,28次方
00000001 8位bit == 1个字节
1024 bit == 1GB
1024 KB == 1MB
1024 MB == 1GB
1024 GB == 1TB
中文9万多字
运算符
#and or not
#优先级()> not >and>or
and == 与
or == 或
not == 非
print(3>4 or 4<3 and 1==1)
print(1<2 and 3<4 or 1>2)
print(2>1 and 3<4 or 4>5 and 2<1)
print(1>2 and 3<4 or 4>5 and 2>1 or 9<8)
print(not 2>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6)
print(1 or 2)
print(2 or 3)
print(0 or 3)
print(0 or 100)
ps: x or y x为非零则返回x
print(bool(2))
print(bool(-2))
print(bool(0))
ps: int ----> bool 非零转换为bool true,0 转换为bool为False; bool转为数字True为1 False为0
#x or y x == True,则返回x
print(1 or 2 )
print(3 or 2 )
print(0 or 2 )
print(0 or 100 )
#x and y x == True,则返回y
print(1 and 2)
print(0 and 2)
用户登陆3次机会,错误重试
username = "zhangsan"
password = "123456"
i = 3
while i > 0:
name = input("请输入用户名:")
i -= 1
if name == username:
pw = input("输入密码:")
if name == username and password == pw:
print("登录成功,请稍后...")
print('''
username: %s
password: %s
'''%(name,password))
# print("你还有%s机会" % (i))
break
else:
if pw != password or name != username:
print("用户名或密码输入错误,你还有%s机会" % (i))
if i == -1:
print ("重试次数已用完")
break
else:
print("用户名输入错误 ,请重新输入")
print("你还有%s机会"%(i))
continue
#str相关字符处理
数据类型
int 1,2,3,用于计算
bool True,False 用户判断
str 字符串,存储少量数据,进行操作
‘fasgag,二哥,fdisk,李四’
list 存储大量的数据
[1,2,3,4'泰格,[1,2,3]']
元祖 只读
(1,2,3'第三方')
dict 字典{‘name’:'云姐',‘age’:LG}
集合 {1,2,3,4‘and’}
# 字符串的操作 # 首字母大写 s = 'alexWUsir' s1 = s.capitalize() #首字母大写 print(s1) #全大写,全小写 s2 = s.upper() #全大写 s3 = s.lower() #全小写 print(s2,s3) #不区分大小写 s_str = 'acEQ' you_input = input("请输入验证码,不区分大小写:") if s_str.upper() == you_input.upper(): print('输入成功') else: print('请重新输入') # 反转大小写 s4 = s.swapcase() #大小写反转 print(s4) #隔开的单词首字母大写,单词以大写字符开头,其余所有字符都以大写字母开头 s = 'alex*egon-wusir' s4 = s.title() print(s4) #居中,空白填充 s = 'alexWusir' s5 = s.center(20,'~') print(s5) #如果未指定制表符大小,则假定制表符大小为 8 个字符。 s = 'aqwl\tsir' s6 = s.expandtabs() print(s6) #公共方法 #返回容器中的项数 s = 'cjdsigisnisands' l = len(s) print(l) #如果 al 以指定的前缀开头,则返回 True,否则返回 False。 s = 'alexWUsir' s7 = s.startswith('al') #是否包含al s8 = s.startswith('e',2,5) #从第三位开始5位结束是否包含e print(s7,s8) #find通过元素,找对应字符的索引,找不到返回-1 #index通过元素,找对应字符的索引,找不到报错 s9 = s.find('WU') print(s9,type(s9)) #strip 默认删除前后空格 s = ' alexWUsir%' s10 = s.strip('%') print(s10) username = input('请输入名字:').strip() if username == '张三': print('张三发财了') #strip rstrip lstrrip s = ' *a%1exWUsi* r%' s11 = s.strip(' %*') #删除前后包含的字符 print(s11) #返回子字符串子项中非重叠出现的次数 s = 'alexaa wusirl' s12 = s.count('a') print(s12) #split str ----> list,字符串转化列表 s = ':alexaa:wusirl:cdsag' s13 = s.split(':') print(s13) # format 格式化输入 s = '我叫{},今年{},爱好{}'.format('太白', '36', '游戏') print(s) s = '我叫{0},今年{1},爱好{2},名字{0}'.format('太白', '36', '游戏') print(s) s = '我叫{name},今年{age},爱好{hobby},名字{name}'.format(age=18, name='太白', hobby='游戏') print(s) #替换字符串 s = '侧哈斯公司' s14 = s.replace('公司','市场',1) print(s14) #for 有限循环 s = 'jcidsnagi' for i in s: print(i) s = 'fasg苍井空dsc' if '苍井空' in s: print("您的评论包含敏感词")
#数据类型转换
#int 在二进制中表示自身所需的位数。 i = 2 print(i.bit_length()) #int ----> str i = 1 s = str(i) print(type(s)) #str ----> int s = '123' i = int(s) print(type(i)) #int ------> bool #非零为True i = 3 b = bool(i) print(type(b)) #bool ---> int #True 1 #False 0 while 1: #效率高 pass #str ----> bool #s = "0" ---> False #非空字符串都是True #s = ”0“ -----> True s if s: print('你输入的为空,请重新输入') else: pass
字符串取值
#字符串的索引与切片, s = "ABCDEFG" #索引 s1 = s[0] #取第一个字符从0开始 print(s1) s1 = s[-1] #取最后一个字符 print(s1) #切片:顾头不顾尾 s2 = s[0:4] #取0-3个字符 print(s2) s3 = s[0:] #取所有字符;s[:]效果相同。[0:0]为空。 print(s3) #按步长取值 s4 = s[0:5:2] print(s4) s5 = s[4:0:-1] #反向取值,顾头不固定 print(s5) s6 = s[4::-1] #反向取值,到0 print(s6) s7 = s[-1::-1] #反向输出全部,与s[::-1]效果相同 print(s7)
ascii:字母,数字,特殊字符:一个字节,8位
Unicode:16位,两个字节,升级32位,四个字节
utf-8:最少一个字节8位表示,英文字母8位一个字节
欧洲16位,2个字节
中文24位,3个字节
gdk:中文2个字节,英文一个字节
import sys print(sys.maxunicode)
#使用for与while 输出字符所有元素
s = 'sdagaha'
for i in s:
print(i)
print("----------------")
index = 0
while 1:
print(s[index])
index += 1
if index == len(s):
break
#规范输入进行分割计算:5+9或5+ 9或5 + 9
content = input('>>> ').strip()
con1=content.split('+')
num = 0
for i in con1:
print(i)
num += int(i)
print(num)
content = input('>>> ').strip()
index = content.find("+")
a = int(content[0:index])
print(a)
b = int(content[index+1:])
print(b)
print(a + b)
#输入内容,打印出数字的个数
s = input("请输入:")
count = 0
for i in s:
if i.isdigit():
count += 1
print(count)
列表增删改查
列表 li = ['张三','李四','王二','[123]'] l1 = li[0] print(l1) l2 = li[0:3] print(l2) l3 = li[-1] print(l3) 列表增加 li = ['张三','李四','王二','[123]'] li.append('日天') li.append(1) print(li) while 1: username = input('>>>') if username.strip().upper() == 'Q': break else: li.append(username) print(li) li.insert(4,'春哥') print(li) #li.extend('二哥') li.extend([1,2,3]) print(li) 删除 li = ['张三','李四','王二','[123]'] name = li.pop() #默认删除最后一个 name = li.pop(0) #指定删除一个元素 print(name,li) li = ['张三','李四','王二','[123]'] li.remove('张三') #删除指定元素 print(li) li.clear() #清空 print(li) del li #删除列表 del li[2:] #切片删除 print(li) 改 li = ['张三','李四','王二','[123]'] li[0] = '王五' #指定修改 li[0:3] = '云姐abc1' #按元素改掉指定位置 li[0:3] = [1,2,3,'春哥','咸鱼哥','帅哥'] #切片改指定元素 print(li) 查 li = ['张三','李四','王二','[123]'] for i in li: print(i) print(li[0:2]) 公共方法 li = ['张三','李四','王二','[123]','张三'] l = len(li) #输出列表元素个数 print(l) name = li.count('张三') #输出列表中包含的元素次数 print(name) print(li.index('李四')) #列表中是否包含相关元素,存在返回1,不存在报错 li = [1,3,4,2,5] li.sort() #正向排序 li.sort(reverse=True) #反向排序 li.reverse() #反转排序 print(li)
#元祖为只读列表,可循环,可切片
#儿子不能改,孙子可能可以改
tu = (1,2,3,'alex',[2,3,4,'taibai'],'cgon')
print(tu[3])
print(tu[0:4])
for i in tu:
print(i)
tu[4][3]=tu[4][3].upper()
print(tu)
tu[4].append(('sb'))
print(tu)
s = 'alex'
s1 = '_'.join(s) #指定分割字符串
print(s1)
range
for i in range(10):
print(i)
for i in range(0,10):
print(i)
for i in range(1,10,2):
print(i)
for i in range(10,0,-2):
print(i)

浙公网安备 33010602011771号