day3笔记

一、内容回顾  

1.break:停止当前循环,后面的程序不会运行,跳出循环。

  跳出while循环:1,改变条件。2.break
  
  continue:结束本次循环,继续下一次循环。

2.格式化输出:%%可以在格式化中打印% 

二、作业讲解

#-*- encoding:utf-8 -*-
__author__ = 'Administrator'
#5,写代码计算1-2+3....+99除了88以外所有数的和。

# count = 1
# sum = 0
# while count < 100:
#     if count % 2 == 1:
#         sum = sum + count
#     elif count == 88:
#         count += 1
#         continue
#     else:
#         sum = sum - count
#     count += 1
# print(sum)
'''
6,用户登录(三次机会)并且每次输错时显示剩余登录机会(用到字符串格式化。)
第六题完成的同学可做升级版:
当剩余机会为0时,可以询问用户是否在试试,如果用户同意在尝试,那就将在给他三次机会,可一直继续。
'''
username = "taibai"
password = '123'
i = 0
while i < 3:
    name = input('请输入你的用户名:')
    pwd = input('请输入你的密码:')
    if username == name and password == pwd:
        print('您登录成功')
        break
    else:
        print('登录失败,您还有%d次登录机会'%(2-i))
        if (2-i) == 0 :
            result = input('是否还想在试试?Yes')
            if result == 'Yes':
                i = 0
                continue
    i += 1
else:print('要不要脸你')
day2作业

三、初始编码

  ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

 

 

  为了容纳更多国家的语言文字,诞生了unicode ,它用两个字节表示,事实上Unicode对汉字支持不怎么好,这也是没办法的, 简体和繁体总共有六七万个汉字,而UCS-2最多能表示65536个,才六万 多个,所以Unicode只能排除一些几乎不用的汉字,好在常用的简体汉字 也不过七千多个,为了能表示所有汉字,Unicode也有UCS-4规范,就是用 4个字节来编码字符。

  升级版 utf-8 一个中文 3个字节去表示。

  gbk国内使用,一个中文用2个字节。gbk也在不同的发展扩展中

总结:

ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit,8bit可以表示0-2**8-1种变化,即可以表示256个字符

ASCII最初只用了后七位,127个数字,已经完全能够代表键盘上所有的字符了(英文字符/键盘的所有其他字符),后来为了将拉丁文也编码进了ASCII表,将最高位也占用了

#阶段二:为了满足中文和英文,中国人定制了GBK
GBK:2Bytes代表一个中文字符,1Bytes表示一个英文字符
为了满足其他国家,各个国家纷纷定制了自己的编码
日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里

#阶段三:各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。如何解决这个问题呢???

#!!!!!!!!!!!!非常重要!!!!!!!!!!!!
说白了乱码问题的本质就是不统一,如果我们能统一全世界,规定全世界只能使用一种文字符号,然后统一使用一种编码,那么乱码问题将不复存在,
ps:就像当年秦始皇统一中国一样,书同文车同轨,所有的麻烦事全部解决
很明显,上述的假设是不可能成立的。很多地方或老的系统、应用软件仍会采用各种各样的编码,这是历史遗留问题。于是我们必须找出一种解决方案或者说编码方案,需要同时满足:
#1、能够兼容万国字符
#2、与全世界所有的字符编码都有映射关系,这样就可以转换成任意国家的字符编码

这就是unicode(定长), 统一用2Bytes代表一个字符, 虽然2**16-1=65535,但unicode却可以存放100w+个字符,因为unicode存放了与其他编码的映射关系,准确地说unicode并不是一种严格意义上的字符编码表,下载pdf来查看unicode的详情:
链接:https://pan.baidu.com/s/1dEV3RYp

很明显对于通篇都是英文的文本来说,unicode的式无疑是多了一倍的存储空间(二进制最终都是以电或者磁的方式存储到存储介质中的)

于是产生了UTF-8(可变长,全称Unicode Transformation Format),对英文字符只用1Bytes表示,对中文字符用3Bytes,对其他生僻字用更多的Bytes去存


#总结:内存中统一采用unicode,浪费空间来换取可以转换成任意编码(不乱码),硬盘可以采用各种编码,如utf-8,保证存放于硬盘或者基于网络传输的数据量很小,提高传输效率与稳定性。
字符编码

四 、运算符

  and 且,前后为真才为真。or 或,有一为真,就为真。not 非。取反。

print(3 > 4 and 2 <3) F
print(3 > 4 or 2 < 3) T
print(3 > 2 and 2 <4) T
print(3 > 4 or 2 > 3) F
print(not True) F
print(not False) T
print(not 3 > 4) T

优先级:()>not>and>or
同等优先级条件下,从左至右依次计算。
print(4 > 3 or 4 < 3 and 1!=1)
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)
ps:F or F or 9<8                F
print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)
PS :F or F or 7<6               F
print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)
PS:F or F or 7<6             F

ps :
int与bool值之间的转换。
1,bool ----> int
a = int(True)
b = int(False)
print(a,b)
int ---> bool
a = bool(413456)
b = bool(6.5)
c = bool(0)
d = bool(-1)
print(a,b,c,d)
x or y 如果 x 为真,则值为x,否则为y
'''
print(4 or 3)
print(2 or 3)
print(1 or 3)
print(0 or 3)
print(-1 or 3)
'''
x and y 如果 x 为真,则值为y,否则为x
'''
print(4 and 3)
print(2 and 3)
print(1 and 3)
print(0 and 3)
print(-1 and 3)
'''

print(0 and 3 or 4 or 1 or 2)
print(3 or 2>1) 3
print( 2>3 or 3)
print( 2>2 or 0)
print( 2>3 or 3)
in 某个字符串或者其他数据类型中是否含有某个字符串
in not in
s1 = 'abcd'
print('a' in s1)
print('ag' in s1)
print(1 and 'a' in s1)

 

posted on 2017-10-20 18:56  心如沚水  阅读(216)  评论(0编辑  收藏  举报