返回顶部

Python中文乱码:

在Python3 是不会出现中文乱码的情况的。因为Python3 已经是默认Unicode 编码(utf-8) 。

但是在Python2 中是不支持中文的,解决方法我们都知道是  # -*- encoding = utf-8 -*-  

 

下面说下什么是中文乱码:

首先要知道 1字节=8bit位。  

 我们还要知道,储存器只能存储数字。 我们如果想要存储字符,就要想先将相应的字符变为数字。

 

于是问题就来了。

1,该按照怎样的规范把字符转换成数字? 

2,按照怎样的方式存储数字(例如:用多少个字节?)

例如: 将” I am Iron man! “ 这句话存到计算机中。 I 是应该变为数字10 还是数字20 呢? 变为10 20 之后,是用几个字节来存放呢?

 

这时候,字符编码 就出现了,它解决了上述的两个问题,它规定了 字符和对应数字转换的规范 以及 用几个字节存储这个数字

 

下面有三个概念:字符,字符集,字符码

I,a ,m 等都是字符  。

所有的字符加起来 就是 字符集。    

字符对应的数字 是 字符码

 

不同字符编码:

当今,计算机中有不同的字符编码。

它们之间的规范 以及 存储对应数字的字节可能是不同的。 所以,如果不同字符编码之间做转换时,就可能出现乱码。

 

比如说,存入的时候是用ASCII 存入的。例如 I (73) 。但是,取出的时候用其他的字符编码。可能取出的就是 “你”了, 就出现乱码了。

 

而且,不同编码的第二个要素也是不同的。它们用于存储对应数字的字节数不同。 这也是导致乱码产生的原因之一。

 

你可能会问,那搞一个编码不就可以了吗,为什么搞这么多编码呢?

确实是这样,但是计算机的发展有它自己的历程,最开始的计算机发展是在美国,它们使用的是英语,总共有26个字母,10个数字,还有一些符号。它们使用一个字节可以完全的满足它们的需求。 可是到我们汉语就不行了,我们汉字有很多。  一个字节根本不够。所以我们国家有我们自己的编码GBK (它使用两个字节存储一个字符码。)

其他的国家也有它们自己的编码,韩国,日本等。  

 

为啥会有这么多字符编码?

 

 

注:utf-8 是可变的,它可能是一个字节,两个字节,三个字节。  

 

Python 中的open() 函数在 windows平台上,默认使用的编码方式是 GBK!!

在Windows上用记事本写的a.txt 文件默认是UTF8编码格式! 

在Python中使用open()函数时候,要注意 参数encoding = !!!

Python 基础:

 

 

 

 

 

 

 

 

 

 

 

面试题:关于 静态类型, 动态类型  和 强类型,弱类型 :

 

 

静态,动态之分是 看是否后期可以动态修改。c后期的类型不能改,所以它是静态。Python后期的类型可以修改 ,故动态类型。

 

强,弱类型之分是 看不同类型之间是否可以 运算。 js 中可以 "a" +1  = “a1” ,所以它是弱类型,Python中则直接报错。故Python是强类型的语言。

 

总结:Python是动态类型,强类型的语言。  

 

 

运算符:

 

 

 

 

 

 

 1 #并不是所有的逻辑表达式的结果一定是 True 和 False
 2 print(1 or False)  #1  看到1就可以判断了,故返回1
 3 print(1 or 3) # 1
 4 print(True or 1) # True  看到True就可以判断了,故返回True
 5 print(0 or False) #False
 6 print(0 or False or 6) #它先算前两个 得到print(False or 6) 于是输出6
 7 print(1 or False or 6) #它先算前两个 得到print(1 or 6) 于是输出1
 8 print(1 or False and 6) #它先算后两个 得到print(1 or False) 于是输出1  #and 优先级高于 or  
 9 
10 print(0 and True) #0
11 print(1 and 3) #3
逻辑运算符注意点!!!

 

程序的输入和输出:

四种输入方式:

 

三种输出方式:

 

 

 

总结:

Python3 中的input 相当于 python2 中的raw_input () 它把里面的东西看做是 字符串。 

而,Python2 中的input 是用户输入的内容看做是 代码

 

Python3只有Input()  而且 ,它相当于Python2 中的raw_input()  。 

 

Python的 输出:

 

end 默认是 ‘\n’ 

file默认是标准的输出。  可以改为一个文件句柄,然后print()输出就是输出到改文件中了。 

flush 如果写成flush = True 就是立即输出 。

 

将缓冲区的内容刷出去的几个条件。

其中有个条件就是print()中有个换行

或者程序执行完毕

或者flush = True .

看代码:

import time

print("勤奋的健身卡发的说法" ,end="") #end 不是换行,此时就不会触发刷出缓冲区操作了,所以此时 该话不会立即出现,而是等待3s 到程序执行结束时刷出 缓冲区!
time.sleep(3)
不会立即显示!
1 import time
2 
3 print("勤奋的健身卡发的说法" ) #end 是换行,此时就会立马触发刷出缓冲区操作了,所以此时 该话会立即出现
4 time.sleep(3)
会立即显示!!!

 

Python的占位格式符:

 

完整的形式:

 

中括号可以省略。

name的用法:

 

 

width的用法:

 

 

flag的用法:

 

总结:

 

 

Python 小节案例:

 

1,先要进行功能分析:

 

2,分析各个功能是否有技术难点:

输入没有难点,就是使用Input

关于体脂率:

 

3,然后就可以进行实际代码编程了。

 

Python分支语句:

单分支if 

二分支if else 

多分支if elif else 

 

Python分支中的注意点:

Python 中没有 switch case  

 

switch case 是用来进行多分支的!

while循环/ for循环  与else 连用:

 

1 if __name__ == '__main__':
2     num = 0
3     while num < 10:
4         print(num)
5         num += 1
6     else:
7         print("我执行完毕了")
代码

 

:它这个else 是个奖励,如果将所有的循环都顺利执行完毕(没碰到break),这时就执行else 

1 if __name__ == '__main__':
2     num = 0
3     while num < 10:
4         print(num)
5         num += 1
6         if num == 5:
7             break
8     else:
9         print("我执行完毕了")
此时由于在循环中碰到了break ,所以就不会获得奖励else了。

 

同理,for 循环 和 while 循环的情况一致。

1 if __name__ == '__main__':
2     for i in range(10):
3         print(i)
4     else:
5         print("我执行完了")
获得奖励else ,执行else语句。
1 if __name__ == '__main__':
2     for i in range(10):
3         print(i)
4         if i == 5:
5             break
6     else:
7         print("我执行完了")
不会执行else语句。

for 循环 反转字符串:

1 if __name__ == '__main__':
2     name = "Hello world! I love you!"
3     res = ""
4     for c in name:
5         res = c +res  #把取出的字符 放前面。。。
6     print(res)  
View Code

 

Python循环--99乘法表:

1 if __name__ == '__main__':
2     for i in range(1,10):
3         for j in range(1,10):
4             if i>= j:
5                 print("%d * %d = %d  "%(j,i,i*j),end = " ")
6         print()
for循环 99 乘法表

 

 

 

 

 

 

 

 posted on 2019-11-12 10:57  zcb070812  阅读(211)  评论(0编辑  收藏  举报