学习中国MOOC"用Python学人工智能"整理的笔记—— [email protected] 欢迎交流
20230805
- 在python中,函数和方法很像又有不同
'hello'.upper() #得到'HELLO'
int(10.5) #得到10
- python中列表
>>>a=[1,2,3,4,5]
>>>a[0]
1
>>>a[0:3]
[1,2,3] #最后一位3是不含的!
- python元组的使用
>>>a=(1,2,3,4)
>>>a[1]=100
ERROR! #元组中的元素不允许赋值
- python字典
>>>a={"name":Tom}
>>>a["name"]
'Tom' #代码的可读性好
- for循环
# This is what a comment looks like
fruits = ['apples', 'oranges', 'pears', 'bananas']
for fruit in fruits: #遍历,即把list中的每一个元素都那出来试一下
print(fruit + ' for sale')
fruitPrices = {'apples': 2.00, 'oranges': 1.50, 'pears': 1.75}
#print(fruitPrices.items())
for fruit, price in fruitPrices.items():
if price < 2.00:
print('%s cost %f a pound' % (fruit, price))
else:
print(fruit + ' are too expensive!')
- map函数的使用
利用map函数可以把集合中第一个元素都用前面指定的函数去运行一遍得到了一个map对象再转换为list
>>>list(map(int,[10.8,2.3,5.4]))
[10, 2, 5] #map(int,[10.8,2.3,5.4])是map对象得到<map object at 0x00000117AF0B77C0>
- 匿名函数lambda;需求是只在这一个地方使用的函数
>>>list(map(lambda x: x * x, [1, 2, 3])) #冒号后面是返回值为x的平方
[1, 4, 9]
- filter函数的使用;需求是给了一个集合,我要筛选其中符合条件的元素
>>>list(filter(lambda x: x > 3, [1, 2, 3, 4, 5, 4, 3, 2, 1]))
- 列表解析,只需要把通项公式给到,python即可自动给到
>>>a=[x for x in range(10)]
>>>a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>a=[x*x for x in range(10)] #前面的即是通向公式
>>>a
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>>sum([x for x in range(101)]) #sum函数可以作用到列表
5050
>>>sum([x for x in range(1,101)])
5050
>>>sum(list(range(1,101)))
5050
>>>sum(range(1,101))
5050
#计算1-100以内奇数的和(除以2余1)
sum([x for x in range(1,101) if x%2==1]) #后面加上条件即可
sum([x for x in range(1,101,2) ]) #或利用步进值来选取奇数
20230806
- python的语句块是通过缩进来实现的
- python是动态语言,数据类型之间可覆盖
- 对于conda它可以帮助我们在多个环境中选择自己想要的环境然后进入;
- 要求conda列出电脑上的环境的命令为
(base) PS C:\Users\Admin> conda env list # conda environments: # cs188 C:\Users\Admin\.conda\envs\cs188 base * E:\ProgramData\miniconda3
- 要求conda进入到某个环境的命令为
(base) PS C:\Users\Admin> conda activate cs188 (cs188) PS C:\Users\Admin>
- 如果想要查看在不同路径(文件夹)下的文件我们可以使用cd和ls这两关键词。
(base) PS C:\Users\Admin> conda activate cs188 (cs188) PS C:\Users\Admin> cd D:\Personal\Python_file (cs188) PS D:\Personal\Python_file> ls 目录: D:\Personal\Python_file Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2023/8/6 11:47 __pycache__ -a---- 2023/8/5 16:41 607 api_1.py -a---- 2023/8/6 11:47 904 test.py -a---- 2023/8/5 17:02 13 测试包.py -a---- 2023/8/5 17:06 955 获取Access_token.py
- 我们自己写的python模块都是自己可以导进来的(比如我自己动手写了一个test.py文件,那么我保存后,只需要import test 就可以使用里面我以前写的函数)(但是在import的时候需要指定一个文件夹,如上一点)
- 在这里要注意的是,在执行import的时候我们希望只导入不输出,因此需要利用python的主函数语句功能(例如)
fruitPrices = {'apples': 2.00, 'oranges': 1.50, 'pears': 1.75}
def buyFruit(fruit, numPounds):
if fruit not in fruitPrices:
print("Sorry we don't have %s" % (fruit))
else:
cost = fruitPrices[fruit] * numPounds
print("That'll be %f please" % (cost))
# Main Function
if __name__ == '__main__': #有了这个语句可以保证在执行import后不输出,反之输出
buyFruit('apples', 2.4)
buyFruit('coconuts', 2)
- 其他想要使其输出结果则可以:
(cs188) PS D:\Personal\Python_file> python test.py
That'll be 4.800000 please
Sorry we don't have coconuts
或run
20230807
Python类class的使用
#dog.py
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
#以上是定义了一个小狗的类,下面是调用类里面的东西
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.")
my_dog.sit()
my_dog.roll_over()
- 根据约定,在Python中,首字母大写的名称指的是类。如Dog
- 方法__init__()是一个特殊的方法,每当你根据Dog类创建新实例时,Python都会自动运行它。
我们将方法__init__()定义成了包含三个形参:self、name和age。在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面。
#下面还可以创建另外的一条小狗
class Dog():
--snip--
my_dog = Dog('willie', 6)
your_dog = Dog('lucy', 3)
my_dog.sit()
your_dog.sit()
#本例中创建了两条小狗Willie和Lucy,每条小狗都是一个独立的实例,有自己的一组属性,能够执行相同的操作
- 对于打印输出的时候以下两种语句等价
name='willie'
print("hello "+ name.title() + "!")
print("hello %s! " %(name.title())) #类似于C语言的语法格式
- 另外,想要像C语言那样多个输出,可以有:
name_1='willie'
name_2='lucy'
print("hello %s and %s! " %(name_1.title(),name_2.title()))
- 继承
编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。