Python学习笔记

用于作者自身Python学习生涯的代码计数与知识回顾,对您有用的话请按需自取,同时欢迎提出Python学习方面的意见与建议。

"""
@Project:test
@File:learn_note.py
@Author:liukun
@Date:2021/10/28 20:50
"""

name = "小刘"
age = 23
sex = "男"
price = 8.5
weight = 3
money = price * weight
print(type(name))
print(type(weight))
i = 10
f = 10.5
b = True
print(i*b)
price = float(input("请输入价格:"))  # 提示用户输入价格
weight = float(input("请输入重量:"))  # 提示用户输入重量
money = price * weight  # 计算总价
print("总价为%6.2f" % money)

输入年龄
a = int(input("请输入您的年龄:"))
b = int(input("请输入您的年龄:"))
# 判断年龄是否满了18岁
if a >= 60 or b >= 60:
    # 如果满了18岁就可以进网吧
    print("成绩合格!")
else:
    # 如果没满18岁就滚出去
    print("成绩不合格!!")

a = False
if not a:
    print("非本公司人员禁止入内!")

ticket = True
if ticket:
    print("请进行安检!!!")
    knife_len = float(input("请输入刀的长度:"))
    if knife_len >= 20:
        print("抓起来!!!")
    else:
        print("请进站!!!")
else:
    print("爬爬爬!!!")

import random
player = int(input("请出拳(石头-1,剪刀-2,布-3):"))
computer = random.randint(1, 3)
if (player == 1 and computer == 2) \
        or (player == 2 and computer == 3) \
        or (player == 3 and computer == 1):
    print("你出的是 %d ,对手出的是 %d ,你赢了!!!" % (player, computer))
elif player == computer:
    print("你出的是 %d ,对手出的是 %d ,平局!!!" % (player, computer))
else:
    print("你出的是 %d ,对手出的是 %d ,你输了!!!" % (player, computer))

print("hello world\t" * 20)

i = 0
while i <= 10:
    if i == 3:
        i = i + 1
        continue
    print(i)
    i = i + 1
print("over")

i = 1
print("九九乘法表")
while i <= 9:
    j = 1
    while j <= i:
        print("%d * %d =%d\t" % (j, i, i * j), end="")  # 不自动换行
        j = j + 1
    i = i + 1
    # 自动换行
    print("")
print("打印完成!!!")

i = 1
print("等腰九九乘法表")
while i <= 9:
    j = 1
    print("      " * (9 - i), end="")
    while j <= i:
        print("%d * %d =%d\t" % (j, i, i * j), end="")  # 不自动换行
        # print(" " * ((9 - i) // 2), end="")
        j = j + 1
    i = i + 1
    # 自动换行
    print("")
print("你真棒!!!")

def multiple_table():
    i = 1
    print("等腰九九乘法表")
    while i <= 9:
        j = 1
        print("      " * (9 - i), end="")
        while j <= i:
            print("%d * %d =%d\t" % (j, i, i * j), end="")  # 不自动换行
            # print(" " * ((9 - i) // 2), end="")
            j = j + 1
        i = i + 1
        # 自动换行
        print("")
    print("你真棒!!!")

def hello():
    """打招呼"""
    print("hello")
    print("你好")
    print("hai")


print("小明")
hello()
print("小刘")

def test():
    print("hello")


def he(num1, num2):
    test()
    print("%d + %d = %d" % (num1, num2, num1 + num2))


a = int(input("请输入a:"))
b = int(input("请输入b:"))
he(a, b)

def print_line(a, b):
    """
    打印单行分割线
    :param a:打印字符
    :param b:打印次数
    :return:
    """
    print(a * b)


def print_lines(b, c):
    """
    打印多行分割线
    :param b: 打印字符
    :param c: 打印次数
    :return:
    """
    a = 0
    while a < 5:
        # b = input("请输入分隔符:")
        # c = input("请输入分割次数:")
        print_line(b, c)
        a += 1

name_list = ["liukun", "张三", "wangmian"]
temp_list = ["sunwukong", "zhuerge", "shashidi"]
for name in name_list:
    print("我的名字是:%s" % name)
name_list.sort()
print(name_list)
temp_list.sort()
print(temp_list)
name_list.sort()
print(name_list)
temp_list.sort(reverse=True)
print(temp_list)
# 1.取值或取索引
print(name_list[0])
print(name_list.index("zhangsan"))
# 2.修改
name_list[1] = "pengyouwei"
print(name_list)
# 3.增加
name_list.append("linzhiming")
print(name_list)
name_list.insert(2, "gongziyi")
print(name_list)
name_list.extend(temp_list)
print(name_list)
# 4.删除
name_list.remove("gongziyi") #删除第一次出现的数据
print(name_list)
name_list.pop(3)  # del name_list[3]
print(len(name_list))
print(name_list.count("liukun"))
print(name_list)
name_list.clear()
print(name_list)
info_tuple = ("zhangsan", 185, 65)
single_tuple = ("liukun",)  # 元组只包含一个元素时,应在后面加上括号
print(info_tuple[2])
print(info_tuple.index(185))
print(info_tuple.count("zhangsan"))
print("我的名字是:%s,身高是 %0.2f cm,体重是 %0.2f kg"
      % info_tuple)

info_dic = {"name": "liukun",
            "age": 23,
            "sex": "男",
            "身高": 168,
            "体重": 70}
for k in info_dic:
    print("%s 是 %s" % (k, info_dic[k]))
# 1取值
print(info_dic["name"])
print(info_dic.get("age"))
# 2.增加、修改
info_dic["民族"] = "汉族"
print(info_dic)
info_dic["age"] = 18
print(info_dic)
# 3.删除
info_dic.pop("age")
print(info_dic)
# 4.统计键值对数量
print(len(info_dic))
# 5.合并字典
temp_dict = {"age": 23}
info_dic.update(temp_dict)
print(info_dic)
# 6.清空字典
info_dic.clear()
print(info_dic)
info_list = [
    {"name": "liukun",
     "age": 23,
     "sex": "男",
     "身高": 168,
     "体重": 70},
    {"name": "wangmian",
     "age": 23,
     "sex": "男",
     "身高": 172,
     "体重": 50}
]
for k in info_list:
    print(k)

str1 = "hello world"
str2 = '我来自"四川达州"'
# 1.遍历字符串
for k in str1:
    print(k, end="")
print("")
# 2.统计字符串长度
print(len(str1))
print(len(str2))
# 3.统计字符出现的次数
print(str1.count("l"))
# 4.字符出现的位置
print(str1.index("l"))
# 5.判断是否全为空白字符
print(str1.isspace())  # 判断是否全为空白字符,制表符、换行、回车也属于空白字符
str3 = "一千零一"
print(str3)
# 6.判断是否为数字
# 都不能判断小数,一般选择isdecimal()方法
print(str3.isdecimal())  # 只能判断纯数字
print(str3.isdigit())  # 可以判断纯数字和特殊数字,比如\u00b2等
print(str3.isnumeric())  # 除了可以判断纯数字和特殊数字,还可以判断中文数字,比如"一千零一"
# 7.字符查找和替换
print(str1.startswith("h"))  # 判断是否以指定的字符开始
print(str1.endswith("h"))  # 判断是否以指定的字符结束
print(str1.find("lo"))  # 查找指定的字符串,如果不存在,会返回-1
print(str1.index("lo"))  # 查找指定的字符串,如果不存在,会报错
print(str1.replace("world", "liukun"))  # 替换指定的字符串,产生一个新的字符串,不会修改原有字符串
# 8.文本对齐
poem = ["登鹳雀楼",
        "王之涣",
        "白日依山尽,",
        "黄河入海流。",
        "欲穷千里目,",
        "更上一层楼。"]
for k in poem:
    print("|%s|" % k.center(10, " "))
    print("|%s|" % k.ljust(10, " "))
    print("|%s|" % k.rjust(10, " "))
# 9.去除空白字符
poem = ["\t登鹳雀楼",
        "王之涣",
        "白日依山尽,\t\n",
        "黄河入海流。",
        "欲穷千里目,",
        "更上一层楼。"]
for k in poem:
    k = k.strip()
    print("|%s|" % k.center(10, " "))
    print("|%s|" % k.ljust(10, " "))
    print("|%s|" % k.rjust(10, " "))
# 10.字符串的拆分和拼接
poem_str = "登鹳雀楼\t\n王之涣\t\n白日依山尽\n黄河入海流\n欲穷千里目\n\t更上一层楼\n"
print(poem_str.split())  # 拆分
print(" ".join(poem_str.split()))  # 拼接
# 11.字符串的切片
num_str = "0123456789."
print(num_str[:-1])
print(num_str[::])
print(num_str[::-1])
# 数据搜索时用for...else...循环
stu = [
    {"name": "liukun",
     "age": 23,
     "sex": "man",
     "gender": "汉族"},
    {"name": "wangmian",
     "age": 22,
     "sex": "man",
     "gender": "汉族"}
]
find_name = "linzhiming"
for k in stu:
    print(k)
    if k["name"] == find_name:
        print("找到了 %s" % find_name)
        break
else:
    print("没有找到 %s" % find_name)
print("循环结束!!!")
def test(num):
    print("数值 %s 在函数内部的地址是 %s" % (num, id(num)))
a = 10
print("数值 %s 在内存中的地址是 %s" % (a, id(a)))
test(a)
def demo(num_list):
    num_list.append(9)
    print(num_list)
    print("函数执行完成!!!")
gl_list = [1, 2, 3]
demo(gl_list)
print(gl_list)

def demo(num, *nums, **person):
    print(num)
    print(nums)
    print(person)


demo(1)
demo(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, name="小明", age=23)
# 计算所有输入数字的和
def sum_num(args):
    """
    求和函数
    :param args:
    :return:
    """
    num = 0
    # print(args)
    for n in args:
        num += int(n)
    # print(num)
    return num


input_list = []
while True:
    a = input("请输入一个数字(输入其他字符立即结束输入):")
    if a.isdecimal():
        # 判断输入是否为纯数字
        input_list.extend(a)
    else:
        # 若输入不为纯数字,则立即结束输入
        break
print("您输入的数字为:", end="")
for i in input_list:
    print(i, end=" ")
print(",", end="")
print("和为 %s" % sum_num(input_list))
def demo(*args, **kwargs):
    """
    :param args:
    :param kwargs:
    :return:
    """
    print(args)
    print(kwargs)
gl_tuple = (1, 2, 3)
gl_dic = {"name": "liukun", "age": 23}
demo(*gl_tuple, **gl_dic)  # 拆包语法,简化元组变量/字典变量的传递
def sum_num(num):
    """
    递归函数求和
    :param num:
    :return:
    """
    # 递归出口,当参数满足某个条件时,函数不再执行,没有出口会出现死循环
    if num == 1:
        return 1  # 返回1再与其他数的和相加
    # 递归函数,自己调用自己
    temp = sum_num(num - 1)
    return num + temp
print(sum_num(5))


class Cat:
    def __init__(self, name, age):
        """
        self方法内部定义属性
        """
        self.name = name
        self.age = age
    def eat(self):
        print("%d岁 的 %s 爱吃鱼" % (self.age, self.name))
    def drink(self):
        print("%s 要喝水" % self.name)
    def __del__(self):
        print("凉凉")
    def __str__(self):
        # 必须返回一个字符串
        return "我是一只小猫%s" % self.name
tom = Cat("Tom", 2)
tom.eat()
tom.drink()
print(tom)
lazy_cat = Cat("大懒猫", 3)
lazy_cat.eat()
lazy_cat.drink()
class People:
    def __init__(self, name, weight):
        self.name = name
        self.weight = weight
    def __str__(self):
        return "我的名字叫 %s ,体重是 %.2f 公斤" % (self.name, self.weight)
    def run(self):
        self.weight -= 0.5
    def eat(self):
        self.weight += 1
demo1 = People("小明", 65)
demo1.run()
demo1.eat()
print(demo1)
demo2 = People("小美", 50)
demo2.run()
print(demo2)
class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return "[%s] 占地 %.2f 平米" % (self.name, self.area)
class House:
    def __init__(self, house_type, area):
        self.house_type = house_type
        self.area = area
        # 剩余面积
        self.rest = area
        # 家具名称列表
        self.house_item_list = []
    def __str__(self):
        return "户型:%s\n总面积:%0.2f平米\n剩余面积:%.2f平米\n家具列表:%s" \
               % (self.house_type, self.area, self.rest, self.house_item_list)
    def add_Item(self, item):
        if item.area <= self.rest:
            print("要添加的家具有:%s" % item)
            self.rest -= item.area
            self.house_item_list.append(item.name)
        else:
            print("%s 占地面积过大,请选择其他家具!!!" % item.name)
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 90)
table = HouseItem("餐桌", 1.5)
# 创建房子
my_home = House("两室一厅", 80)
# 添加家具
my_home.add_Item(bed)
my_home.add_Item(chest)
my_home.add_Item(table)
print(my_home)
# 士兵突击
class Gun:
    def __init__(self, name):
        self.name = name
        self.bullet_count = 0
    def __str__(self):
        return "枪的名字是 %s, 有 %d 发子弹" % (self.name, self.bullet_count)

    def add_bullet(self, count):
        self.bullet_count += count
        print("子弹装填完毕,目前有 %s 发子弹" % self.bullet_count)
    def shoot(self):
        if self.bullet_count > 0:
            self.bullet_count -= 1
            print("发射成功,剩余 %s 发子弹" % self.bullet_count)
            return
        else:
            print("%s 弹夹里面没有子弹,装填中..." % self.name)
            Gun.add_bullet(self, 60)
            print("%s 子弹装填完毕,请重新发射" % self.name)
            Gun.shoot(self)
class Solider:
    def __init__(self, name):
        self.name = name
        self.weapon = None
    def fire(self):
        if self.weapon is None:
            print("%s 还没有枪..." % self.name)
            return
        print("冲啊,%s ..." % self.name)
        self.weapon.shoot()
weapon1 = Gun("AK47")
knight = Solider("xusanduo")
knight.fire()
knight.weapon = weapon1
knight.fire()
# 私有属性和私有方法
class Woman:
    def __init__(self, name):
        self.name = name
        # 私有属性,对象的方法内部可以访问
        self.__age = 18
    def __secret(self):
        """
        私有方法
        :return:
        """
        print("%s 的年龄是 %d" % (self.name, self.__age))
woman = Woman("小芳")
# 私有属性和私有方法也可以通过特殊方式被访问
print(woman._Woman__age)
woman._Woman__secret()
类的继承:父类和子类
class Animal:
    def __init__(self):
        self.num = 100
        self.__num = 200
    def __num(self):
        print("哈哈哈")
    def eat(self):
        print("吃")
    def drink(self):
        print("喝")
    def run(self):
        print("跑")
    def jump(self):
        print("跳")
class Dog(Animal):
    def bark(self):
        a = self.num
        # 子类不能调用父类的私有属性
        b = self.__num
        print("%s 汪汪叫 %s" % (a, b))  # b不能被访问
        # 子类不能调用父类的私有方法
        self.__num()  # __num()不能被访问
class XiaoTianQuan(Dog):
    def fly(self):
        print("飞")
    # 子类对父类方法重写
    def bark(self):
        print("叫的跟神一样")
    # 子类对父类方法进行扩展
    def bark1(self):
        print("叫的跟神一样")
        super().bark()
        print("哇哇哇哇")
class Cat(Animal):
    def catch(self):
        print("抓老鼠")
wangcai = Dog()
wangcai.drink()
gou = XiaoTianQuan()
gou.eat()
gou.bark()
gou.bark1()
#  多继承
class A:
    def test(self):
        print("testA方法")
    def demo(self):
        print("demoA方法")
class B:
    def test(self):
        print("testB方法")
    def demo(self):
        print("demoB方法")
class C(A, B):
    """
    子类拥有多个父类
    """
    pass
c = C()
c.demo()  # 如果多个父类拥有相同的方法,子类会根据继承顺序调用方法
c.test()
"""
面向对象三大特性:封装、继承、多态
1.封装:根据职责将属性和方法封装到一个抽象的类中
2.继承:实现代码的重用
3.多态:不同的子类调用相同的父类方法,产生不同的执行结果
"""
# 类属性和类方法
class Tool(object):
    count = 0  # 定义类属性,只用来记录类相关的特征,不随对象改变
    def __init__(self, name):
        self.name = name
        Tool.count += 1
    @classmethod
    def show_tool_count(cls):
        """
        类方法
        :return:
        """
        print("有 %s 种工具" % cls.count)
tool1 = Tool("斧头")
tool2 = Tool("锤子")
print(Tool.count)
print(tool2.count)
Tool.show_tool_count()
tool2.show_tool_count()
静态方法
class Dog(object):
    # 如果一个方法不访问实例属性/类属性(即不需要传递属性),就定义为静态方法
    @staticmethod
    def run():
        """
        静态方法
        :return:
        """
        print("小狗要跑。。。")
Dog.run()
# 静态方法、类方法、实例方法综合演练
"""
1.实例方法:方法内部需要访问到实例属性
2.类方法:方法内部只需要访问类属性
3.静态方法:方法内部不需要访问实例属性和类属性
"""
class Game(object):
    top_score = 0
    def __init__(self, player_name):
        self.name = player_name
    def start_game(self):
        print("%s 请开始游戏" % self.name)
    @classmethod
    def show_top_score(cls):
        print("最高分为 %s" % cls.top_score)
    @staticmethod
    def show_help():
        print("游戏帮助")
player1 = Game("xiaoming")
player1.start_game()
player1.show_top_score()
player1.show_help()
# 根据错误类型捕获异常
try:
    num = int(input("请输入一个整数:"))
    result = 8/num
    print(result)
except ZeroDivisionError:
    print("请不要输入0")
except ValueError:
    print("请输入整数:")
# 捕获未知错误
try:
    num = int(input("请输入一个整数:"))
    result1 = 8/num
    print(result1)
except Exception as result:
    print("未知错误:%s" % result)
# 异常捕获完整语法
try:
    num = int(input("请输入一个整数:"))
    result1 = 8/num
    print(result1)
except Exception as result:
    print("未知错误:%s" % result)
else:
    print("尝试成功")
finally:
    print("无论是否出现异常都会执行")
print("*"*20)
# 利用异常的传递性,在主程序捕获异常
def demo1():
    return int(input("请输入一个整数:"))
def demo2():
    return demo1()
try:
    print(demo2())
except Exception as result:
    print("未知错误:%s" % result)
# raise主动抛出异常
def input_password():
    password = input("请输入密码:")
    if len(password) >= 8:
        return password
    ex = Exception("密码长度不够")
    raise ex
try:
    print(input_password())
except Exception as result:
    print(result)
# 只读文件
str1 = "liukun"
file = open("ReadMe", "r")
print(file.read())
file.close()
# 只写文件(覆盖原有文件)
str1 = "liukun"
file = open("ReadMe", "w")
file.write(str1)
file.close()
# 只写文件(追加文件)
str2 = "hello"
file = open("ReadMe", "a")
file.write(str2)
file.close()
# 按行读取文件
file = open("ReadMe")
while True:
    text = file.readline()
    if not text:
        break
    print(text)
file.close()
# 复制文件
file1 = open("ReadMe", "r")
file2 = open("ReadMe1", "w")
while True:
    text = file1.readline()
    if not text:
        break
    file2.write(text)
    print(text)
file1.close()
file2.close()
# 导入os模块,执行文件和目录管理操作
import os
os.rename("ReadMe1", "ReadMe[复制]")  # 重命名
os.remove("ReadMe[复制]")  # 删除文件
# eval使用
str1 = input("请输入一个算式:")
print(eval(str1))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

willing秋刀鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值