Python 基础
概述
跟着文档来走,你将会学快速学会python基础,可以说是速成
本文中你将学到、输入输出、变量、整型、浮点型、字符串、列表、元组、字典、集合、函数、class
环境与运行
环境安装
Pycharm及python安装
python环境下载https://www.python.org/downloads/
这种教程很多不过多说明,可以参考这位博主的https://blog.csdn.net/qq_29883591/article/details/52664478
运行
Pycharm里运行:点击代码右键,出现菜单 找到 Run 点击即可,或者 快捷键输入 ctrl+shift+F10
命令模式下运行:文集目录下输入命令,如下
python demo01.py
基础知识与输入输出
创建文件demo01.py
# 控制台输出 Hello Python
print("Hello Python")
# 定义一个整型变量
num = 10
print(num) # 输出 10
# 定义一个浮点型变量
fl = 6.66
print(fl) # 输出 6.66
print(type(fl)) # 输出 <class 'float'>
# 定义一个字符串
my_str = "这是一个字符串"
print(my_str) # 输出 这是一个字符串
# type() 作用:查看数据类型
print(type(num)) # 输出类型 <class 'int'>
print(type(my_str)) # 输出类型 <class 'str'>
# 计算两个数的和
x = 1
y = x + 2
print(y) # 输出 3
print(10 - 5) # 做减法运算输出 5
print(10 / 5) # 做除法运算输出 2.0
print(10.5 / 5) # 输出 2.1
print(10.5 % 5) # 取余 输出 0.5
print(10 * 5) # 乘法运算输出 50
# bool值 为真True 假False
bool1 = True
bool2 = False
print(bool1)
print(bool2)
print(type(bool1)) # 输出类型 <class 'bool'>
# 输入
str_list = input("请输入,输入完成后请回车:")
print("你输入了", str_list) # 输出了你输入的内容
条件判断、循环语句
条件语句:
if
if…else
if…elif…else
创建文件demo02.py
# ## 这里需要注意一下 ":" 这个冒号,可以理解成其它语言的大括号 { } 包裹着代码块
# 判断性别 if...else
# gender = 1
gender = 0
if gender == 1:
print("男的")
else:
print("女的")
# 判断两个数的大小 if...elif...else
a = 15
b = 15
if a > b:
print("a > b")
elif a < b:
print("a < b")
print('同个区域下缩进一定要相同')
else:
print("相等")
print("手动分割线-------------------下面是循环练习")
创建文件demo03.py
for i in range(5):
print(i, end='\t') # 使用了制表符,i 后面这一块内容你可以不加
print('\n..............')
string = "abcd"
for i in string:
print(i, end='\t')
print('\n..............')
arr = ['aa', 'bb', 'cc', 'bb']
for i in range(len(arr)):
print(i, arr[i], end='\t')
print('\n......while循环........')
count = 0
while count < 3:
count += 1 # 相当于 count = count + 1
print("当前执行次数", count)
输出结果:
0 1 2 3 4
..............
a b c d
..............
0 aa 1 bb 2 cc 3 bb
......while循环........
当前执行次数 1
当前执行次数 2
当前执行次数 3
数据类型(字符串、列表、元组、字典、集合)
字符串
创建文件demo04.py
# 字符串
word = '字符串'
sentence = "这是一个句子"
paragraph = """
这是一个段落
可以多行
"""
print(word)
print(sentence)
print(paragraph)
# 转义 需要 完整显示 don't
my_str = 'I don\'t know'
print(my_str)
# 字符串处理
str = '客官来了!'
print(str+"点个赞再走!") # 字符串连接
print(str[0:3]) # 下标0开始,下标3结束 。 可以用理解成数学上区间表示 [0, 3)
print(r"hello\n Word!") # 在字符串前面加r,表示显示原始字符串,不转义
运行结果:
字符串
这是一个句子
这是一个段落
可以多行
I don't know
客官来了!点个赞再走!
客官来
hello\n Word!
列表
创建文件demo05.py
# 列表
# nameList = [] # 定义一个空列表
nameList = ['张三', '李四', '王五']
# testList = [1, '字符串'] # 列表中可以混合类型
print(nameList[0]) # 通过下标访问
# print(testList[1])
# 遍历列表
for i in nameList:
print(i) # 打印的是列表每一项
# 增 append(后面加入) insert(插入) extend(扩展)
print("增加前名单数据", nameList)
nameList.append('佬六') # 在末尾追加一个元素
print("增加后名单数据", nameList)
a = [1, 2]
b = [3, 4]
a.append(b) # 把 b 当作一个元素加入到 a
print("追加 a.append(b) ==>", a) # a 的结果 [1, 2, [3, 4]]
a.insert(1, 3) # 插入 把 3 插入下标为1的位置
print("插入 a.insert(1, 3)", a) # a 的结果 [1, 3, 2, [3, 4]]
c = [5, 6]
d = [7, 8]
c.extend(d) # 把 c 中的每个元素加入到 b
print("扩展 c.extend", c) # c 的结果 [5, 6, 7, 8]
# 删
del_arr = ['零', '一', '二', '三']
print(del_arr)
del del_arr[1] # 指定位置删除一个
print(del_arr)
del_arr.pop() # 删除末尾元素
print(del_arr)
del_arr.remove('零')
print(del_arr)
# 改
del_arr[0] = '零零' # 修改指定下标的元素
print(del_arr)
# 查 [in, not in]
nameList = ['张三', '李四', '王五']
if '张三' in nameList:
print("找到张三")
# 查找并返回下标 结果 1 , 可以指定范围 .index(内容, 0, 2)
print(nameList.index('李四'))
# nameList.count(内容) 出现几次
# nameList.reverse() 反转
sort_list = [1, 2, 3, 4, 5]
# c.sort() 排序 升序
sort_list.sort(reverse=True) # 排序 降序
print(sort_list)
# 定义多维列表(数组)
arr = [['一', ['一.一']], ['二'], []]
print(arr[0])
运行结果:
张三
张三
李四
王五
增加前名单数据 ['张三', '李四', '王五']
增加后名单数据 ['张三', '李四', '王五', '佬六']
追加 a.append(b) ==> [1, 2, [3, 4]]
插入 a.insert(1, 3) [1, 3, 2, [3, 4]]
扩展 c.extend [5, 6, 7, 8]
['零', '一', '二', '三']
['零', '二', '三']
['零', '二']
['二']
['零零']
找到张三
1
[5, 4, 3, 2, 1]
['一', ['一.一']]
元组
创建文件demo06.py
# 定义元组
my_tuple = ('一', 2, [3], 4.1)
tuple1 = (100) # 这个不是元组
print(type(tuple1)) # <class 'int'>
tuple2 = (100,) # 只有一个元素后面必须带逗号
print(type(tuple2)) # <class 'tuple'>
print(my_tuple) # 输出 ('一', 2, [3], 4.1)
# 通过下标访问
print(my_tuple[2][0]) # 输出 3
print(my_tuple[0:2]) # 输出 ('一', 2)
运行结果:
<class 'int'>
<class 'tuple'>
('一', 2, [3], 4.1)
3
('一', 2)
字典
创建文件demo07.py
# 定义字典
dic = {'a': '值1', 'b': '值2', 'c': '值3'}
print(dic)
# 通过key读取某一个
print(dic['a']) # 输出 值1
# 通过get方法读取某一个值
print(dic.get('b')) # 输出 值2
# 当读取一个不存在的值时,默认返回Node
print(dic.get('str')) # 输出 None
print(dic.get('str', '不存在给个值')) # 输出 不存在给个值
dic2 = dic
print(dic2)
# 复制字典
dic2 = dic.copy()
print(dic2)
# 获取所有键的列表
print(dic.keys()) # 输出 dict_keys(['a', 'b', 'c'])
# 获取所有值的列表
print(dic.values()) # 输出 dict_values(['值1', '值2', '值3'])
# 获取所有键值对元组组成的列表
print(dic.items()) # 输出 dict_items([('a', '值1'), ('b', '值2'), ('c', '值3')])
# 更新成员,当键不存在时相当于加入
dic.update({'d': 4})
# 删除某个成员
dic.pop('b')
print(dic) # 输出 {'a': '值1', 'c': '值3', 'd': 4}
# 遍历
for key in dic:
print(dic[key])
运行结果:
{'a': '值1', 'b': '值2', 'c': '值3'}
值1
值2
None
不存在给个值
{'a': '值1', 'b': '值2', 'c': '值3'}
{'a': '值1', 'b': '值2', 'c': '值3'}
dict_keys(['a', 'b', 'c'])
dict_values(['值1', '值2', '值3'])
dict_items([('a', '值1'), ('b', '值2'), ('c', '值3')])
{'a': '值1', 'c': '值3', 'd': 4}
值1
值3
4
集合
创建文件demo08.py
# 定义一个集合
set1 = {1, 2, 3, 4, 5}
# 或者使用set函数
setList = [6, 7, 8, 9, 9, 9]
set2 = set(setList) # 或 set2 = set([])
set2.add(10) # 添加新元素
# 去掉了重复内容,而且无序
print(set2) # 输出 {6, 7, 8, 9, 10}
set3 = frozenset(setList) # 固定集合
# set3.add(10) # 报错,固定集合不能添加元素,会影响程序,可以采用错误处理解决报错带来的影响
# 错误处理
try:
set3.add(10) # 报错 AttributeError: 'frozenset' object has no attribute 'add'
except Exception as err:
print(err)
print('程序正常运行')
运行结果:
{6, 7, 8, 9, 10}
'frozenset' object has no attribute 'add'
程序正常运行
函数
# def 来定义一个函数
def printFun():
print("调用了函数")
# 调用函数
printFun()
# 定义一个无返回值函数
def voidFun(data):
# data 表示 形参 用于接收 实参 传过来的数据
# 需要传参 的就要写 形参
print('hello', data)
# 调用函数 并且传实参 'python'
voidFun('python')
# 定义一个有返回值函数
def sumFun(x, y):
s = x + y
# 格式化输出 , %d ->(表示整数),%f ->(表示浮点数), %s ->(表示字符串)
print("%d + %d = %d" % (x, y, s))
return s
# 调用函数后把返回值赋值给 val
val = sumFun(60, 6)
print("返回值", val)
# 不定长参数
def moreFun(*params):
print(params) # 输出 ({'值1', 'a'}, [2], 3)
for p in params:
print(p)
moreFun({'a', "值1"}, [2], 3)
# 空函数
def empty():
pass
# 调用函数
empty()
# 匿名函数
result = lambda x, y: x - y
print(result(100, 50)) # 输出 50
运行结果:
调用了函数
hello python
60 + 6 = 66
返回值 66
({'a', '值1'}, [2], 3)
{'a', '值1'}
[2]
3
50
文件读和写
open(file, mode=‘r’, encoding=“utf-8”) 打开文件
file: 要打开的文件,可以是绝对路径或相对路径
mode: 用于指定打开文件模式,默认值 r 表示文本读
encoding 文本模式下指定文件的字符编码
mode:
‘r’ 文本读取(默认)
‘w’ 文本写入,覆盖原有内容(慎用),文件不存在则创建
‘a’ 文本写,如果文件存在则在末尾追加,不存在则创建
# 打开文件
writeFile = open('./a.text', mode='w', encoding='utf-8')
# 写操作,写入文件内容
writeFile.write("写入文本")
# 手动关闭文件
writeFile.close()
# 打开文件
readFile = open('./a.text', mode='r', encoding='utf-8')
# 读操作,读取文件内容
content = readFile.read()
print(content)
# 手动关闭文件
readFile.close()
# 打开文件
adddFile = open('./a.text', mode='a', encoding='utf-8')
# 写操作,追加内容
adddFile.write("原有文本后面追加内容") # 可以手动点击 a.text 文件查看是否追加内容了
# 手动关闭文件
adddFile.close()
面向对象
面向对象三大特性
封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,提高复用性和安全性。
继承:一个类继承一个基类便可拥有基类的属性和方法,可提高代码的复用性。
多态:父类定义的引用变量可以指向子类的实例对象,提高了程序的拓展性。
# 定义一个类
class Zoon:
color = '黑色'
# 类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用
# self代表类的实例,无论构造方法还是其他方法都需要将 self 作为第一个参数
def __init__(self, name):
self.name = name
# 自定义方法(函数)
def weightFun(self, weight):
print("昵称:" + self.name + ";重量", weight, "kg")
print("使用类里面的属性==>", Zoon.color)
# 创建对象
cat = Zoon('猫')
# 访问猫的属性
print('cat.color==>', cat.color)
# 调用方法
cat.weightFun(20)
# 继承
class Dog(Zoon):
# 私有属性写法
__category = '中华田园犬'
# 私有方法
def __run(self):
print("外部调用不了私有方法,通过内部nameFun方法来调用")
def nameFun(self):
self.__run()
hotDog = Dog('热狗')
# 调用继承的方法
hotDog.weightFun(30)
# hotDog.__run() # 调用私有方法 报错
hotDog.nameFun()
运行结果:
使用类里面的属性==> 黑色
cat.color==> 黑色
昵称:猫;重量 20 kg
昵称:热狗;重量 30 kg
外部调用不了私有方法,通过内部nameFun方法来调用
最后想要继续深入学习python需要不断找文档和阅读文档、以及练习这是最重要的, 忌只看不练,是学不会的,多动手敲敲
更多参考:菜鸟教程 https://www.runoob.com/python3/python3-tutorial.html
本文本仅供学习交流