day 2 - 逻辑运算

1. 初识编码

最早的'密码本' ascii 涵盖了英文字母大小写,特殊字符,数字。

ascii 只能表示256种可能,太少,
后来创办了万国码 unicode
16表示一个字符不行,32位表示一个字符。
  A 01000001010000010100000101000001
  B 01000010010000100100001001000010
  我 01000010010000100100001001000010
Unicode 升级 utf-8 utf-16 utf-32
  8位 = 1字节bytes
  utf-8 一个字符最少用8位去表示,英文用8位 一个字节
  欧洲文字用16位去表示 两个字节
  中文用24 位去表示 三个字节
  utf-16 一个字符最少用16位去表示

gbk 中国人自己发明的,一个中文用两个字节 16位去表示。

编码转换

#str --->byte  encode 编码
s = '亦双弓'
b = s.encode('utf-8')
print(b)
#byte --->str decode 解码
s1 = b.decode('utf-8')
print(s1)


#字母数字特殊字符的编码 utf-8 与 gbk 可以互转
s = 'abc##123'
b = s.encode('utf-8')
print(b)
#byte --->str decode 解码
s1 = b.decode('gbk')
print(s1)

 

 

2.单位转换

  1bit 8bit = 1bytes
  1byte 1024byte = 1KB
  1KB 1024kb = 1MB
  1MB 1024MB = 1GB
  1GB 1024GB = 1TB

3.格式化输出

 

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)

在输出语句中有时会使用到 % ,这时需要使用 %% 来转义,如下:

name = input('请输入姓名')
age = input('请输入年龄')
height = input('请输入身高')
msg = "我叫%s,今年%s 身高 %s 学习进度为3%%s" %(name,age,height)
print(msg)

4.逻辑运算

and or not
优先级,()> not > and > or

  not –表示取反运算。

  and –表示取与运算。

  or –表示取或运算。

print(1<4 and 8>7)
print(1<4 and 8>9)
print(2 > 1 and 1 < 4 or 2 < 3 and 9 > 6 or 2 < 4 and 3 < 2)


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
print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)    #F

x or y,x 为非零,则返回x,否则返回 y 

print(1 or 2)   #1
print(3 or 2)   #3
print(0 or 2)   #2
print(0 or 100)   #100
print(2 or 100 or 3 or 4)  # 2
print(0 or 4 and 3 or 2)    #3

x and y,x True,则返回y

print(1 and 2)  #2
print(0 and 2)  #0
print(2 or 1 < 3)   #2
print(2 < 3)    #T
print(3 > 1 or 2 and 2)     #T
print(2 or 1 < 3 and 2)     #2
print (1 > 2 and 3 or 4 and 3 < 2)  #F

int  ----> bool   非零转换成bool True   0 转换成bool 是False

print(bool(2))
print(bool(-2))
print(bool(0))
#bool --->int
print(int(True))   # 1
print(int(False))  # 0

5. while  else循环

count = 0
while count <= 5 :
    count += 1
    if count == 3:break
    print("Loop",count)
else:
    print("循环正常执行完啦")
print("-----out of while loop ------")

相关练习

1.判断一下输出

print(5<4 or 6)
print(5>4 or 6)
print(5<4 and 6)
print(5>4 and 6)

 

2. 计算 1-2+3...+99 中除88以外的数总和

自己写的第一种好理解,第三种逻辑很新颖,值得学习

#方法一
count=1
sum=0
while count <=99:
    if count%2==1:
        sum = sum + count
    elif count == 88:
            pass
    else:
        sum = sum - count
    count += 1
print (sum)

#方法二
count=1
sum=0
while count <=99:
    if count == 88:
        count += 1
        continue
    if count%2==1:
        sum = sum + count
    else:
        sum = sum - count
    count +=1
print (sum)


i = input('数字')
if i=='2':
    print(1212)
if i =='2':
    print(11111)
else:
    print(666)


#方法三
i=0
j=-1
sum = 0
while i<99:
    i += 1
    j = -j
    if i== 88:
        continue
    else:
        sum +=i*j
print(sum)

3. ⽤户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)

#方法一:
i=0
j=2
while i<3:
    user=input("请输入账号:")
    password=input("请输入密码:" )
    if user=='ysg' and password=='123':
        print('欢迎回来'+user)
        break
    elif i==2:
        print("超出登录次数,账号已冻结")
    else:
        print('---输入错误,还剩余' + str(j) + '次机会,请重新输入---')
    i += 1
    j =j-1


#方法二:
i=2
while i>=0:
    user=input("请输入账号:")
    password=input("请输入密码:" )
    if user=='ysg' and password=='123':
        print('欢迎回来%s'%(user))
        break
    elif i==0:
        print("超出登录次数,账号已冻结")
    else:
        print('---输入错误,还剩余' + str(i) + '次机会,请重新输入---')
    i -= 1


#方法三
i=2
while i>=0:
    user=input("请输入账号:")
    password=input("请输入密码:" )
    if user=='ysg' and password=='123':
        print('欢迎回来%s'%(user))
        break
    elif i==0:
        print("超出登录次数,账号已冻结")
        again=input("再试一次?Y or N:")
        if(again=='Y'):
            i=3
    else:
        print('---输入错误,还剩余' + str(i) + '次机会,请重新输入---')
    i -= 1
#else:
#    print("还在试???")

 

posted @ 2018-09-23 11:31  亦双弓  阅读(304)  评论(2编辑  收藏  举报