Python-基础篇

打印

  1. 字符串连接

    print("Hello" + " World" + "!")
    
  2. 单双引号转义

    print("Hello 'World' !")
    print('Hello "World" !')
    print("Hello \"'World' !\"")
    
  3. 换行

    print("Hello \nWorld!")
    
  4. 三引号跨行字符串

    print("""第一行
    第二行
    第三行""")
    
  5. 字符串和数字一起打印

    # 方法一
    name = "小明"
    age = 18
    print("姓名:" + name + ",年龄:" + str(age))  # 输出:姓名:小明,年龄:18
    
    # 方法二
    score = 95
    print("分数是", score, "分")  # 输出:分数是 95 分
    
    # 方法三
    num = 100
    print(f"这是数字:{num}")  # 输出:这是数字:100
    
    		# 还能直接在 {} 里做计算
    print(f"10 + 20 = {10 + 20}")  # 输出:10 + 20 = 30
    
    # 方法四
    price = 99.9
    print("价格:{}元".format(price))  # 输出:价格:99.9元
    
    		# 多个占位符时按顺序传入
    a, b = 3, 4
    print("{} + {} = {}".format(a, b, a + b))  # 输出:3 + 4 = 7
    
  6. 其他

    print("喵" * 3)	# 喵喵喵
    

变量

hello = "Hello"
name = "王五"
print(hello + "张三")
print(hello + name)
name = "李四"
print(hello + name)

对于变量的命名:python采用下划线命名法,java用驼峰命名

运算

优先级:

  • 括号()
  • 乘方**
  • 乘除*/
  • 加减±
result = 3 ** 2
print(result)		# 9

引入math函数库则有更多计算方式

import math

result = math.sqrt(4)	# 也可写为 4 ** (1/2)
print(result)		# 2.0

注释

# 单行注释

"""
多行注释可用三引号
"""

数据类型

# 获取数据类型
result = "slc666"
print(type(result))
# 结果:<class 'str'>
  • 字符串

    result = "slc666"
    result3 = "slc666"[2]	# c
    result3 = result[2]		# c
    length = len(result)	# 6
    
    # 其他类型转字符串
    num = 666
    print(type(num))	# <class 'int'>
    num = str(num)
    print(type(num))	# <class 'str'>
    
  • 整数

    # 字符串转int(例如用户输入年龄,默认为字符串,我们就要转成int)
    x = input("请输入:")	# 输入123
    print(type(x))			# <class 'str'>
    x = int(x)
    print(type(x))			# <class 'int'>
    
  • 浮点数

    print(float(x))		# 123.0(其他类型转浮点数)
    
  • 布尔

    result = True		# 大写
    result = False
    
  • 空值

    res = None
    print(res)			# None
    print(type(res))	#  <class 'NoneType'>
    
  • 列表

    # 可理解为可变动态数组
    x = []
    print(x)		# []
    x = [1,2,3]
    print(x)		# [1, 2, 3]
    x.append(4)
    print(x)		# [1, 2, 3, 4]
    

    还有很多方法及函数

    • len(x)
    • x.remove()
    • max(x)
    • min(x)
    • sorted(x)
  • 元组

    # 可理解为不可变数组
    x = (slc,1)
    

    数组不可在字典中作为key,而元组可以

    因为key要求是不可变的

  • 字典

    # 可理解为map
    x = {
        "slc": 666,
        "name": "hello",
        "age": 18,
    }
    print(x)	# {'slc': 666, 'name': 'hello', 'age': 18}
    
    x = {					# 元组作为key
        ("slc",1): "123",
        ("slc",2): "456",
        ("slc",3): "789"
    }
    print(x)
    x[("slc",4)] = "abc"	# 添加/修改键值对
    print(x)
    result = ("slc",1) in x	# 判断key是否存在,存在即修改,不在则添
    print(result)	# True
    del x[("slc",1)]		# 删除键值对
    result = ("slc",1) in x
    print(result)	# False
    
    x.keys()	# 所有键
    x.values()	# 所有值
    x.items()	# 所有键值对
    

输入

x = input("请输入:")
print(x)
# 用户输入结果x默认是字符串类型

条件判断

x = int(input("请输入你的分数:"))
if x >= 60:			# 冒号
    print("通过")		# 缩进
elif x >= 20:		# 甚至可以:60 > x >= 20
    print("再接再厉")
else:
    print("回家吧孩子")

与或非:

  • and
  • or
  • not

循环

  1. for循环
x = {
    ("slc",1): "123",
    ("slc",2): "456",
    ("slc",3): "789"
}
for k, v in x.items():	# key给k,value给v
    print(k, v)
    
for y in x.items():		# y是元组,key和value作为里面的元素
    print(y)
for i in range(5):		# 相当于循环5次(rang(0,5))
    print("hello")

x = 0
for i in range(1,101):	# 赋值i从1到100
    x = x + i
print(x)			# 5050

# range(1,10,2)			:1,3,5,7,9
#对应 起始、结束、步长
  1. while循环
x = 0
for i in range(1,101):
    x += i
print(x)	# 5050

x = 0
i = 0
while i < 101:
    x = x + i
    i = i + 1
print(x)	# 5050

函数

def ca (x,y):
    print(x+y)
    return "good!"

num1 = 123
num2 = 456
ca(num1,num2)	# 579
print(ca(num1,num2))	# good!

模块

首先要明确模块分为:

  • 官方库

    直接导入使用

  • 第三方库

    1. 先下载(pip)
    2. 再导入(import)

##面向对象

class Cat:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def speak(self):
        print('喵' * self.age)

cat1 = Cat('wl',3)
print(cat1.name)	# wl
print(cat1.age)		# 3
cat1.speak()		# 喵喵喵

继承

# 定义父类
class Mammal:
    def __init__(self, name, sex):
        self.name = name
        self.sex = sex

    def breath(self):
        print(self.name + "在呼吸")

    def eat(self):
        print(self.name + "在吃东西")
# 定义子类
class Dog(Mammal):		# Dog类继承Mammal类
    def __init__(self, name, sex):
        super().__init__(name, sex)
        self.type = "Dog"

    def bark(self):
        print(self.name + "在叫")
dog = Dog("旺财", "公")
dog.breath()	# 即使子类Dog中没有breath方法,但因为继承,依旧可调用
dog.bark()

文件操作

  1. 读操作
# 相对路径
f = open("test.txt", "r", encoding="utf-8")
# 绝对路径
f1 = open("D:\\Program Files\\python\\PythonProject\\python-demo\\test.txt", "r", encoding="utf-8")

# print(f.read()) # 一次全读
# print(f.read(10))   # 调用10个字节的文件内容
# print(f.readline()) # 读一行
lines = f.readlines()	# 一次全读,每行作为一个元素存入列表
for line in lines:
    print(line.strip())
    
f.close()	# 记得关闭资源
# 缩进表示文件对象f的作用域
# 结束后自动关闭资源
with open("test.txt", "r", encoding="utf-8") ad f:
    print(f.read())
  1. 写操作
# 覆盖
with open('hello.txt', 'w', encoding='utf-8') as f:
    f.write('Hello World')

# 追加
with open('hello.txt', 'a', encoding='utf-8') as f:
    f.write('\nHello World!')
    
# Hello World
# Hello World!

或者直接在读文件时也写文件

传递参数就不传递“r”,而传递“r+”

就即可调用read,又可调用write(且写操作默认为追加)

异常处理

try:
    x = int(input("请输入你的年龄:"))
except ValueError:
    print("请输入数字")
except:
    print("未知错误,请重试")
else:		# 未异常
    print("你的年龄是:", x)
finally:	# 不管是否异常,都执行
    print("程序结束")

测试

首先需要知道assert

assert False	# assert后面的语句如果是False,则抛出AssertionError

通过这个异常,我们可以编写测试用例

# 新开一个python文件并导入测试需要的库unittest
import unittest
from demo import one

class TestOne(unittest.TestCase):
    def test_one(self):     # 必须以test_开头
        # assert one.add_demo(1, 2) == 3
        self.assertEqual(one.add_demo(1, 2), 3)

if __name__ == '__main__':
    unittest.main() 	 # 执行测试

最后直接运行这个测试的py文件即可

程序会自动搜寻所有的测试用例并执行

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐