如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示:
"I'm OK"
类似的,如果字符串包含",我们就可以用' '括起来表示:
'Learn "Python" in imooc'
但是,如果字符串既包含'又包含"怎么办?
这个时候,就需要对字符串中的某些特殊字符进行“转义”,Python字符串用\进行转义。
要表示字符串Bob said "I'm OK"
由于'和"会引起歧义,因此,我们在它前面插入一个\表示这是一个普通字符,不代表字符串的起始,因此,这个字符串又可以表示为
'Bob said \"I\'m OK\".'
注意:转义字符 \不计入字符串的内容中。
常用的转义字符还有:
\n表示换行
\t 表示一个制表符
\\表示 \ 字符本身
我们可以使用if-elif-else语句来简化以上的逻辑。其中elif就是else if的意思。
score = 59
if score < 60:
print('抱歉,考试不及格')
elif score >= 90:
print('恭喜你,拿到卓越的成绩')
elif score >= 80:
print('恭喜你,拿到优秀的成绩')
else:
print('恭喜你,考试及格')
这样,我们就可以写出代码结构非常清晰的一系列条件判断了。
特别注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。
合法的变量名
只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型(字符串、布尔值、空值、字典等)。在Python中,定义一个变量需要遵循一定的约束,否则,Python可能识别不出它是一个变量。
变量名由大小写英文字母、数字和下划线_组成
变量不能用数字开头
变量尽量不要和Python关键字重合(比如前面学习过的:and、or、not,否则可能导致Python原有关键字发挥不出作用)
布尔值对应于生活中的就是对和错,在计算机的世界里,大部分判断都是非错则对的,布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写,不需要使用字符串符号括起来),也可以通过布尔运算计算出来
二进制数只使用数字0、1表示,在Python中,二进制整数使用前缀0b表示,比如:0b0110,0b1100。
十六进制数除了0~9十个数字以外,还使用a、b、c、d、e、f,在Python中,十六进制使用前缀0x,比如:0x12ef,0xde2431af。
因为Python把0、空字符串和None看成False
三个很重要的概念。
0,空字符和None
print输出要跳出for循环,否则无效
因为Python把0、空字符串和None看成False,其他数值和非空字符串都看成True
需要注意的是,not计算的优先级是高于and和or的。
地板除 // 可以取到整数部分。
与运算
只有两个布尔值都为 True 时,计算结果才为 True。
True and True # ==> True
True and False # ==> False
False and True # ==> False
False and False # ==> False
或运算
只要有一个布尔值为 True,计算结果就是 True。
True or True # ==> True
True or False # ==> True
False or True # ==> True
False or False # ==> False
非运算
把True变为False,或者把False变为True:
not True # ==> False
not False # ==> True
地板除
Python除了普通除法以外,还有一个特殊的除法被称为地板除,对于地板除,得到的结果会忽略纯小数的部分,得到整数的部分,地板除使用//进行。
10//4 # ==> 2
10//2.5 # ==> 4.0
10//3 # ==> 3
取模运算
Python数字支持取模运算,使用百分号%表示取模。
print(3 % 2) # ==> 1
print(33 % 10) # ==> 3
print(99 % 30) # ==> 9
恰当使用取模运算,可以判断一个数是否为偶数,当一个数对2取模结果为0时,则这个数为偶数,否则为奇数。
print(3 % 2) # ==> 1 因此3为奇数
print(33 % 2) # ==> 1 因此33为奇数
print(100 % 2) # ==> 0 因此100为偶数
对于一个拥有必需参数,默认参数,可变参数,可变关键字参数的函数,定义顺序是这样的:
def func(param1, param2, param3 = None, *args, **kwargs):
print(param1)
print(param2)
print(param3)
print(args)
print(kwargs)
func(100, 200, 300, 400, 500, name = 'Alice', score = 100)
# ==> 100
# ==> 200
# ==> 300
# ==> (400, 500)
# ==> {'name': 'Alice', 'score': 100}
当然,这么多类型的参数,很容易导致出错,在实际使用上,不建议定义这么多的参数。
初学者常规写法:
list = 0
for i in range(1,101):
list += i**2
print(list)
列表推导式的写法,代码量比较少,更直观
num = [i * i for i in range(1,101)]
a = sum(num)
print(a)
生成器的写法,占用内存更低,写法如下
num = sum(i * i for i in range(1,101))
print(num)
有时候需要判断两个集合是否有重合的地方,如果使用传统的方法,需要使用for循环一个一个的去判断,非常麻烦,set提供isdisjoint()方法,可以快速判断两个集合是否有重合,如果有重合,返回False,否则返回True。
s1 = set([1, 2, 3, 4, 5])
s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
s3 = s1.isdisjoint(s2)
if not s3:
for item in s1:
if item not in s2:
continue
print(item,s3)
判断S1与S2的集合是否有重合
如果有,返回false,并且打印重合项
针对以下set,给定一个list,对于list里面的每个元素,如果set中包含这个元素,就将其删除,否则添加到set里面去。
L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
S = set([1, 3, 5, 7, 9, 11])
for item in L: 使用for循环,新变量在L中循环
if item in S: 当新变量中的元素也在S中,
S.remove(item) 删除相同的新变量,
else:
S.add(item) 不同的新变量直接加入到S的集合中
print (S)
set中如果有重复的元素,在输出的时候数据是按照顺序,并且重复的只取1个
s = set([1, 4, 3, 2, 5, 4, 2, 3, 1])
print(s) # ==> set([1, 2, 3, 4, 5])
如果模板中{}比较多,则容易错乱,那么在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.
# 调整顺序
template = 'Hello {3}, Hello {2}, Hello {1}, Hello {0}.'
result = template.format('World', 'China', 'Beijing', 'imooc')
print(result) # ==> Hello imooc, Hello Beijing, Hello China, Hello World.
# 指定{}的名字w,c,b,i
template = 'Hello {w}, Hello {c}, Hello {b}, Hello {i}.'
world = 'World'
china = 'China'
beijing = 'Beijing'
imooc = 'imooc'
# 指定名字对应的模板数据内容
result = template.format(w = world, c = china, b = beijing, i = imooc)
print(result) # ==> Hello World, Hello China, Hello Beijing, Hello imooc.
课后任务
print('Life is short,you need{}'.format('Python'))
print('life is short,you need {launguage}'.format(launguage='Python'))
raw字符串受用
print(r'''写任意字符串’‘’)
这其中写什么东西都不会被定义为阅读终止除了三个单引号!!!
L=['alice',66,'bob',"true",'false',100]
print(L)
L=['Alice','Chinese:92''Msth:75','English:99']
print(L)