Python基础语法使用(数据类型、input、if、函数、随机数、类、try-catch、unittest单元测试

1. 数据类型

1.1 字符串

  1. 字符串格式化
    name = 'zhang_san'
    age = 18
    
    str = f'name: {name}, age: {age}'
    print(str)

输出如下

name: zhang_san, age: 18
  1. 字符串大小写转换
    str = 'my name'

    print(str.title())
    print(str.lower())
    print(str.upper())

输出如下:

My Name
my name
MY NAME
  1. 去除左右空白字符: lstrip()、rstrip()、strip()

  2. 判断字符串是否存在于某个字符串

if __name__ == '__main__':

    str = 'i love china'
    if 'china' in str:
        print('love')           # love
  1. 字符串替换replace
if __name__ == '__main__':

    str = '1 2 3 1 2 3'
    new_str = str.replace('3', '6')
    print(new_str)                      # 1 2 6 1 2 6
  1. 计算字符串在某个字符串中出现的次数
if __name__ == '__main__':

    str = 'AAAAA'
    num = str.count('AA')
    print(num)                # 2

1.2 数值操作

if __name__ == '__main__':

    # 乘方
    print(3 ** 2)       # 9

    # 小数精度问题
    print(0.1 + 0.2)    # 0.30000000000000004

    # 两数相乘结果总是浮点数
    print(6 / 3)        # 2.0

    # 数值较大, 加下划线使结构更清晰
    print(12_34_567_89.12_3)        # 123456789.123

1.3 列表操作

生成数值列表

if __name__ == '__main__':
   # 从1开始, 到10结束(不包含), 步长为2的列表
   list1 = list(range(1, 10, 2))
   print(list1)                    # [1, 3, 5, 7, 9]

列表索引

if __name__ == '__main__':
    list2 = [1, 2, 3, 4, 5]
    print(list2[-1])        # 5
    print(list2[-2])        # 4

列表切片

if __name__ == '__main__':
    # 从1开始, 到6结束(不包含), 步长为2的切片
    list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    print(list3[1:6:2])         # [2, 4, 6]

列表元素删除

if __name__ == '__main__':
    # 使用del删除指定索引元素
    list4 = [1, 2, 3, 4, 5]
    del list4[0]
    print(list4)                # [2, 3, 4, 5]


    # 使用pop删除指定索引元素, 不传索引值默认删除列表最后一个元素
    list5 = [1, 2, 3, 4, 5]
    pop_value = list5.pop(2)
    print(pop_value)            # 3
    print(list5)                # [1, 2, 4, 5]

    # 删除指定值的元素, 只删除第一个遇到的值
    list6 = [1, 2, 3, 4, 5, 3]
    list6.remove(3)
    print(list6)                # [1, 2, 4, 5, 3]

列表排序

if __name__ == '__main__':
    # 改变原列表顺序
    list7 = [1, 3, 5, 8, 6, 2]
    list7.sort(reverse=True)
    print(list7)                # [8, 6, 5, 3, 2, 1]

    # 不改变原列表顺序
    list8 = [1, 3, 5, 8, 6, 2]
    sorted_list = sorted(list8, reverse=True)
    print(list8)                # [1, 3, 5, 8, 6, 2]
    print(sorted_list)          # [8, 6, 5, 3, 2, 1]

列表元素翻转

if __name__ == '__main__':
    list9 = [1, 3, 5, 8, 6, 2]
    list9.reverse()
    print(list9)                # [2, 6, 8, 5, 3, 1]

列表复制

if __name__ == '__main__':
    list10 = [1, 3, 5, 8, 6, 2]
    copy_list = list10[:]
    print(copy_list)        # [1, 3, 5, 8, 6, 2]

求列表的最小值、最大值、求和

if __name__ == '__main__':
    list11 = [1, 3, 5, 8, 6, 2]
    print(min(list11))          # 1
    print(max(list11))          # 8
    print(sum(list11))          # 25

1.4 元组操作

元组的值不可修改

定义元组

if __name__ == '__main__':
    tuple1 = (1, )
    print(tuple1)       # (1,)

用元组给多个变量赋值

if __name__ == '__main__':
    a, b, c = 1, 2, 3
    print(a)        # 1
    print(b)        # 2
    print(c)        # 3

1.5 字典操作

删除key

if __name__ == '__main__':
    person_dict = {"name":"zhang_san", "age":18}

    del person_dict["age"]
    print(person_dict)          # {'name': 'zhang_san'}

通过get获取key的值

if __name__ == '__main__':
    person_dict = {"name":"zhang_san", "age":18}

    print(person_dict.get("age"))           # 18
    print(person_dict.get("age", 3))        # 18
    print(person_dict.get("score"))         # None
    print(person_dict.get("score", 100))    # 100

获取key和value的列表

if __name__ == '__main__':
    person_dict = {"name":"zhang_san", "age":18}

    print(person_dict.values())     # dict_values(['zhang_san', 18])
    print(person_dict.items())      # dict_items([('name', 'zhang_san'), ('age', 18)])

1.6 set操作

set集合中的数据不重复,但是无序的

if __name__ == '__main__':

    names = ["zhang_san", "li_si"]

    set_names = set(names)
    print(set_names)        # {'li_si', 'zhang_san'}, 再次执行可能是{'zhang_san', 'li_si'}

2. 输入input

if __name__ == '__main__':

    promt = "我们来玩个游戏\n请输入您喜欢的水果, 然后按回车确认: "
    fruit = input(promt)

    print(f"\n您喜欢的水果是{fruit}")
我们来玩个游戏
请输入您喜欢的水果, 然后按回车确认: 榴莲

您喜欢的水果是榴莲

3. if语句

列表不为空,则为True

if __name__ == '__main__':

    names = ['zhang_san']

    if names:
        print('hello world')

输出结果如下:

hello world

变量为None或空字符串,则为False

if __name__ == '__main__':

    value1 = None
    value2 = ""

    if value1:
        print('hello')

    if value2:
        print('world')

    print('end')     

输出如下

end

4. 函数def

函数中可以对传入的列表进行修改

def change_list_value(test_list):

    for index, value in enumerate(test_list):
        test_list[index] = value + 10


if __name__ == '__main__':

    test_list = [1, 2, 3, 4, 5]
    change_list_value(test_list)

    print(test_list)        # [11, 12, 13, 14, 15]

4.1 变长元组参数

变长元组参数需放在函数参数的末尾,将接收到的值封装到这个空元组

def print_fruit(*fruit):

    print(fruit)


if __name__ == '__main__':

    print_fruit()                               # ()
    print_fruit("apple")                        # ('apple',)
    print_fruit("apple", "banana", "orange")    # ('apple', 'banana', 'orange')

4.2 变长字典参数

变长字典参数初始化是一个空字典,接收多个键值对然后存入到该字典

def print_dict(**test_dict):

    print(test_dict)


if __name__ == '__main__':

    print_dict()                                # {}
    print_dict(name = "zhang_san")              # {'name': 'zhang_san'}
    print_dict(name = "zhang_san", age = 10)    # {'name': 'zhang_san', 'age': 10}

5. 随机数

返回两个数之间的整数,随机数可能是这两个数

import random

if __name__ == '__main__':

    print(random.randint(1, 10))        # 3

从集合中随机选择一个元素

import random

if __name__ == '__main__':

    nums = [1, 2, 3, 4, 5]
    print(random.choice(nums))      # 5

6. 类Class

# 父类
class Car:
    """我是类中的注释"""
    def __init__(self, brand = "捷达"):
        self.brand = brand
        self.price = 100

    def get_car_info(self):
        car_info = f"{self.brand} {self.price}"
        return car_info

    def modify_price(self, new_price):
        if new_price > self.price:
            self.price = new_price

# 属性类
class Battery:
    def __init__(self, battery_size):
        self.battery_size = battery_size

    def get_battery_size(self):
        return self.battery_size

# 子类继承父类
class ElectricCar(Car):
    def __init__(self, brand, model, battery_size):
        super().__init__(brand)
        self.model = model
        """将实例用作属性"""
        self.battery = Battery(battery_size)

    """覆盖父类的方法"""
    def modify_price(self, new_price):
        self.price = new_price

if __name__ == '__main__':
    my_car = Car('宝马')
    my_car.brand = '奔驰'
    my_car.modify_price(90)
    print(my_car.get_car_info())

    my_electric_car = ElectricCar('特斯拉', 'Model 3', 500)
    my_electric_car.modify_price(90)
    print(my_electric_car.get_car_info())
    print(my_electric_car.battery.get_battery_size())

执行的输出如下:

奔驰 100
特斯拉 90
500

7. try-catch-else-finally异常处理

if __name__ == '__main__':

    try:
        # 此处定义的变量, 在try部分共享
        share_value = 'share_value'
        10 / 0

    except(ZeroDivisionError,FileNotFoundError,ValueError) as e:
        print("出现异常时, 执行此部分")
        print(e)
        
    except Exception as all_e:
        print(all_e)

    else:
        print("没有异常, 执行此部分")

    finally:
        print(share_value)
        print("不管有没有异常, 我都会被执行")

输出如下:

出现异常时, 执行此部分
division by zero
share_value
不管有没有异常, 我都会被执行

8. unittest单元测试

常用的测试方法如下:

方法用途
assertEqual(a, b)a等于b,则测试通过,否则测试失败
assertNotEqual(a, b)a不等于b,则测试通过,否则测试失败
assertTrue(x)x为True,则测试通过,否则测试失败
assertFalse(x)x为False,则测试通过,否则测试失败
assertIn(item, list)item在list中,则测试通过,否则测试失败
assertNotIn(item, list)item不在list中,则测试通过,否则测试失败

my.app.py内容如下:

def get_double_money(money):
    return money * 2

class Fruits:
    def __init__(self):
        self.fruit_names = []

    def add_fruit_name(self, new_fruit_name):
        self.fruit_names.append(new_fruit_name)

unit_test.py内容如下:

import unittest
from my_app import get_double_money, Fruits

class GetDoubleMoneyTest(unittest.TestCase):

    """相当于__init__方法"""
    def setUp(self):
        self.test_money = 200
        self.test_fruit_name = 'apple'

    def test_get_double_money(self):
        result_money = get_double_money(100)
        """相等则测试通过, 不相等则测试失败"""
        self.assertEqual(result_money, self.test_money)

    def test_add_fruit(self):
        fruits = Fruits()
        fruits.add_fruit_name(self.test_fruit_name)
        """值在列表中则测试通过, 值不在列表中则测试失败"""
        self.assertIn(self.test_fruit_name, fruits.fruit_names)

if __name__ == '__main__':
    """以test_开头的方法, 将自动运行"""
    unittest.main()

该测试示例中的测试,全部通过,测试结果如下:
单元测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值