(1)编写环境介绍
在下载安装好python后:
打开命令提示符界面,进入python解释器界面(即为一个执行python代码的程序):
编写python代码时,还是建议用editor编辑器或者IDE集成环境,IDE时editor的扩展,包括了autocompletion,debugging,testing等功能。
这里暂时使用vscode编写学习,因为mosh老师最喜欢这个编辑器
(2)创建一个文件
新建一个文件夹,并在vscode中打开:
新建一个python文件:
发现vscode终端无法运行python如下
但是cmd中可以运行:(所以环境变量没问题,应该是vscode的设置问题?)
查了半天还是不知道什么原因,最后发现直接右上角运行即可:
最后安装几个扩展:
(3)python基础知识
1.变量
-
不需要指定数据类型
-
python变量实际上是一个指针(里面存的是内存地址,如果再把这个变量赋值给另一个变量,新的变量通过之前那个变量知道那个变量值的内存地址存起来,而不是指向之前的那个变量)
-
命名规则:由数字、字母、下划线组成,不能以数字开头,不能使用内置关键字
-
命名习惯:驼峰命名法(CamelCase):myName, myAge 下划线命名法(snake_case):my_name, my_age 常量命名:MY_NAME, MY_AGE
-
严格区分大小写
2.常量
-
Python中没有常量的概念,但通过命名约定和编程习惯,我们可以识别和区分常量
-
命名规则:使用大写字母,并用下划线分隔单词。例如:MAX_VALUE、PI
-
值不可修改:虽然Python中的变量实际上是可以修改的,但我们可以避免修改这些变量,从而将它们视为常量。通过注释或文档说明某些变量不应被修改
- 内置常量:Python自带了一些内置常量,如True、False、None等(可以发现内置常量是首字母大写)
3.单引号,双引号和三引号
-
三引号有注释的功能
-
三引号还可以表示:定义字符串变量时,如果既有单引号又有双引号,那么用三引号框起来
# python中定义变量的时候字符串都用引号引起来,此时单引号和双引号没有区别。
msg_first = "I'm carol." # 如果字符串中有单引号的话,外面就得用双引号
msg_second = 'Python comments use "#".' # 如果里面有双引号,外面就用单引号
msg_third = '''I'm carol,I love "python".''' # 如果既有单引号又有双引号,那么用三引号
4.数字
- python中数字类型的变量可以表示任意大的数值
a = 99999999999999
print(a*a)
- 十六进制0x 开头,八进制以 0o 开头,二进制以 0b 开头
a = 0x7f
b = 0o76
c = 0b1010010
print(a)
print(b)
print(c)
# 二进制 bin() 八进制 oct() 十六进制 hex()
a = 1234
print(a)
print(hex(a))
print(oct(a))
print(bin(a))
-
python中可以表示复数,用j来表示虚部 complex(a,b)函数可以形成复数
-
real查看实部,imag查看虚部,conjugate()返回共轭复数
a = 3+6j
b = complex(5, 4)
c = a+b
print(c)
print(c.real)
print(c.imag)
print(c.conjugate())
5.输入输出
a = input("please input msg:")
print(a)
input 在接收输入的时候,是可以看到你输入的值的。如果是输入密码,不想让别人看到你的密码,怎么办呢,就需要用到一个标准库,getpass,标准库就是不需要你再去安装,装完 python 就有的库,就是标准库,getpass 就是一个标准库,导入进来之后,直接使用 getpass.getpass 方法就可以在输入的时候,不会显示了:
import getpass
psw = getpass.getpass("please input your password:")
print(psw)
6.列表(list)
-
list是有序、可重复、可更改的集合,可存放不同数据类型的数据,并且每个元素都对应着一个索引来标记其位置,索引从0开始
-
逗号分隔的不同的数据项使用方括号括起来
-
基本操作
fruits = ['apple', 'orange', 'banana', 'pear']
print(fruits[0]) # 利用索引访问位置[start:end:step]
print(fruits[1:3]) # 切片操作 索引1-2 步长默认为1
print(fruits[::-1]) # 逆序输出
print(len(fruits)) # 输出列表长度
# 修改列表
fruits[0] = "watermelon"
print(fruits)
# 添加元素到列表末尾
fruits.append("grape")
print(fruits)
# 删除元素 两种方法
del fruits[2] # 删除索引为2的元素
print(fruits)
fruits.remove('pear') # 删除值为'pear'的元素
print(fruits)
# 判断元素是否存在于列表中
print('apple' in fruits)
print('grape' in fruits)
# 合并列表
aa = [0, 1, 2]
bb = fruits+aa
print(bb)
7.元组(tuple)
-
元组是有序、可重复、不可更改的集合,元组是用圆括号括起来的
-
基本操作
ff = ("apple", "banana", "cherry")
print(ff)
print(ff[0])
print(ff[-1]) # 输出倒数第一个,-2表示倒数第二个
print(ff[1:3])
print(ff[-2:-3])
# 元组值无法更改,但是可以将元组转换为列表,更改列表,然后将列表转换回元组
y = list(ff)
y[0] = "kiwi"
ff = tuple(y)
print(ff)
#len(),合并元组,判断元素是否存在和list操作一样
# 无法删除元组中的元素,但是可以删除整个元组
del ff
8.字典(dictionary)
-
字典是一个无序、可变、有索引的集合。在 Python 中,字典用花括号编写,拥有键和值
-
定义创建
thisdict = {
"brand": "Porsche",
"model": "911",
"year": 1963
}
- 基本操作
print(thisdict)
# 获取 "model" 键的值 两种方法
x = thisdict["model"] # 注意是方括号
x = thisdict.get("model") # 注意是圆括号
# 更改值
thisdict["year"] = 2019
print(thisdict)
# 遍历所有值
for x in thisdict:
print(thisdict[x])
# 遍历值
for x in thisdict.values():
print(x)
# 遍历键和值
for x, y in thisdict.items():
print(x, y)
# 检查是否存在
print("model" in thisdict)
# 添加值
thisdict["color"] = "red" # 注意是方括号
print(thisdict)
# 删除指定键名项
thisdict.pop("model")
print(thisdict)
# 删除最后插入的项
thisdict.popitem()
print(thisdict)
# 另一种删除方法
del thisdict["year"] # 注意是方括号
print(thisdict)
# 删除整个字典
del thisdict
9.集合(set)
-
集合是无序、不可重复、无索引的集合。在 Python 中,集合用花括号编写。
-
集合中的元素不可变,但是可修改,即先删再加
-
基本操作
t_set = {"apple", "banana", "cherry"}
t_set.add("orange") # 添加单个
t_set.update(["kiwi", "mango", "grapes"]) # 添加多个
print(t_set)
# 删除元素 remove() 或 discard()方法 pop() 方法
t_set.remove("banana")
t_set.discard("cherry")
print(t_set)
# pop方法是删除最后一项,但是set是无需的,故无法预测删除的是哪一个 有返回值
print(t_set.pop())
print(t_set)
# 合并集合
set1 = {4, 5, 6}
set2 = {1, 2, 3}
set3 = t_set.union(set1) # 方法1 返回一个新集合
print(set3)
set3.update(set2) # 方法2 插入到原集合
print(set3)
# 彻底删除
del set3 #不用后删除对象 好习惯
10.模块的导入与使用
在使用库函数时,需要导入,有两种方法:
-
import 模块名【as 别名】:使用这种方式导入后,需要在使用的对象前加上前缀 “模块名 . 对项名”的方式进行访问,也可以用“别名 . 对象名”的方式使用其中的对象
-
from 模块名 import 对象名【as 别名】:使用这种方式仅导入使用的对象,并且可以为这个对象起一个别名,这种方法可以减少查询次数,减少程序员的代码量,不需要使用模块名作为前缀
import math
from math import sin as f
print(math.sin(3))
print(f(3))
- 一次导入模块中全部的对象:from math import * 不推荐使用这中方法,一旦多个模块中有同名的对象,会导致混乱
11.条件判断、循环
- 条件判断
# input接收的是一个字符串,因此要强制转换成int类型
score = int(input("please input your score:"))
if score >= 90: #记得加冒号
print("优秀") #要缩进
elif score >= 60:
print("及格")
else:
print("不及格")
- 循环
# while循环
# break是停止循环
# continue是停止当前的迭代,并继续下一个
i = 1
while i < 7: # 注意冒号和缩进
print(i)
if i == 3:
break
i += 1
# for循环
a = [0, 1, 2, 3, 4, 5]
for x in a:
if x == 2:
continue
if x == 4:
break
print(x)
# 循环遍历单词中的字母
for x in "banana":
print(x)
12.range()函数
range()函数可用来创建一个整数列表,一般用在for循环中
-
range()语法:range(start, stop, step)
-
start:计数从start开始,默认从0开始 (闭区间),如:range(5)等价于range(0,5).
-
stop:计数到stop结束,但不包括stop(开区间).如:range(0,5)是[0, 1, 2, 3, 4],不包含5.
-
step:步长,相邻两个值的差值,默认为1.如:range(0,5)相当于range(0, 5, 1).
for x in range(3, 50, 6):
print(x)
13.列表推导式
列表推导式(list comprehension)是指循环创建列表
list1 = [b for b in range(5)]
print(list1)
# in后面跟其他可迭代对象,如字符串
list_c = [7 * c for c in "python"]
print(list_c)
# 带if条件语句的列表推导式
# 果有if条件语句,for遍历后紧跟着进行条件判断
list_d = [d for d in range(6) if d % 2 != 0]
print(list_d)
# 多个for循环
# 如果有多个for循环,则最终的数据数量为多个for循环的笛卡尔积.
list_e = [(e, f * f) for e in range(3) for f in range(5, 15, 5)]
print(list_e)
# 嵌套列表推导式,多个并列条件
list_g = [[x for x in range(g - 3, g)]
for g in range(22) if g % 3 == 0 and g != 0]
print(list_g)
14.字典推导式
# 因为key是唯一的,所以最后value都是4,0-4中最后一个有效值4
dict_a = {key: value for key in 'python' for value in range(5)}
print(dict_a)
# 可以根据key来构造value
dict_b = {key: key * key for key in range(6)}
print(dict_b)
# 遍历一个有键值关系的可迭代对象
list_phone = [('HUAWEI', '华为'), ('MI', '小米'),
('OPPO', 'OPPO'), ('VIVO', 'VIVO')]
dict_c = {key: value for key, value in list_phone}
print(dict_c)
15.集合推导式
# 集合是无序且不重复的,所以会自动去掉重复的元素,并且每次运行显示的顺序不一样
set_a = {value for value in '有人云淡风轻,有人负重前行'}
print(set_a)
16.创建类
class Employee:
'所有员工的基类' # 类文档字符串
# 类体:类成员,方法,数据属性组成
empCount = 0 # 类变量
# __init__()方法是类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
# self代表类的实例,self在定义类的方法时是必须有的,在调用时不必传入相应的参数。
def displayCount(self):
print("Total Employee %d" % Employee.empCount)
def displayEmployee(self):
print("Name : ", self.name, ", Salary: ", self.salary)
"创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
"创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000)
# 访问属性
emp1.displayEmployee()
emp2.displayEmployee()
print("Total Employee %d" % Employee.empCount)
# 增删改属性
emp1.age = 7 # 添加一个 'age' 属性
emp1.age = 8 # 修改 'age' 属性
print(emp1.age)
del emp1.age # 删除 'age' 属性
print(hasattr(emp1, 'age')) # 如果存在 'age' 属性返回 True
setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8
print(getattr(emp1, 'age')) # 返回 'age' 属性的值
delattr(emp1, 'age') # 删除属性 'age'
17.类、模块、包的区别
-
类(Class):类是一种用户自定义的数据类型,用于表示具有相似特征和行为的对象的集合。类定义了对象的属性和方法,可以创建多个对象实例。类是面向对象编程的基础,通过类可以实现封装、继承和多态等特性。
-
模块(Module):模块是一个包含了变量、函数和类的Python文件。模块可以被其他程序导入并使用其中定义的变量、函数和类。模块的好处是可以将代码组织到不同的文件中,提高代码的可读性和维护性。可以使用import语句导入模块,然后使用模块名来访问其中的内容。
-
包(Package):包是一个包含多个模块的目录,可以通过包来组织和管理模块。包通常包含一个__init__.py文件,用于指示该目录是一个Python包。包的好处是可以将相关的模块组织到一个目录下,更好地组织和管理代码。可以使用import语句导入包,然后使用包名和模块名来访问其中的内容。
总结:类用于定义对象的属性和方法,模块用于组织代码文件,包用于组织模块和提供命名空间。类和模块是Python语言的基本组成单元,而包是一种更高层次的组织方式。
参考链接:
https://www.cnblogs.com/huansky/p/14451733.html
https://www.w3school.com.cn/python/python_tuples.asp
标签:01,python,age,语法,range,thisdict,fruits,print From: https://www.cnblogs.com/kakafa/p/18364884