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("我执行完毕了")
同理,for 循环 和 while 循环的情况一致。
1 if __name__ == '__main__': 2 for i in range(10): 3 print(i) 4 else: 5 print("我执行完了")
1 if __name__ == '__main__': 2 for i in range(10): 3 print(i) 4 if i == 5: 5 break 6 else: 7 print("我执行完了")
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)
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()