用于作者自身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))