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('你真是个笨比')

 

 


 
posted @ 2018-12-27 14:30  hanfe1  阅读(288)  评论(0编辑  收藏  举报