一、创建应该新的项目:
输入文件名:
- 路径一定不能有中文名,JDK安装路径一定不能和安装包放一起
二、基本知识
1.杂知识点
- python的单行注释符号是#
- python的多行注释符号是""“内容”"";使用三引号
- print函数:控制台打印函数,每一个变量之间都要加逗号
- 在python中单引号和双引号是一样的
- pass 关键字是一个占位符 无意义,但可以防止
2. 基本数据类型
- 在python中不需要声明变量,直接定义赋值即可。由python环境自动编译识别变量的类型。
- 可以使用type获取变量的类型
- python每行末尾不需要分号
- python 3 以后小小数只有float,无double型
- bool类型的True和False首字母必须大写
print("hello world!")
name = "灵虚"
age = 21
salary = 25.365
isSingle = True
isSingle2 = False
resule = 2-2j #python独有的数据类型:复数
#复数的虚部前面必须加正负号,后面字母必须是j
print(type(name))
print(type(age))
print(type(salary))
print(resule.real)
print("实部是:", resule.real, "虚部是:", resule.imag) #获取复数的实部和虚部
"""运行结果
hello world!
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'complex'> //复数的类型名
2.0 //复数的实部和虚部都是float类型
-2.0
"""
3. 列表、元组、字典
-
列表
# 列表:<class 'list'> # 在python中数组被称作列表 heroes = ["叶凡", "石昊", "张楚", "辰东"] print(type(heroes)) print(heroes) length=len(heroes) print("长度是:",length) print(heroes[0]) print(heroes[-3]) # python的下标从第一个开始是0到个数减一 # python的下标也可以认为是从最后一个往前为-1到-个数 heroes[0] = "无始" heroes.append("女帝") # 向列表的末尾追加元素 heroes.insert(2, "羽化") # 在下标为2的地方插入数据 print(heroes) del heroes[5] # 删除下标为5的元素 print(heroes) # del heroes # 删除整个列表 # 列表中类型可以任意存放,不是必须相同的 list2 = [1, 2.2, "灵虚", 2+8j] print(list2) list3 = heroes+list2 print(list3)
- 元组
# 元组:和列表相似<class 'tuple'> # 元组元素不能根据下标修改、删除、插入、追加 heroes = ("叶凡", "石昊", "张楚", "辰东") print(heroes, type(heroes), len(heroes)) # del heroes # 可以删除整个元组 tuple2 = ("灵虚", "无始") tuple3 = tuple2 + heroes
- 字典
# 字典:键值对(key-value)成对出现<class 'dict'> student = {"name": "叶凡", "age": 40000} # 在python2以后同一字典中key不能相同,否则后出现的会覆盖前面的。value可以重复 # key和value之间用冒号分隔,俩个键值对之间以逗号分隔 print(student, type(student), len(student)) print(student['name']) # 根据key找value student['name'] = '石昊' # 根据key修改value print(student) del student['age'] # 根据键key删除键值对 student['job'] = "天帝" # 添加键值对 print(student)
4. 分支和循环
- 分支语句 if
# if-else # if-elif-else # 用缩进控制作用域,关键字后加冒号 if (True): print("true") elif(5>2): print("else if....") else: pass #如果什么都不打算写,最好加一个pass
- 循环语句 for
# 同样使用冒号和缩进表示作用域 # 格式: for 变量名 in 遍历的范围 heroes = ("叶凡", "石昊", "张楚", "辰东") for hero in heroes: print(hero) # range(i) :表示0到i-1的数字,默认步长为1 # range(i,j) :表示i到j-1的数字,默认步长为1 # range(i,j,k) :表示i到j-1的数字,每次加k(步长为k) for i in range(10): print(i) for j in range(10, 25, 3): print(j)
5. 列表生成式
# 将0-9的数字生成列表
#一般写法:
numList = []
for i in range(10):
numList.append(i)
print(numList)
# 列表生成式写法:
numList2 = [i for i in range(10)]
print(numList2)
# 表示for循环对i赋值0到9,然后把i放入列表
6.运算操作
age = 3
# python中不能写++、--;可以写+=、-=等
print(age*3)
print(age**3) # a**b表示a的b次方
print("hello"*3) # 字符串的乘法表示字符串拼接
print(7/3) # 带小数的除法
print(7//3) # 整数除法
a, b, c = "sj", True, 7 # 分段赋值
d=e=f=4 # 连续赋值
print(a,b,c,d,e,f)
7.导入库
# 引入库 import
import math # 数学工具库
print("向下取整", math.floor(3.26))
print("向上取整", math.ceil(3.26))
print("次方", math.pow(2, 5))
print("四舍五入", round(5.6))
print("四舍五入", round(5.32))
print("四舍五入", round(5.32, 1)) # 四舍五入保留一位小数
8. 数据格式化
name = "叶凡"
age = 16
salary = 800.3
# 方法一 使用格式替换符 %s 字符串 %d 整数 %f 小数
# 以%分隔输出字符串和替换内容,替换内容需以小括号括起
instroduce = "我的名字是%s,年龄为%d,工资是%f"%(name, age, salary)
print(instroduce)
# 方法二 直接用{}代替,并使用format函数
instroduce2 = "我的名字是{},年龄为{},工资是{}".format(name, age, salary)
print(instroduce2)
instroduce3 = "我的名字是{},年龄为{},工资是{:.2f}".format(name, age, salary)
print(instroduce3)
# {:.2f}保留俩位小数
9. 键盘输入
# 获取键盘输入input,参数表示提示信息,返回的结果的一定是字符串
inPutName = input("请输入名称")
inPutAge = input("请输入年龄")
print(inPutName, inPutAge)
print(type(inPutName), type(inPutAge))
ageInt = int(inPutAge)
ageInt += 1
print(inPutName, ageInt)
10. 字符串操作
- 字符串操作支持链式操作
msg = " my name is linxu is 16 is hhh "
print(msg)
# split:字符串切割:以某一字符对字符串的切割,返回一个结果列表,参数为切割的字符
result = msg.split(" ")
print(result)
# replace: 字符串替换,第一个参数:被替换的字符串 第二个参数:替换的字符串
result2 = msg.replace("is", "are").replace("name", "名字") #字符串链式操作
print(result2)
# strip:去空格,只能去除首尾的空格
result3 = msg.strip()
print(result3)
# 如果要去掉所有的空格,可以用空字符串替换空格
result4 = msg.replace(" ", "")
print(result4)
# 根据下标切片
print(msg[0:6]) # [a:b] 表示从a到b-1的所有位置,即[a,b)
print(msg[5:9:2]) # [a:b] 表示从a到b-1的所有位置,且以步长2为间隔取字符
11. 文件操作
-
‘r’操作
# 1.txt和2.txt事先创建好 # open("路径(绝对/相对)","操作符") # 操作符:r:只读 w:清空写 a:追加写 # rb:二进制只读 wb:二进制清空写 ab:二进制追加写 fileRead1 = open("2.txt", "r") # 打开文件,获得文件句柄,如果文件内容只有英文,可直接打开 result = fileRead1.read() # read()读取文件全部内容 print(result) # 转义字符 :使用\ # 路径 :使用/ # 打开文件,获得文件句柄,如果文件内容含有中文 # encoding:读取文件的编码方式(不加时,默认是gbk) fileRead2 = open("1.txt", "r", encoding="utf-8") # 文件是什么编码格式,就应该用什么格式去读 result2 = fileRead2.read() # read()读取文件全部内容 print(result2) # pyCharm的默认编码格式为utf-8,使用pyCharm创建文件默认文件编码方式是utf-8 result3 = fileRead4.read() print(result3) fileRead = open("file/read.txt", "r", encoding="utf-8") # 需要手动close,表示文件读写结束 result4 = fileRead.readline() # 一次读取一行 result5 = fileRead.readline() result6 = fileRead.readlines() # 返回一个字符串列表,每个元素都是一行的内容,从当前光标处开始 print(result4) print(result5) print(result6) fileRead.close() # 写法二:不需要手动close,会自动close,格式: with open() as 文件名: with open("file/read.txt", "r", encoding="utf-8") as fileRead: print(fileRead.read())
-
‘w’操作
with open("file/write.txt", "w", encoding="utf-8") as fileWrite: fileWrite.write("vaibq别哦凑欧辰😊")
- ‘b’操作
# 二进制文件读取 # 二进制文件操作不能增加encoding参数,读取的结果英文和英文符号正常显示,中文显示二进制编码 with open("file/read.txt", "rb") as fileRead: result = fileRead.read() print(result) print(result.decode("utf-8")) # 解码,将二进制文件解码为utf-8文件 # 二进制文件写入 with open("file/write.txt", "wb") as fileWrite: fileWrite.write("仙路尽头谁为锋".encode()) # 写入二进制文件需要先将字符串编码encode为二进制形式
-
‘a’操作
# 追加内容 a with open("file/write.txt", "a", encoding="utf-8") as fileW: result = fileW.write(",一见无始道成空") with open("file/write.txt", "ab") as fileW2: result = fileW2.write("---无始大帝".encode())
12. 面向对象
class Student:
name = "灵虚"
age = 0
# def关键字用来定义方法,变量名必须是双下划线开头
# 初始化方法:创建对象时自动执行,
def __init__(self,name):
self.name = name
print(self.name+"诞生了")
# 类方法会自动补充参数self,不可省略,哪个对象调用这个方法,谁就是self
def eat(self):
print("正在吃饭")
def study(self):
print("正在学习")
def instroduce(self,theme):
print(self.name+"说"+theme)
student1 = Student('灵虚')
student1.age = 21
print(student1) # 直接打印对象显示的是对象的地址
print(student1.name, student1.age)
student1.eat()
student1.instroduce("哼唧哼唧")