North_Cedar's notes

更新于 1,727 字约 4 分钟个人备忘

我的Python备忘录

本人写代码经常会忘,所以新建一篇文章专门用来记录代码,此文会持续更新,日期是第一次发布日期

如果忘了想要捡起来,就照着下面自己去编译器里面敲,运行看结果!

需要注意的点:

输入的值

输入得到的值都是字符串,想要得到整数需加 num = int(input(“请输入一个整数:”)) 接收多个整数输入:

inputs = input("请输入多个整数,用空格隔开:")

# split()按空格切分成列表,map()将每一个元素转换成int
a, b, c = map(int, input.split())

print(f"a={a}, b={b}, c={c}")

如果输入小数就先转换成float再转换成整型

处理异常情况就用try-except 语句

try:
    num = int(input("请输入一个整数:"))
    print(f"输入的数字是{num}")
except ValueError:
    ptint("输入有误!请输入纯数字,且不包含小数")

range语句

1.range(num) 是从0开始到num-1结束。如range(5)取得的数据是:[0,1,2,3,4]

2.rnage(num1,num2) 是从num1开始到num2-1结束

3.range(num1,num2,step) 是从num1开始到num2-1结束,数字之间以step为步长。如range(5,10,2)取得的数据是:[5,7,9]   eg:

# 打印 99 乘法表
for i in range(1, 10):          # 外层循环控制行,i 从 1 到 9
    for j in range(1, i + 1):   # 内层循环控制列,j 从 1 到 i
        # 格式化输出,end="\t" 表示不换行,并用制表符隔开
        print(f"{j}*{i}={i*j}", end="\t")
    print()                     # 内层循环结束后,换行

函数

函数无返回值时返回的实际上是None,None在if语句中等于False

eg:

def check_age(age):
    if age > 18:
        return "SUCCESS"
    else:
        return None

result = check_age(16)
if not result:
    # 进入if表示result是None值 也就是False 这句相当于if True:
    print("未成年,不可进入")

None也可用于声明无初始内容的变量

eg:

name = None

函数的说明文档

当程序一旦写长,定义的函数和其中的变量就不知道是什么意思了,这时候就可以以多行注释的形式在函数里面写上说明文档 注意说明应写在函数体前! eg:

def func(x,y):
    """
    函数说明
    :param x: 形参x的说明
    :param y: 形参y的说明
    :return: 返回值的说明
    """
    函数体
    return 返回值

列表

方法的概念

在进入列表之前要了解方法的概念:在Python中,如果将函数定义为class(类)的成员,那么函数将会称之为:方法 eg:

class Student:

    def add(self,x,y):
        return x + y

# 方法的调用需要先去获得方法所在的class类对象,通过类对象中的.把方法点出来就可以了
student = Student()
num = student.add(1,2)

列表的常用操作方法

1.index 查询功能

mylist = ["northcedar", "website", "cool"]
# 查找某元素在列表中的下标索引
index = mylist.index("website")
print(f"website在列表中的下标索引值是:{index}")
# 如果查找的元素不存在会报错
index = mylist.index("hello")
print(f"hello在列表中的下标索引值是:{index}")

2.修改特定位置的元素值 元素的下标索引从左到右是0,1,2… 从右到左是-1,-2,-3… eg:

my_list = [1, 2, 3]
my_list[0] = 4
print(my_list)   # 结果:[4, 2, 3],反向下标自己去敲

3.插入元素 语法:列表.insert(新元素要插入的下标,元素) eg:

mylist = ["northcedar", "website", "cool"]
mtlist.insert(1, "python")
print(f"列表插入元素后,结果是:{mylist}")  # 结果是["northcedar", "python", "website", "cool"]

4.追加元素 语法1:列表.append(元素),将指定的元素追加到列表的尾部 eg:

mylist = [1, 2, 3]
mylist.append([4, 5, 6])
print(mylist)  # 结果[1, 2, 3, [4, 5, 6]]

语法2:列表.extend(其他数据容器),将其他数据容器的内容取出,依次追加到列表尾部

mylist = [1, 2, 3]
mylist.extend([4, 5, 6]) #或者mylist.extend(列表名)
print(mylist)  # 结果[1, 2, 3, 4, 5, 6]

5.元素的删除 语法1:del 列表[下标] 语法2:列表.pop(下标) #元素从原来列表弹出 eg:

# 方法1:
mylist = [4, 5, 6]
del mylist[2]
print(f"删除后的结果是:{mylist}")    #结果是[4, 6]

# 方法2:
mylist = [4, 5, 6]
element = mylist.pop(2)
print(f"取出元素后的列表内容是:{mylist},取出的元素是:{element}")   # 结果是[4, 5] ,6

删除某元素在列表中的第一个匹配项 语法3:列表.remove(元素) eg:

mylist = ["I", "I", "I", "love", "you"]
mylist.remove("I")
print(f"移除元素后,列表的结果是:{mylist}")  # 结果是["I", "I", "love", "you"]

6.清空列表 语法4:列表.clear() #结果是[]

7.统计某元素在列表内的数量 语法:列表.count(元素) eg:

mylist = ["I", "I", "I", "love", "you"]
count = mylist.count("I")
print(f"列表中I的数量为:{count}")   # 结果是3

8.统计列表内有多少元素 语法:len(列表)

mylist = ["I", "I", "I", "love", "you"]
count = len(mylist)
print(f"列表的元素数量总共有:{count}个")   # 结果是5

9.综合应用的小例子(待办事务表,自己去敲敲)

import json, os
SAVE_FILE = "tasks.json"

def load_tasks():
    if os.path.exists(SAVE_FILE):
        with open(SAVE_FILE,"r",encoding="utf-8")as f:
            return json.load(f)
    return [{"content":"学习python","done":False}]
def save_tasks():
    with open(SAVE_FILE,"w",encoding="utf-8")as f:
        json.dump(tasks,f,ensure_ascii=False,indent=2)
tasks = load_tasks()

while True:
    print("\n=====我的待办事项=====")
    print("1.查看所有任务")
    print("2.添加新任务")
    print("3.标记任务为已完成")
    print("4.删除任务")
    print("5.退出程序")
    print("======================")

    choice = input("请输入你的指令(1~5):")
    if choice == "1":
        print("\n---当前任务列表---")
        if len(tasks)== 0:
            print("目前还没任务,快去添加吧!")
        
        else:
            for index,task in enumerate(tasks,start=1):
                if task["done"] == True:
                    status = "【✔】"
                else:
                    status = "【 】"
                print(f"{status} {index}.{task['content']}")
    elif choice == "2":
        content = input("请输入任务内容:")
        new_task = {"content":content,"done":False}

        tasks.append(new_task)
        save_tasks()
        print(f"任务【{content}】添加成功!")

    elif choice == "3":
        try:
            task_id = int(input("请输入要标记为已完成的任务ID:"))
        except ValueError:
            print("请输入有效的任务ID")
            continue
        if 1 <= task_id <= len(tasks):
            task = tasks[task_id - 1]
            task["done"] = True
            print(f"任务【{task['content']}】已标记为已完成")
            save_tasks()
        else:
            print("任务ID不存在,请重新输入")
    elif choice == "4":
        try:
            task_id = int(input("请输入要删除的任务ID:"))
        except ValueError:
            print("请输入有效的任务ID")
            continue
        if 1 <= task_id <= len(tasks):
            task = tasks[task_id - 1]
            tasks.pop(task_id - 1)
            print(f"任务【{task['content']}】已删除")
            save_tasks()
        else:
            print("任务ID不存在,请重新输入")

    elif choice == "5":
        print("退出程序")
        break

元组

元组的概念

元组可以看成一个只读的列表,不可更改里面的内容 定义元组字面量用小括号 (元素, 元素, …, 元素) 定义空元组可用以下两个方法: 变量名称 = () 变量名称 = tuple()

*注意:元组里面只有一个数据,这个数据后要加逗号,不写的话就不是元组类型

t1 = ("hello")
print(f"t1的类型是:{type(t1)},t1的内容是{t1}")    # 输出结果是 <class 'str'>   hello

元组的常用操作方法

1.下标索引去取出内容

t2 = ((1, 2, 3), (4, 5, 6))
num = t2[1][2]
print(num)   #结果是第二个元素(因为第一个元素是元组)里面的第三个元素   6

2.index,count,len的用法都和列表一样,去列表里面看看

*注意:元组不可修改,但是如果元组里面嵌套了一个列表,里面的列表可以修改

t3 = (1, 2, ["north", "cedar"])
t3[2][0] = "northen"
print(t3)   #结果是(1, 2, ["northen", "cedar"])

字符串

尽管字符串看起来并不像列表那样是存放了许多数据的容器,但字符串同样也是数据容器的一员。同元组一样,是不可修改的数据容器,同样可以用下标索引取值

my_str = "north cedar top"
value = my_str[-1]   # 得到的值是"p"

index的用法和列表相同,去找列表

字符串的替换

语法:字符串.replace(“字符串1”, “字符串2”) 功能:将字符串内的全部 字符串1,替换为 字符串2 注意:不是修改字符串本身,而是得到了一个新的字符串

my_str = "north cedar top"
new_str = my_str.replace("north", "south")
print(new_str)   # 结果是  "south cedar top"

字符串的分割

语法:字符串.split(“分隔符字符串”) 功能:按照指定的分隔符字符串,将字符串分割为多个字符串,并存入列表对象中 注意:字符串本身不变,只是得到了一个列表对象

my_str = "north cedar top"
new_str = my_str.split(" ")
print(new_str)   # 结果是  ['north', 'cedar', 'top']

字符串的规整操作

1.前后去空格 语法:字符串.strip()

2.去前后指定字符串 语法:字符串.strip(“字符串”)

my_str = "122*2north cedar top1*121"
new_str = my_str.strip("12")
print(new_str)   # 结果是  "*2north cedar top1*"
# 注意!!!!去除字符串“12”并不是必需符合顺序12,而是去除前后的一个个小字符串"1"和"2",遇到不是这两个的就停,所以顺序不重要

3.count和len的用法和列表一样

4.和列表元组一样可用while/for循环

my_str = "north cedar top"
for i in my_str:
    print(i)

序列

序列是指内容连续有序,可使用下标索引的一类数据容器,如列表、元组、字符串均是序列

切片

序列都支持切片:从一个序列中,取出一个子序列 语法:序列[起始下标:结束下标:步长] # 注意不含结束下标本身 *此操作不会影响序列本身,而是会得到一个新的序列 *起始下标可以不写,表示从头开始;结束下标也可以不写,表示到最后一个元素。但是起始和结束中间的冒号不能省!!!!! *步长也可不写,默认为1,但不写步长前面的冒号也不要写

# 如从头开始,到尾结束,步长为1
my_list = [0, 1, 2, 3, 4, 5, 6]
result1 = my_list[1:4]
print(f"结果1是:{result1}")

# 如从头开始,到最后结束,步长为2
my_str = "01234567"
result2 = my_str[::2]
print(f"结果2是:{result2}")

#如从最后开始,到头结束,步长为-2
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result3 = my_tuple[::-2]    # 如果想从3开始到1(假设步长为1)就要:result3 = my_tuple[3:1:-1]
print(f"结果3是:{result3}")

# 也可以这么写:
my_str = "01234567"
result4 = my_str[::-1][2:4]  # 先反过来,再取反过来的2到4,结果是"54"  (不包括4)
print(f"结果4是:{result4}")

# 再来一个例子
my_str = "hello,I'm north_cedar,a student"
result5 = my_str.split(",")[1].replace("I'm ","")[::-1]   # 先把这个字符串以逗号分割成3个列表,取下标为1的列表,并将此列表中的"I'm "替换为空,最后反过来
print(f"结果5是:{result5}")

集合

集合和列表,元组,字符串有什么不一样呢? 集合不支持重复元素,也就是本身具有去重功能,并且内容是无序的,所以不支持下标索引 语法:

# 定义集合变量
my_set = {元素, 元素, ..., 元素}
# 定义空集合变量
变量名称 = set()   # 是小括号不是大括号,集合是type就是set

我们顺便来汇总一下: 列表使用的是[],元组使用的是(),字符串使用的是”“,集合使用的是{}

定义集合并输出看结果

my_set = {"north", "cedar", "top", "north", "cedar", "top", "north", "cedar", "top"}
print(my_set)   # 结果是:{"cedar", "north", "top"} (顺序不一定,因为是无序的,他也会去重)

元素的修改

(1)添加新元素 语法:集合.add(“元素”)

my_set = {"north", "cedar"}
my_set.add("top")
print(my_set)  # 结果是三个都在,且乱序

(2)移除元素

my_set = {"north", "cedar"}
my_set.remove("north")
print(my_set)

(3)随机取出一个元素 语法:变量名 = 集合.pop() # 取出元素后集合内的该元素就不存在了

(4)清空集合 语法:集合.clear()

(5)取出两个集合的差集 语法:集合1.difference(集合2) 功能:取集合1和集合2的差集(集合1有而集合2没有) 结果:得到一个新集合,集合1和集合2不变

set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.difference(set2)
print(set3)  # 结果 {2, 3} (1里有2里没有的)

(6)消除两个集合的差集 语法:集合1.difference_update(集合2) 功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素 结果:集合1被修改,集合2不变

set1 = {1, 2, 3}
set2 = {1, 5, 6}
set1.difference_update(set2)
print(set1)   # 结果是 {2, 3}

(7)两个集合合并 语法:集合1.union(集合2) 功能:将集合1和集合2组合成新集合 结果:得到新集合,集合1,2不变。(新集合内顺序不知)

(8)统计集合元素数量 语法:len(集合) # 数量也是去重之后的数量 eg:num = len(set1)

(9)集合的遍历 因为集合不支持下标索引,所以不支持while循环,但可以用for循环

set1 = {1, 2, 3, 4, 5}
for element in set1:
    print(element)

ok,今天就到这了,我和我妈聊天的时候(她是程序员),她建议我先把学校教的c语言学明白了再学另外一门语言,不要同时学,所以这篇文章以后会更新的很慢,会优先去新写一篇c语言的学习笔记。

评论

还没有人留言。你可以是第一个。

留个言