2020-12-02
元组可以看成不可变的列表
虽然不可以修改元组内元素的值,但是可以使用赋值语句重新定义元组。
每条if
语句的核心都是一个值为True
或False
的表达式,这种表达式被称为条件测试,如果条件测试的值为True,就执行if下方代码;如果为False则忽略。
可以使用and
或者or
来检查多个条件。
要判断特定的值是否包含在列表中,可以使用关键字in
或者not in
if-elif-else
语句,有时候可以将else
用elif
代替,以防止引入无效甚至恶意数据。这种语句仅适用于只有一个条件满足的情况,并且跳过其他情况。如果有多个条件都需要检查,就需要使用一串简单的if语句。
requested_toppings = []
if requested_toppings:
for request_topping in requested_toppings:
print("Adding " + "requested_topping" + ".")
print("\nFinished making your pizza!")
else:
print("Are you sure you want a plain pizza?")
字典是一系列键值对,可以将任何python对象作为键值对的值。
对于字典中不再需要的信息,可以使用del
语句将相应的键值对彻底删除,使用del语句时,必须指定字典名和要删除的键。
遍历字典:
要编写用于遍历字典的for
循环,可声明两个变量,用于存储键值对中的键和值,对于这两个变量,可以使用任何名称。for循环语句的第二部分包含字典名和方法items()
,它返回一个键值对列表,接下来,for循环依次将每个键值对存储到指定的两个变量中。
han = {"name":"hanmeng",
"birth_day":"1993",
"age":"27"}
for key, value in han.items():
print("\n查询:" + key)
print("结果:" + value)
查询:name
结果:hanmeng
查询:birth_day
结果:1993
查询:age
结果:27
注意这里有个items()
方法。https://www.runoob.com/python3/python3-att-dictionary-items.html
Python 字典 items() 方法以列表返回可遍历的(键, 值) 元组数组。
在不需要字典中的值时,方法keys()
很有用。
for name in dict.keys():
因为遍历字典时,默认遍历所有的键,因此此处的keys()
方法可以省略。方法keys()并非只能用于遍历,实际上,它返回一个列表,其中包含字典中的所有键,因此可以使用下面语句来确实某项是否在字典中:
if "gender" not in han.keys():
han["gender"] = "male"
注意此处的"gender"要加引号。
因为字典中的键值对是无序的,如果想要以特定的顺序返回元素,可以使用for循环对返回的键进行排序:
for key in sorted(han.keys()):
如果感兴趣的是字典的值,可以使用方法values()
,它返回一个值列表。
虽然键是唯一的,但是有时值可能有重复,我们可以调用集合set
,来剔除重复项。
for language in set(languages.values()):
知识点:set()
2020-12-03
嵌套
一系列字典可以存储在列表中,或者将列表作为值存储在字典中。
每当需要在字典中将一个键关联多个值时,都可以在字典中嵌套一个列表。
函数int()
将数字的字符串表示转换为数值表示,可以用于用户输入进行数值判断。
求模运算符 (%
) :将两个数相除并返回余数。
如果想要保持程序秩序运行,知道满足条件再终止,需要使用while
循环。
有时候导致程序终止的事件很多,我们可以设置一个flag,用来当做程序是否运行的指示灯,并将while循环只检查这一个flag,将判断语句放到其他部分,可以使代码更简洁。
active = True
while active:
message = input("提示")
if message == "quit":
active = False
else:
print(message)
想要退出循环也可以用break
,在任何python循环中都可以使用break语句。
要返回循环开头,并根据条件测试结果决定是否继续执行循环,可以使用continue语句。例如要打印1到10以内的奇数:
num =0
while num < 10:
num += 1
if num % 2 == 0:
continue
print(num)
可以使用while循环来处理列表和字典。
在进行函数调用时,可以使用关键字实参,也就是传递给函数名称-值对,这样就可以不用考虑实参的位置。
def han(name, age):
print("小%s,你已经%s岁了"%(name,age))
han(age = "27", name = "韩")
有时候函数需要返回值,需要定义变量来接收。
可以向函数传递列表,然后再函数块内部使用for循环等来对列表的值进行操作。
方法和函数的调用方法不同。
为何必须在方法定义中包含形参self
呢?因为python调用这个__init__()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法调用都会自动传入实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
定义子类时,要super父类的初始化方法。
一个类创建的实例可以是另一类的属性。
class Battery():
def __init__(self,battery_size = 70):
self.battery_size = battery_size
def describe_battery(self):
print("This is" + str(self.battery_size) + "kWh battery")
class ElectricCar(car):
def __init__(self,year, model):
self.battery = Battery()
在ElectricCar
类中,我们添加了一个名为self.battery
的属性,这行代码让python创建一个新的Battery实例,并将这个实例存储在属性self.battery中。
当使用ElectriCar类创建实例后,可以调用该属性和它封装的方法。
模块collections
中有一个类,OrderedDict
,是一个有序的字典类。
from collections import OrderedDict
my_dict = OrderedDict()
上述两句话就创建了一个有序的字典实例my_dict