python之路day02--格式化输出、初始编码、运算符
格式化输出
格式化输出替换字符串.字符串中%占位符,
,%%s就是代表百分号,不代表占位符
s 字符串 string
d 数字 dight
name = input('请输入你的名字:')
age = input('请输入你的年龄:')
home = input('请输入你的城市:')
msg= '''
---------info of %s--------
name:%s
age:%s
home:%s
-----------end-----------
''' % (name,name,age,home)
print(msg)
while else
当while循环被break打断了就不会走esle(不被打断会走else,固定搭配)
count =0
while count<=5:
count+=1
if count==3:
break
print(count)
else:
print('循环正常执行完成啦~')
print('-----out of while loop-----')
初始编码初始编码
电脑的传输,还有储存的实际上都是二进制0101010101
美国Ascii码:ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符
8位二进制(2**8 256种可能字符足够使用)
最左边是0(预留的一位)
中文:9W多字
为了解决全球化的文件问题,创建了万国码,unicode
最开始:
一个字节(byte),8位(bit),表示所有的英文,特殊字符,数字等等
两个字节,16位表示一个中文,2**16=65536,不够用。
unicode用四个字节表示,32位表示一个中文
4个字节太浪费了升级版utf-8: 3个字节表示一个中文
utf-8 最少8位来表示一个字节。 英文 一个字节 8位
欧洲 两个字节 16位
中文 三个字节 24位
python2默认是ASCII码
python3默认是utf-8
GBK是国内使用的,只能用于中文和ASCII码中的文字。 中文2个字节,英文1个字节表示。
编码转换:
GBK是基于ASCII码升级的
utf-8 是基于unicode,unicode是基于ASCII码升级
所以UTF-8要转为GBK,要先转为unicode在进行转换。
运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算、成员运算
算数运算
以下假设变量:a=10,b=20
比较运算
以下假设变量:a=10,b=20
赋值运算
以下假设变量:a=10,b=20
逻辑运算
针对逻辑运算的进一步研究:(前后有比较的结果只有True、false)
在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。
例题:
or:布尔"或" 一个为True就为True
and:布尔"与" 两个为True才为True
not:布尔"非" 取反
1.判断下列逻辑语句的True,False。
1)逻辑运算符前后是比较的时候,返回 True or False
print(3>4 or 4<3 and 1==1 ) #F
print(1 < 2 and 3 < 4 or 1>2) #T
print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) #T
print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) #F
print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # F or F and T or F :F
print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) #F or F and T or F: F
2)逻辑运算符前后是数字的时候,返回数值
ps:数据类型转换
int --> bool 非零转换为bool为True, 0转换为bool为False
print(bool(1)) #True
print(bool(0)) #False
bool--->int True为1,, False为0
print(int(True)) # 1
print(int(False)) # 0
x or y x为非0,即为T,返回x ,x为0,返回y
and 与 or 相反,记住一个就可以了
print(1 or 2) #1
print(0 or 2) #2
相关练习题
print(2 or 100 or 23) #2
print(0 or 4 and 3 or 2) #3
print(2 or 1 <3) #2 前面为数字的按照数字,x为T,返回x,机器是从左至右处理
print(0 or 5 <4)#false x为F,返回y y为False
print(5 < 4 or 3)#3 x为F ,返回y
print(5 > 4 or 3)#T x为T,返回x
print(2 or 1 <3 and 2) #2
print(1 > 2 and 3 or 4 and 3<2) #False
ps:
1-2+3-4...+99 ,求除88外的和
count =1
sum =0
while count < 100:
if count == 88:
count+=1
continue #跳到行首 while
elif count % 2 ==1:
sum +=count
else:
sum -=count
count+=1
print(sum)
#if else
i = input('数字')
if i == 2:
print('111')
if i ==3:
print('222')
else:
print('333')
第一个if 是一个单独的判断语句,和后面的不是组合
用户登录(三次输错机会)且每次输错时显示错误次数(提示使用字符串格式化)
i=1
while i <=3:
name = input('请输入你的用户名:')
password = input('请输入你的密码:')
if name == 'zy' and password =='pass':
print('----登录成功!----')
break
if i == 1 and name != 'zy' or password != 'pass':
print('登录失败%s次了' % i)
print('还有'+str(3-i)+'次机会')
i +=1
else:
print('你真是个笨比')