news 2026/7/25 2:27:15

pyhon自学基础语法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pyhon自学基础语法

b站黑马程序员视频链接

记笔记懒的打字的用win+H语音转文字哦

#第一天

pycharm常用快捷键

ctrl / 注释快捷键

双引号包裹的叫字符串

单行注释:#开头 和注释内容建议以一个空格隔开

多行注释:三对双引号

变量就是在程序运行时,记录数据用的

格式:变量名称=变量的值

变量的值可以变

print()里面输出多份内容用,隔开

三类数据类型:string、int、float

验证数据类型:语法 type(被查看类型的数据)

查看的是变量存储的数据类型,变量无类型它的存储数据有

name="哈哈哈" name_type=type(name) print(name_type)

转换类型

num=str(11) print(type(num),num)

任何类型都可以转换成字符串,字符串转成数字必须字符串内是数字,浮点数转整数会丢尾数缺失精度

标识符

只允许出现英文数字下划线中文,中文不推荐,数字不可以开头

英文大小写敏感,可以被区分

不可以使用关键字,大小写敏感,完全一样才报语法错误

运算符

算术运算符+-*/ // % **

//整除 %取余 **次方

赋值运算符=

复合型赋值运算符+= 表示的是将本身去进行运算 例子:c +=a等效于 c =c+a

单引号双引号三引号都可以定义字符串,三引号可以分行类似注释

字符串本身带有引号,则本身是有单引号我们就使用双引号定义,反之有双我们用单,或则使用\转义字符

name = '"哈哈哈"' print(name) name ="'刚刚'" print(name) name ='\'好坏\'' print(name) name ="\"积极\"" print(name)

打印出来"哈哈哈" '刚刚' '好坏' "积极"

字符串拼接+

字符串与字符串进行拼接,不能和非字符串进行拼接

字符串格式化

%占位 s把变量放进来

name = "一一一" message = "我是:%s" %name print(message) class_num = 57 avg_salary =1234 message ="北京%s期,毕业平均工资:%s" %(class_num,avg_salary) print(message)
我是:一一一 北京57期,毕业平均工资:1234

数据类型占位

%s内容转字符串 %d 转整数 %f 转浮点型

数字精度控制

m.n形式控制,m为宽度,.n为精度会对小数部分进行四舍五入限制,m比数子本身宽度还小m不生效

#第二天

字符串格式化2

语法:f''内容{变量}''

不理会类型不做精度控制

name = '哈哈哈' set_up_year_ =2002 stock_price = 19.9 print(f"我是{name},成立于:{set_up_year_},今天股价为:{stock_price}")

对表达式进行格式化

表达式:一条具有明确执行结果的代码语句

综合小练习(股票计算小程序)

name = "传智播客" stock_price = 19.99 stock_code = 1003032 stock_price_daily = 1.2 growth_days = 7 print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}") print("每日增长系数是:%.1f,经过%d天增长股价达到了:%.2f" %(stock_price_daily,growth_days,stock_price*stock_price_daily**growth_days))
公司:传智播客,股票代码:1003032,当前股价:19.99 每日增长系数是:1.2,经过7天增长股价达到了:71.63

input语句

数据输入,默认输出字符串类型

print("请告诉我今天星期几") day = input() print("我知道了今天:%s" %day)
请告诉我今天星期几 星期一 #我自己输入的 我知道了今天:星期一

也可以等同于print

day = input("请告诉我今天星期几") print("我知道了今天:%s" %day)

转类型

num = input("银行卡密码:") num = int(num) print("银行卡密码类型是:", type(num))

判断语句

比较运算符,布尔类型

bool1 = True bool2 = False print(f"bool1变量内容是:{bool1},类型是:{type(bool1)}") print(f"bool2变量内容是:{bool2},类型是:{type(bool2)}") num1 = 10 num2 =10 print(num1==num2) name1 ="qqq" name2 ="www" print(name1!=name2)

if判断语句

print("欢迎来到儿童乐园,儿童免费,成人收费") age = input("请输入你的年龄:") age = int(age) if age>=18: print("你已经成年,需要购票") print("祝你玩的愉快")

if else用法

print("欢迎来到儿童乐园,儿童免费,成人收费") age = input("请输入你的年龄:") age = int(age) if age>=18: print("你已经成年,需要购票") else: print("你不需要购票") print("祝你玩的愉快")

if elif else用法

判断是互斥且有顺序的,上一个满足后面就不会判断了,空格缩进不可省

if int(input("请输入身高(cm):"))<120: print("免费") elif int(input("请输入vip等级:"))>3: print("免费") elif int(input("今天几号:"))==1: print("免费") else: print("需要购票")

判断语句的嵌套

if int(input("请输入身高(cm):")) >120: print("身高超出免费区间") print("如果vip等级大于3,可以免费") if int(input("vip等级:")) >3: print("免费") else: print("需要买票") else: print("免费")

练习题

发礼物,限制年龄18-30,且工作时间两年以上或者等级3级以上

if 18<int(input("请输入年龄:"))<30: print("年龄满足") if int(input("请输入入职时间:"))>2: print("满足条件") elif int(input("请输入等级:"))>3: print("满足") else: print("不满足") else: print("不满足")

猜数字游戏案例

三次机会,要有提示猜的数字对应的情况

import random num = random.randint(1,10) guess_num = int(input("请输入数字:")) if guess_num==num: print("第一次就猜对了") else: if guess_num>num: print("猜大了,你还有两次机会") else: print("猜小了,你还有两次机会") guess_num = int(input("再次输入数字:")) if guess_num == num: print("第二次猜对了") else: if guess_num > num: print("猜大了,你还有一次机会") else: print("猜小了,你还有一次机会") guess_num = int(input("请再次输入数字:")) if guess_num == num: print("第三次猜对了") else: print("猜错了,没有机会了")

while循环语句

条件需提供布尔类型结果,True继续,False结束

空格缩进不能忘

规划好循环终止条件,否则无限循环

求1-100的和

i=1 sum=0 while i<=100: sum =sum+i i += 1 print("1-100的和为:",sum)

猜数小游戏

无限次,并输出猜测次数

import random num = random.randint(1,100) #记录猜测次数 count = 0 #通过一个布尔类型的变量,做循环是否继续的标记 flag = True while flag: guess_num = int(input("请输入你猜的数字:")) count += 1 if guess_num == num: print("猜中了") flag = False else: if guess_num > num: print("猜大了,请重猜") else: print("猜小了,请重猜") print(f"你一共猜测了{count}次")

#第三天

while嵌套循环

表白案例

i = 0 while i<=100: print(f"这是第{i}天进行表白") j = 1 while j<=10: print(f"送{j}枝玫瑰") j +=1 print("我爱你") i +=1 print(f"第{i-1}天表白成功")

While循环打印九九乘法表案例

使用print语句输出不换行,在括号里加end=' '

\t 制表符,效果等同于键盘按下tab键 使多行字符串进行对齐

i = 1 while i<=9: j = 1 while j <= i: print(f"{j}*{i}={j*i}\t",end='') j +=1 i += 1 print()

for循环

本质上是遍历

语法:从待处理数据集中逐个取出数据赋值给临时变量

for临时变量 in 待处理数据集:

循环满足条件时执行的代码

待处理数据集称之为序列类型,其内容可以一个个依次取出的一个类型

统计字母a的个数案例

name = "hduwdfuweiaaaadhudqwaa" count = 0 for x in name: if x=="a": count +=1 print(f"有{count}个a")

range语句

获取一个简单的数据序列

语法:range(num)

获取一个从0开始到num结束的数字序列(不含num本身)

语法2:range(num1,num2)

获取一个从num1到num2的数字序列(不含num2本身)

语法3:range(num1,num2,step)

获取一个从num1到num2结束的序列(不含num2本身),数字步长以step为准,默认为1,假设为2则是隔一个取一个

表白案例

i =1 for i in range(1,101): print(f"表白第{i}天") for j in range(1,11): print(f"送的第{j}朵花") print("我喜欢你") print(f"第{i}天表白成功")

for循环打印九九乘法表

i =1 for i in range(1,10): j = 1 for j in range(1,i+1): print(f"{j}*{i}={j*i}\t", end='') j += 1 i += 1 print()

continue

中断本次循环,直接进入下一次循环,可用于for循环和while循环,效果一致

只对自己所在循环生效

break

直接终止所在的本次循环

发工资案例

自己写的不知道对不对

20个员工,公司有一万奖金,绩效大于5可领取

i = 1 sum = 10000 for i in range(1,21): import random num = random.randint(1, 10) while num>=5: if sum >= 1000: sum -= 1000 print(f"向员工{i}发放工资1000元,账户余额还剩{sum}元") else: print(f"员工{i},绩效合格,但工资发完了,下个月再来领取") break else: print(f"员工{i},绩效分:{num}分,低于5,不发工资,下一位") continue i +=1

函数

定义语法

def 函数名(传入参数):

函数体

return 返回值

使用步骤:先定义函数,后调用函数

参数不需要可以省略

返回值不需要可以省略

#定义函数 def add(x,y): #形参 result = x+y print(f"{x}+{y}结果是{result}") #调用函数 add(1,2) #实参
def add(a,b): result = a+b return result r=add(5,6) print(r)

#第四天

None类型

空的,无实际意义,用于声明无内容的变量,使用在函数返回值、if判断、变量定义

函数说明文档

通过多行注释形式,对函数进行说明解释,鼠标悬停在调用函数上会显示说明文档

函数嵌套调用

一个函数里面调用了另一个函数

def funb(): print("2") def funa(): print("1") funb() print("3") funa()

变量

变量作用域指的是变量的作用范围

分为局部变量和全局变量

局部变量是定义在函数体内部的变量,只在函数体内部生效

全局变量在函数外面定义变量

全局变量代码

num = 200 def test_a(): print(f"test_a:{num}") def test_b(): num = 500 print(f"test_b:{num}") test_a() test_b() print(num)
test_a:200 test_b:500 200

global关键字

将函数内定义的变量声明为qu'a

num = 200 def test_a(): print(f"test_a:{num}") def test_b(): global num #设置内部定义的变量为全局变量 num = 500 print(f"test_b:{num}") test_a() test_b() print(num)
test_a:200 test_b:500 500

取款机案例

money =5000000 name =input("请输入姓名") def query(show_header): if show_header: print("----------查询余额--------------") print(f"{name},你的余额剩余:{money}元") def saving(num): global money money +=num print("--------------存款----------------") print(f"{name},你存款{num}元成功") query(False) def get_money(num): global money money -= num print("--------------取款----------------") print(f"{name},你取款{num}元成功") query(False) def main(): print("--------------主菜单-------------------") print(f"{name},欢迎来到ATM,请选择操作:") print("查询余额/t[输出1]") print("存款/t[输出2]") print("取款/t[输出3]") print("退出/t[输出4]") return input("请输入你的选择:") #设置循环 while True: keyboard_input = main() if keyboard_input == "1": query(True) continue elif keyboard_input =="2": num=int(input("请输入存款金额:")) saving(num) continue elif keyboard_input =="3": num=int(input("请输入取款金额:")) get_money(num) continue else: print("程序退出") break

python数据容器

一个容器可以容纳多份数据,每一份数据称之为1个元素,每一个元素可以是任意类型的数据,如字符串、数字、布尔

容器根据特点不同分为五类

列表、元组、字符串、集合、字典

下标索引

从前往后,从0开始递增

从后往前,从-1开始递减

下标索引取值范围超出范围无法取出,会报错

my_list = ["haha","jajaja","kakakka"] print(my_list[0]) print(my_list[1]) print(my_list[2]) print(my_list[-1]) print(my_list[-2]) print(my_list[-3]) my_list = [[1,2,3],[4,5,6]] print(my_list[1][1]) #第一个[]为0 第二个为1 取德第二个里面的第二个 print(my_list[-2][1]) #第一个[]为-2 第二个为-1 取德第一个里面的第二个
haha jajaja kakakka kakakka jajaja haha 5 2

列表的常用操作

插入、删除元素、清空列表、修改元素、统计元素个数这一系列功能称为列表的方法

查找下标

语法:列表.index(元素)

my_list = ["haha","jajaja","kakakka"] index =my_list.index("haha") print(f"haha下标索引是:{index}")

修改下标索引的值

my_list[0]="hhhhh" print(f"修改后的值为:{my_list}")

插入元素

语法:列表.insert(下标,元素)

在指定下标位置插入指定元素

my_list.insert(1,"best") print(f"插入后结果是:{my_list}")

追加元素

语法:列表.append(元素)

指定元素追加到列表的尾部

my_list.append("babab") print(f"插入后结果是:{my_list}")

语法:列表.extend(其他数据容器)

将其他数据容器的内容取出,依次追加到列表尾部

元素删除

语法1:del 列表[下标]

语法2:列表.pop(下标)

语法3:列表.remove(元素)

清空列表

语法:列表.clear()

统计某元素在列表的数量

语法:列表count(元素)

统计列表内有多少元素

语法:len(元素)

练习案例

mylist = [21,25,21,23,22,20] mylist.append(31) print(f"追加数字:{mylist}") mylist.extend([29,33,30]) print(f"追加数字:{mylist}") print(f"取出第一个元素:{mylist[0]}") print(f"取出最后元素:{mylist[-1]}") index = mylist.index(31) print(f"31下标为:{index}")
追加数字:[21, 25, 21, 23, 22, 20, 31] 追加数字:[21, 25, 21, 23, 22, 20, 31, 29, 33, 30] 取出第一个元素:21 取出最后元素:30 31下标为:6

#第五天

列表的遍历——while循环

my_list = ["hde","huidwq9","jioqhih"] index = 0 while index < len(my_list): element = my_list[index] print(f"列表元素:{element}") index +=1

for循环

def list_for_func(): my_list=[1,2,3,4] for element in my_list: print(f"元素列表有:{element}") list_for_func()

while和for循环对比:

while可以自定义循环条件,for不可以只可以一个个取出

while可以通过控制条件实现无限循环,for理论上不可以因为被遍历的容器容量不是无限的

while循环适用于任何想要的场景,for适用于遍历数据容器的场景或简单的固定次数循环场景

输出偶数列表案例

my_list=[1,2,3,4] even_for = [] for element in my_list: if element % 2 == 0: even_for.append(element) print(f"元素列表有:{even_for}") even_whlie = [] index=0 while index<len(my_list): current = my_list[index] if current%2==0: even_whlie.append(current) index +=1 print(f"元素列有有:{even_for}")

元组

列表可以修改,传递信息不能修改列表就不合适了,元组一旦定义完成,就不可修改,元组也可以封装多个不同类型的元素在内,可以修改内部list的内部元素

使用小括号定义,使用逗号隔开数据,数据可以是不同的数据类型

操作方法:index() 、count() 、len(元组)

特点:支持for循环 、和list基本相同,唯一不同在于不可修改

小案例

t1 = ("周杰伦",11,["aaaa","bbbb"]) index=t1.index(11) print(f"{index}") name = t1[0] print(name) t1[2].remove('aaaa') print(t1) t1[2].append('ccc') print(t1)

字符串

字符的容器,一个字符串可以存放任意数量的字符,长度任意,支持下标索引,允许重复字符串存在,不可以修改,支持for循环

字符串替换

语法:字符串.replace(字符串1,字符串2)

将字符串内全部字符串1,替换成字符串2,不是修改字符串本身,而是得到一个新字符串

字符串分割

语法:字符串.split(分隔符字符串)

按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中,字符串本身不变而是得到了一个列表对象

字符串的规整操作

语法:字符串.strip() #去前后首位空格

语法:字符串.strip(字符串) #去前后指定字符串

案例

t = "iiiiudwh iuhduiewq wduh" num = t.count('i') print(num) new = t.replace(" ","|") print(new) list = new.split("|") print(list)

#第六天

序列切片

不省略下标结束那个不取,省略了取(从头到尾::)

案例

t = "asdhu shdiqwhd wuhd" result = t[::-1][5:13] print(result) result2 = t[6:14][::-1] print(result2)

集合

去重,无序,下标索引不支持访问,可以用for循环进行变量,不可以用while

案例去重

my_list = ["aaa","bbb","ccc","aaa"] my_set = set() for i in my_list: my_set.add(i) print(my_list) print(my_set)
['aaa', 'bbb', 'ccc', 'aaa'] {'bbb', 'ccc', 'aaa'}

字典

提供基于key检索value的场景实现

可以是任意类型,key不可为字典

key不可以重复,重复添加等于覆盖原有数据

不可以用下标索引

常用操作

升职加薪案例

my_dict = { "A":{ "部门":"科技部", "工资":4000, "级别":1 },"B":{ "部门":"科技部", "工资":3000, "级别":2 },"C":{ "部门":"科技部", "工资":3000, "级别":1 },"D":{ "部门":"科技部", "工资":3000, "级别":2 } } for i in my_dict: if my_dict[i]["级别"]==1: my_my_dict = my_dict[i] my_my_dict["级别"] = 2 my_my_dict["工资"] += 1000 my_dict[i] = my_my_dict print(my_dict)

数据容器分类

应用场景

容器通用功能

#第七天

字符串大小比较

从头到尾一位位比较,其中一位大后面就无需比较了

单个字符通过ASCII码表,确定字符对应的码值数字来确定大小

函数的多返回值

def test_return(): return 1,"aaa",True x,y,z = test_return() print(x,y,z)

函数参数种类

def user_info(name,age,gender): print(f"姓名是:{name},年龄是:{age},性别是:{gender}") #位置参数 —— 默认使用形式 user_info('小明',20,'男') #关键字参数 user_info(name='小王',age=11,gender='女') user_info(age=10,gender='女',name='潇潇') #可以不按照参数的定义顺序传参 #缺省参数(默认值) def user_info(name,age,gender='男'): print(f"姓名是:{name},年龄是:{age},性别是:{gender}") user_info('小天',13) user_info('小天',13,gender='女') #不定长参数

匿名函数

使用lambda关键字进行定义

语法:lambda 传入参数:函数体(一行代码)

用于临时构建一个函数,只用一次的场景

函数体只能写一行代码,多行要使用def定义带名函数

文件操作

文件编码

翻译规则,记录如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容

文件读取操作

f = open("C:/Users/佳美/Desktop/text.txt","r",encoding="UTF-8") #方式1,读取全部内容 # content = f.read() # count = content.count("aaa") # print(content) # print(count) #方式2,读取内容一行一行读 count = 0 for line in f: line = line.strip() #去除开头结尾的空格和换行 words = line.split(" ") for word in words: if word == "aaa": count += 1 print(count) f.close()

文件写操作

文件追加操作

同上操作,把w换成a

f = open("C:/Users/佳美/Desktop/text.txt","a",encoding="UTF-8") f.write("dgwvuivuehahahha") f.close()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 2:26:53

Rust 加 WASM 的 FFI 性能测试:不同数据传递方式的吞吐量对比数据

Rust 加 WASM 的 FFI 性能测试&#xff1a;不同数据传递方式的吞吐量对比数据 一、FFI 是 WASM 的阿喀琉斯之踵 在上一篇评估报告中我说 WASM 运行时推理延迟比原生慢 30%-120%。当时没展开说这 30% 差在哪里。经过两周的精细 benchmark&#xff0c;答案很清楚&#xff1a;超…

作者头像 李华
网站建设 2026/7/25 2:26:37

5分钟理解光速AI:D2NN衍射深度神经网络入门指南

5分钟理解光速AI&#xff1a;D2NN衍射深度神经网络入门指南 【免费下载链接】Diffractive-Deep-Neural-Networks Diffraction Deep Neural Networks(D2NN) 项目地址: https://gitcode.com/gh_mirrors/di/Diffractive-Deep-Neural-Networks 在人工智能计算面临能耗瓶颈的…

作者头像 李华
网站建设 2026/7/25 2:26:21

手摇式LLM设备:完全离线的边缘AI解决方案设计与实现

如果你正在寻找一种完全离线、无需联网、不依赖云服务的大语言模型运行方案&#xff0c;那么手摇式LLM设备可能正是你需要的解决方案。在AI技术快速发展的今天&#xff0c;大多数开发者仍然受限于昂贵的GPU硬件和复杂的部署环境&#xff0c;而这款创新设备通过机械能驱动的方式…

作者头像 李华
网站建设 2026/7/25 2:25:55

3个步骤在Windows上实现AirPods完美体验:AirPodsDesktop完整指南

3个步骤在Windows上实现AirPods完美体验&#xff1a;AirPodsDesktop完整指南 【免费下载链接】AirPodsDesktop ☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP) 项目地址: https://gitcode.com/gh_mirrors/ai/AirPodsDesktop 你…

作者头像 李华
网站建设 2026/7/25 2:25:27

LLM成本优化:Best-Execution框架实现智能任务降本50%

最近在做一个需要大量调用大模型的项目时&#xff0c;我发现了一个让人头疼的问题&#xff1a;明明选择了号称“性价比最高”的模型&#xff0c;月底账单却依然超出预算。更让人困惑的是&#xff0c;同样的任务&#xff0c;在不同时间调用&#xff0c;响应速度和成本竟然有显著…

作者头像 李华
网站建设 2026/7/25 2:24:07

CircuitKIT:降低大语言模型机制可解释性研究门槛的完整工具链

如果你正在研究大语言模型的内部工作机制&#xff0c;特别是想理解神经网络中的"电路"如何工作&#xff0c;那么你很可能已经感受到了机制可解释性&#xff08;Mechanistic Interpretability&#xff09;领域的复杂性。传统上&#xff0c;这个领域需要大量的手动分析…

作者头像 李华