在dict中,每一项包含一个key和一个value,key和value是一一对应的,在解决上面的问题中,我们可以使用名字作为key,成绩作为value,那么dict的定义如下:
d = {
'Alice': 45,
'Bob': 60,
'Candy': 75,
'David': 86,
'Ellena': 49
}
在定义里,我们使用花括号{}表示这是一个dict,然后key和value之间使用冒号:分割,并且每一组key:value的最后,以逗号,表示这一组的结束。
我们也可以使用以下的方式定义一个dict。
d = dict()
print(d) # ==> {}
不过这种定义方式,默认得到的是一个空dict,需要调用函数往里面添加数据,我们后面会继续学习。
count()方法用来统计tuple中某个元素出现的次数。
index()方法可以返回指定元素的下标,当一个元素多次重复出现时,则返回第一次出现的下标位置。
定义元组的方式是使用小括号()将元组内的元素括起来。
注意,append()方法总是将元素添加到list的尾部。
注意,将Candy插入到第三的位置之后,原来的名字,都将自动往后移动一位,这个时候再使用相同的索引获取后面的元素,将会得到不一样的结果
列表(list)是一种有序的容器,放入list中的元素,将会按照一定顺序排列。构造list的方法非常简单,使用中括号[]把需要放在容器里面的元素括起来,就定义了一个列表。
s1 = 'ABC'
s2 = '123'
for x in s1:
for y in s2:
print(x + y)
请综合使用while和continue,计算0~1000以内,所有偶数的和。
num = 0
sum = 0
while True:
if num > 1000:
break
if num % 2 ==1:
num += 1
continue
sum = sum + num
num = num+1
print(sum)
num = 1
sum = 0
while True:
if num > 100:
break
sum = sum + num
num = num + 1
print(sum)
num = 1
sum = 0
while num <= 100:
sum = sum + num # 注意缩进
num = num + 1 # 注意缩进
print(sum) # ==> 5050
特别注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。
不过需要注意的是,在程序的世界中,计数是从0开始的,使用0来表示第一个。
有时候,我们会想获取字符串的一部分(子串),这个时候我们采取切片的方式获取,切片需要在中括号[]中填入两个数字,中间用冒号分开,表示子串的开始位置和结束位置,并且这是半闭半开区间,不包括最后的位置。
如果模板中{}比较多,则容易错乱,那么在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.
除了使用顺序,还可以指定对应的名字,使得在format过程更加清晰。
# 指定{}的名字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.
但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串。
如果要表示多行字符串,可以用'''...'''表示:
'''Line 1
Line 2
Line 3'''
上面这个字符串的表示方法和下面的是完全一样的:
'Line 1\nLine 2\nLine 3'
还可以在多行字符串前面添加r,把这个多行字符串也变成一个raw字符串:
要表示字符串Bob said "I'm OK"
由于'和"会引起歧义,因此,我们在它前面插入一个\表示这是一个普通字符,不代表字符串的起始
\n表示换行
\t 表示一个制表符
\\表示 \ 字符本身
与运算
只有两个布尔值都为 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数字支持取模运算,使用百分号%表示取模。
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为偶数
地板除
Python除了普通除法以外,还有一个特殊的除法被称为地板除,对于地板除,得到的结果会忽略纯小数的部分,得到整数的部分,地板除使用//进行。
10//4 # ==> 2
10//2.5 # ==> 4.0
10//3 # ==> 3
小数点位数
使用Python计算小数的时候,经常需要保留小数点后若干位,可以使用round()函数来处理,这里先了解round的调用方式,使用两个参数,第一个是需要保留小数点位数的数值,第二个是保留的位数。
num = 10 / 3
print(num) # ==> 3.3333333333333335
# 使用round保留两位小数
round(num, 2) # ==> 3.33
变量名由大小写英文字母、数字和下划线_组成
变量不能用数字开头
变量尽量不要和Python关键字重合(比如前面学习过的:and、or、not,否则可能导致Python原有关键字发挥不出作用)
整数 例如:1,2,3,10,100,1000,-1000
浮点数 例如:0.1,0.5, 12.34, 3.1415926
字符串 比如'abc',"xyz"等
布尔值 一个布尔值只有True、False两种值
布尔值可以用and、or和not运算(注意and,or,not都是Python语言本身的关键字)。
and运算是与运算,只有所有都为 True,and运算结果才是 True。
or运算是或运算,只要其中有一个为 True,or 运算结果就是 True。
not运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True。
空值是Python里一个特殊的值,用None表示。
注意,None和0是不一样的,None不能理解为0,因为0是有意义的,比如我有0个苹果表示我没有苹果,0表达的是数值0的意思,而不能表示为我有None个苹果,None是一个特殊的空值。
在Python中,包括列表(list)、元组(tuple)、字典(dict)、集合(set)等,他们都可以放入多个元素,因此都可以算作是容器
使用缩进作为逻辑层次

吉多-范罗苏姆1989年创立

# 0,空字符串,None在Python中是False
# 短路计算,非真即假,非假即真,NOT优先级最高
# 优先级:算术运算符>比较运算符>逻辑运算符
# 逻辑运算符优先级:not>and>or
遇到break,直接跳出循环;
遇到continue,则重新开始循环;
1. 可变关键字参数用**kwargs表示,Python 会将其当作dict处理,可通过关键字名字key找对应参数值。
2. 如info(**kwargs)函数可打印同学信息。
3. 拥有多种参数的函数定义顺序为:必需参数、默认参数、可变参数、可变关键字参数,如def func(param1, param2, param3 = None, *args, **kwargs),但实际不建议定义过多参数。
任务是编写函数接受names、gender、age三个list关键字参数并打印同学信息。
可变参数用*args表示,能接收任意个数的参数,Python 会将其定义为一个tuple,在函数内部按tuple使用。
定义可变参数是为简化调用,如计算任意个数平均值的average(*args)函数。
使用可变参数要注意参数长度可能为 0 的情况,像原average()函数未考虑此情况会报错,需添加保护逻辑,如完善后的函数,当参数长度为 0 时返回 0 。
isinstance() 是 Python 内置的一个函数,专门用来判断一个对象(变量)是否属于某个特定的类型(如整数 int、字符串 str、列表 list 等)
语法:
isinstance(对象, 类型) 两个参数.
返回值: 布尔型, (True, False)
作用: 在函数运行前先“预判”参数类型,如果不对就提前处理,而不是让程序崩溃。
+、-、*、/四项常规运算符
%:取模,值为除法结果的余数;
//:地板除,值为除法结果的整数部分;
round(变量,保留位数):变量结果保留指定的位数。
整数与浮点数运算得浮点数;