ab = s[0:2] # 取字符串s中的第一个字符到第三个字符,不包括第三个字符
为什么有编码问题
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这种编码方式被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。
在python3中,默认使用UTF-8 Unicode来进行编码,因此我们可以在python中输入任意形式的Unicode字符串,都不会遇到像python2中遇到的问题(在python2中,需要显式指明该字符串是Unicode字符串)
Python的字符串format
# 指定顺序
template = 'Hello {0}, Hello {1}, Hello {2}, Hello {3}.'
result = template.format('World', 'China', 'Beijing', 'imooc')
print(result) # ==> Hello World, Hello China, Hello Beijing, Hello imooc.
# 指定{}的名字w,c,b,i
template = 'Hello {w}, Hello {c}, Hello {b}, Hello {i}.'
result = template.format(w = 'world', c = 'china', b = 'beijing', i = 'imooc')
比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示:
"I'm OK"
\n表示换行
\t 表示一个制表符
\\表示 \ 字符本身
短路计算
在计算a and b时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
在计算a or b时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
小数点位数
round(num, 2) # ==> 3.33
10//3 # ==> 3
print(3 % 2) # ==> 1 因此3为奇数
《编程必备基础知识》二进制数只使用数字0、1表示,在Python中,二进制整数使用前缀0b表示,比如:0b0110,0b1100。
十六进制数除了0~9十个数字以外,还使用a、b、c、d、e、f,在Python中,十六进制使用前缀0x,比如:0x12ef,0xde2431af。
L = ['Alice', 66, 'Bob', True, 'False', 100] num=0 for item in L: num=num+1 if num % 2==0: print(item)
s = 'ABCD'
for ch in s:
print(ch) # 注意缩进
在上述代码中,ch是在for循环中定义的,意思是把字符串s中的每一个元素依次赋值给ch,然后再把ch打印出来,直到打印出字符串s的最后一个字符为止。
1. 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。
切片需要在中括号[]中填入两个数字,中间用冒号分开,表示子串的开始位置和结束位置,并且这是半闭半开区间,不包括最后的位置
append()方法:在列表元素最后增加新的元素
insert()方法:根据位置号增加元素
pop()方法:默认删除列表的最后一个元素
pop()方法还可以接收一个参数,指定需删除的元素位置
如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示:
如果字符串包含",我们就可以用' '括起来表示:
如果字符串既包含'又包含"怎么办?由于'和"会引起歧义,因此,我们在它前面插入一个\表示这是一个普通字符,不代表字符串的起始,
注意:转义字符 \不计入字符串的内容中。
常用的转义字符还有:
\n表示换行
\t 表示一个制表符
\\表示 \ 字符本身
1、加+ 减- 乘*除/
2、整数和浮点数运算后 ,得到的结果不管小数点后是否有值,结果都变成浮点数了,这是合理的,浮点数可以表达整数的结果,但是整数不能表达浮点数的结果。
3、取模运算% 恰当使用取模运算,可以判断一个数是否为偶数,当一个数对2取模结果为0时,则这个数为偶数,否则为奇数。
4、地板除使用//进行 Python除了普通除法以外,还有一个特殊的除法被称为地板除,对于地板除,得到的结果会忽略纯小数的部分,得到整数的部分,
5、保留小数使用round调用,round(需要保留小数点为的数值,保留的位数)
num = 10 / 3
print(num) # ==> 3.3333333333333335
# 使用round保留两位小数
round(num, 2) # ==> 3.33
print(r''''\"To be,or not to be \":that is the question.\nnWhether it\'s nobler in the mind to suffer.'''')
这样写的话,会造成最后的''''误判,会报错误,要加个空格间隔一下进行区分。
区分后如下:
print(r''''\"To be,or not to be \":that is the question.\nnWhether it\'s nobler in the mind to suffer.' ''')
假如希望输出字符串s中第10个以后的字符,而不是所有字符,这个时候, 我们可以使用continue跳过前面的9个字符。
s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
num = 1
for ch in s:
if num < 10:
num = num + 1
continue # 当num < 10时,跳过后续循环代码,继续下一次循环
print(ch)
num = num + 1
理解:当num < 10为true时,不执行 continue后续的循环; 为false时,执行continue后续的循环。
比如在前面的无限循环里面,只要在恰当的时机,我们使用break跳出循环,也可以求出1~100的和。
num = 1
sum = 0
while True:
if num > 100:
break
sum = sum + num
num = num + 1
print(sum)
理解:当num >100为true时,不执行break后续的循环; 为false时,执行break后续的循环。
num = 1
sum = 0
while True:
if num > 100:
break
sum = sum + num
num = num + 1
print(sum)
break 退出循环
num = 1
sum = 1
while num<=10:
sum=sum*num
num=num+1
print(sum)
利用一个sum变量累加就可以计算出总成绩。
L = [75, 92, 59, 68, 99]
sum = 0.0
for x in L:
sum = sum + x
print(sum / 5)
score = 95
if score < 60:
print('抱歉,考试不及格')
elif score >= 80:
print('恭喜你,拿到优秀的成绩')
elif score >= 90:
print('恭喜你,拿到卓越的成绩')
else:
print('恭喜你,考试及格')
有时候,我们会想获取字符串的一部分(子串),这个时候我们采取切片的方式获取,切片需要在中括号[]中填入两个数字,中间用冒号分开,表示子串的开始位置和结束位置,并且这是半闭半开区间,不包括最后的位置。
ab = s[0:2] # 取字符串s中的第一个字符到第三个字符,不包括第三个字符
print(ab) # ==> AB
为什么有编码问题
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这种编码方式被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。
format来处理字符串,输出不固定的内容。
# 字符串模板
template = 'Hello {}'
# 模板数据内容
world = 'World'
result = template.format(world)
print(result) # ==> Hello World
字符串前面加个前缀r,表示这是一个 raw 字符串,里面的字符就不需要转义了。
例:r'\(~_~)/ \(~_~)/'
但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串。
如果要表示多行字符串,可以用'''...'''表示:
字符串包含' ',用“”括起来表示; 字符串包含“”,用''括起来表示;转义字符 \,表示后面字符为普通字符。
注意:转义字符 \不计入字符串的内容中。
常用的转义字符还有:
\n表示换行
\t 表示一个制表符
\\表示 \ 字符本身
与运算and:只有两个布尔值都为 True 时,计算结果才为 True
或运算or:只要有一个布尔值为 True,计算结果就是 True
非运算not:把True变为False,或者把False变为True:
需要注意的是,not计算的优先级是高于and和or的。
Python数字支持取模运算,使用百分号%表示取模。即为取余数,为0则整除。
Python除了普通除法以外,还有一个特殊的除法被称为地板除,对于地板除,得到的结果会忽略纯小数的部分,得到整数的部分,地板除使用//进行。即取整数部分。
函数round(),为保留小数。例round(23.56,1),结果为23.6。结果应为四舍五入。
整数和浮点数运算后 ,得到的结果不管小数点后是否有值,结果都变成浮点数了,这是合理的,浮点数可以表达整数的结果,但是整数不能表达浮点数的结果。
变量名由大小写英文字母、数字和下划线_组成
变量不能用数字开头
变量尽量不要和Python关键字重合(比如前面学习过的:and、or、not,否则可能导致Python原有关键字发挥不出作用)
在Python里面,一个变量可以先后存储多种不同类型的数据。这是Python这类语言特有的特性,我们称之为动态语言,与之对应的是静态语言,Python、Javascript等等都是动态语言,Java、C、C++等等属于静态语言。