Python 基础
1. 第一个程序:Hello World
print ("hello world" )print (666 )print (13.14 )
解释:
print()是 Python 的输出函数,用于在屏幕上显示内容
双引号""包裹的是字符串(文字内容)
直接写数字可以输出整数(666)和小数(13.14)
2. 变量
money=50 print ("钱包还有:" ,money)money=money-10 print ("买了冰淇淋,钱包还有:" ,money)
解释:
变量就像一个容器,用来存储数据
money=50表示创建一个名为money的变量,并赋值 50
变量可以被重新赋值,money=money-10表示将money原来的值减 10 后再存回money
3. 数据类型
print (type (666.666 )) print (type ("hello world" )) print (type (True )) string_type="hello world" print (type (string_type)) int_type=666 print (type (int_type)) float_type=13.14 print (type (float_type))
解释:
type()函数用于查看数据的类型
常见数据类型:
int:整数(如 666)
float:浮点数(如 13.14)
str:字符串(用引号包裹的内容)
bool:布尔值(只有 True 和 False 两个值)
4. 数据转换
num_str=str (11 ) print (type (num_str),num_str)float_str=float (num_str) print (type (float_str),float_str)num=int (11 ) print (type (num),num)float_num=float (num) print (type (float_num),float_num)num2=float (11.314 ) print (type (num2),num2)int_num2=int (num2) print (type (int_num2),int_num2)
解释:
数据转换可以通过str()、int()、float()等函数实现
注意:浮点数转整数会直接去掉小数部分,不是四舍五入
只有符合数字格式的字符串才能转成数字(如 “123” 可以转,“abc” 不行)
5. 输入函数
name=input ("告诉我你是谁?" ) print ("我知道了,你是%s" %name)print (type (name)) print ("告诉我你电话?" )name1=input () name1=int (name1) print ("电话是%s" %name1)print (type (name1))""" input接受都是字符串 """ a,b,c=input () print (f"According to preliminary estimation, the gross domestic product (GDP) in %s was %s billion yuan, up by %s percent over the previous year." %(a,b,c))
解释:
input()是输入函数,会暂停程序等待用户输入
括号里的文字是提示信息,会显示给用户
无论输入什么,input()返回的都是字符串类型
如果需要数字,必须用int()或float()转换
6. 字符串
6.1 字符串定义
""" 演示字符串的三种定义方式: 单引号定义法 双引号定义法 三引号定义法 """ name1='黑马程序员' print (type (name1))print (name1)name2="黑马程序员" print (type (name2))print (name2)name3= """ 我是 黑马 程序员 """ print (type (name3))print (name3)
解释:
字符串可以用单引号’’、双引号"“或三引号”"" “”"定义
单引号和双引号功能一样,三引号可以定义多行字符串
三引号定义的字符串会保留换行格式
6.2 字符串拼接
print ("学习python" +"很有趣" ) name="学习" name1="python" print (name+name1) class_num=57 avg_salary=10000 message="Python大数据,武汉%s期,平均薪资:%s元" %(class_num,avg_salary) print (message)name2="很有趣" message2="学习python%s" %name2 print (message2)name="传智播客" set_up_year = 2006 stock_price = 19.99 message3 = "我是:%s,我成立于:%d,我今天的股价是:%f" %(name, set_up_year,stock_price) print (message3)message4 = "我是:%s,我成立于:%d,我今天的股价是:%.2f" %(name, set_up_year,stock_price) print (message4)print (f"我是{name} ,我成立于{set_up_year} ,我今天的股价是{stock_price} " ) print ("1*1的结果是:%d" %(1 *1 ))
解释:
+可以直接拼接字符串
%s、%d、%f是占位符,分别对应字符串、整数、浮点数
%.2f表示保留两位小数
f-string格式更简单,直接在字符串前加f,用{变量}嵌入内容
6.3 字符串常用操作
mystr="itheima and itcast" value=mystr[2 ] value2=mystr[-16 ] print (value)print (value2)value3=mystr.index("and" ) print (value3)new_mystr=mystr.replace("it" ,"程序" ) print (new_mystr)mystr="hello python itheima itcast" mystr_list=mystr.split(" " ) print (mystr_list,type (mystr_list))mystr=" itheima and itcast " new1=mystr.strip() print (new1)mystr="12itheima and itcast 21" new2=mystr.strip("12" ) print (new2)
解释:
字符串可以像列表一样通过索引访问单个字符,索引从 0 开始
index()用于查找子字符串第一次出现的位置
replace(a,b)将字符串中的 a 替换为 b
split(sep)按 sep 分割字符串,返回列表
strip()去除首尾空格,strip(“12”)去除首尾的 1 和 2
7. 运算符
print ("1 + 1 = " ,1 + 1 ) print ("2 - 1 = " ,2 - 1 ) print ("3 * 3 = " ,3 * 3 ) print ("4 / 2 = " ,4 / 2 ) print ("11 // 2 = " ,11 // 2 ) print ("9 % 2 = " ,9 % 2 ) print ("2 ** 3 = " ,2 ** 3 )
解释:
基本运算符和数学中的含义一致
注意/除法结果总是浮点数,//是整除
%取余常用于判断奇偶(结果为 0 是偶数)
表示幂运算,2 3相当于 2×2×2
8. 判断语句
8.1 基本判断
age=17 if age>=18 : print ("我已经成年了" ) print ("不受判断改变" )
解释:
if后面跟判断条件,条件成立(True)则执行缩进的代码块
缩进通常是 4 个空格
不缩进的代码不受 if 判断影响,总会执行
8.2 if-else
print ("欢迎来到黑马儿室游乐场,儿京免费,成人收费。" )print ("请输入你的年龄:" )age=int (input ()) if age>=18 : print ("您己成年,游玩需要补票10元。" ) else : print ("您未成年,可以免费游玩" ) print ("祝您游玩愉快。" )
解释:
if-else表示二选一:条件成立执行 if 块,否则执行 else 块
input()获取用户输入,int()转换为整数
无论条件如何,最后一句 “祝您游玩愉快” 都会执行
8.3 if-elif-else
print ("欢迎来到动物园" )print ("请输入您的身高(cm)" )height=int (input ()) vip_level=int (input ("请输入vip级别(1~5)" )) if height<120 : print ("您的身高小于120cm,可以免费游玩" ) elif vip_level>3 : print ("您的vip级别大于3,可以免费游玩。" ) else : print ("不好意思,所有条件都不满足,需要购票10元。" ) print ("祝您游玩愉快。" )
解释:
if-elif-else用于多条件判断,依次检查每个条件
只要有一个条件成立,就执行对应的代码块,后面的条件不再检查
如果所有条件都不成立,执行 else 块
8.4 条件表达式
if int (input ("请输入你的身高(cm):" )) < 120 : print ("身高小于120cm ,可以免费。" ) elif int (input ("请输入你的VIP等级(1-5):" )) > 3 : print ("vip级别大于3 ,可以免费。" ) elif int (input ("请告诉我今天几号:" )) == 1 : print ("今天是1号免费日 ,可以免费" ) else : print ("不好意思,条件都不满足,需要买票10元。" )
解释:
可以直接在if后面写表达式,简化代码
每个条件都会按顺序判断,满足一个就执行对应操作
8.5 布尔值与比较
result=10 >5 print (f"10>5结果是:{result} ,类型是:{type (result)} " )result1="itcast" =="itheima" print (f"字符串itcast是否和itheima相等,结果是:{result1} ,类型是:{type (result)} " )bool_1=True bool_2=False print (f"bool_1变量的内容是:{bool_1} ,类型是:{type (bool_1)} " )print (f"bool_2变量的内容是:{bool_2} ,类型是:{type (bool_2)} " )num1=10 num2=10 print (f"10=10的结果是:{num1==num2} " )num3=10 num4=15 print (f"10=15的结果是:{num3==num4} " )
解释:
比较运算的结果是布尔值(True 或 False)
常见比较运算符:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)
注意=是赋值,==才是判断相等
9. 循环语句
9.1 while 循环
i=0 while i<100 : print ("循环" ) i+=1
解释:
while循环格式:while 条件: 循环体
当条件成立时,重复执行循环体
一定要在循环体内修改条件相关的变量(如 i+=1),否则会变成无限循环
9.2 while 案例(猜数字)
import randomnum=random.randint(1 ,100 ) count=0 flag=True while flag: guess_num=int (input ("输入一个数:" )) if guess_num==num: print ("对" ) flag=False else : if guess_num>num: print ("大了" ) else : print ("小了" ) count+=1 print ("你猜了%d次" %(count))
解释:
random.randint(a,b)生成 a 到 b 之间的随机整数
用flag变量控制循环是否继续
每次循环让用户输入猜测的数字,根据比较结果提示大了 / 小了
猜对后将flag设为 False,退出循环
9.3 for 循环
name="itheima" for x in name: print (x) name1="itheima is a brand of itcast" count=0 for x in name1: if x=="a" : count+=1 print (count)
解释:
for循环用于遍历序列(如字符串、列表等)
格式:for 变量 in 序列: 循环体
每次循环,变量会依次取序列中的每个元素
9.4 for-range 循环
for x in range (10 ): print (x) for x in range (5 ,10 ): print (x) for x in range (5 ,10 ,2 ): print (x)
解释:
range(n)生成 0 到 n-1 的整数序列
range(a,b)生成 a 到 b-1 的整数序列
range(a,b,step)生成 a 到 b-1 的整数序列,步长为 step(每次增加 step)
9.5 for 嵌套循环
i=1 for i in range (1 ,101 ): print (f"第{i} 天" ) for j in range (1 ,11 ): print (f"第{j} 朵" ) print (f"第{i} 天结束" ) print (f"总共{i} 天" )
解释:
循环可以嵌套,内层循环会在外层循环的每次迭代中完整执行
这里外层循环控制天数(1-100),内层循环控制每天的花朵数(1-10)
9.6 99 乘法表
for i in range (1 ,10 ): for j in range (1 ,i+1 ): print (f"{j} *{i} ={j*i} \t" ,end='' ) print ()
解释:
外层循环i控制乘数(1-9)
内层循环j控制被乘数(1 到 i)
end=’'让 print 不自动换行,实现同一行输出多个结果
内层循环结束后,用print()换行
10. 函数
10.1 函数定义与调用
def say_hi (): print ("HI" ) say_hi()
解释:
用def关键字定义函数,格式:def 函数名(): 函数体
函数名后面必须有括号()
调用函数时需要写函数名加括号say_hi()
10.2 初级函数(自定义长度计算)
str1="itheima" str2="itcast" str3="python" def my_len (data ): count=0 for i in data: count+=1 print (f"字符串{data} 的长度是:{count} " ) my_len(str1) my_len(str2) my_len(str3)
解释:
函数可以接收参数,data是形参(形式参数)
调用函数时传入的str1等是实参(实际参数)
这个函数实现了类似len()的功能,计算字符串长度
10.3 函数注释
def add (x, y ): """ add加法 :param x: 形参1 :param y: 形参2 :return: 返回两数相加结果 """ result = x + y print (f"2数相加的结果是:{result} " ) return result add(5 ,6 )
解释:
函数内部的三引号字符串是文档字符串,用于说明函数功能
:param说明参数含义,:return说明返回值
文档字符串可以通过help(函数名)查看
10.4 函数返回值
def add (x,y): result=x+y return result r=add(9 ,4 ) print (r)
解释:
return用于返回函数的计算结果
调用函数时,可以用变量接收返回值
函数执行到return后会立即结束
10.5 函数返回 None
def say_hello (): print ("Hello..." ) result = say_hello() print (result) print (type (result)) def say_hello (): print ("Hello..." ) return None result = say_hello() print (result)
解释:
如果函数没有return语句,或者return后面没有值,默认返回None
None是一个特殊值,表示 “无”,类型是NoneType
常用于表示空结果或作为默认值
10.6 函数的多返回值
def test_return (): return 1 ,"hello" ,True x,y,z=test_return() print (x)print (y)print (z)
解释:
函数可以一次返回多个值,用逗号分隔
接收时可以用多个变量,按顺序对应接收
本质上返回的是一个元组
10.7 函数的传入参数
def add (x,y,z ): result=x+y+z print (f"{x} +{y} +{z} ={result} " ) add(5 ,9 ,11 ) def check (x ): print ("欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!" ) if x>37.5 : print (f"体温测量中,您的体温是:{x} 度,需要隔离!" ) else : print (f"体温测量中,您的体温是:{x} 度,体温正常请进!" ) x=float (input ()) check(x)
解释:
函数可以定义多个参数,用逗号分隔
调用时需要传入对应数量的参数(除非有默认值)
参数可以是不同类型(整数、浮点数等)
10.8 函数的多种参数
def user_info (name, age, gender ): print (f'您的名字是{name} ,年龄是{age} ,性别是{gender} ' ) user_info(name="小明" , age=20 , gender="男" ) user_info(age=20 , gender="男" , name="小明" ) user_info("小明" , age=20 , gender="男" ) def user_info (name, age, gender='男' ): print (f'您的名字是{name} ,年龄是{age} ,性别是{gender} ' ) user_info('TOM' , 20 ) user_info('Rose' , 18 , '女' ) def user_info (*args ): print (type (args)) print (args) user_info('TOM' ) user_info('TOM' , 18 ) def user_info (**kwargs ): print (type (kwargs)) print (kwargs) user_info(name='TOM' , age=18 , id =110 )
解释:
位置参数:必须按顺序传入,如user_info(“小明”, 20, “男”)
关键字参数:用参数名=值的形式,可打乱顺序
默认参数:定义时给参数赋值,调用时可省略
*args:接收多个位置参数,打包成元组
**kwargs:接收多个关键字参数,打包成字典
10.9 匿名函数
def test_func (compute ): result = compute(1 , 2 ) print (type (compute)) print (result) test_func(lambda x, y: x + y)
解释:
匿名函数用lambda定义,格式:lambda 参数: 表达式
匿名函数只能有一个表达式,自动返回结果
适合简单的功能,不需要单独定义函数
10.10 函数综合案例(银行系统)
money=5000000 money=int (money) name=input ("请输入您的姓名:" ) def query (T ): if T: print ("---------查询余额---------" ) print (f"余额为{money} 元" ) def saving (num ): global money money+=num print ("---------存款---------" ) print (f"存了{num} 元" ) query(False ) def get_money (num ): global money money-=num print ("---------取款---------" ) print (f"取了{num} 元" ) query(False ) def main (): print ("---------主菜单---------" ) print (f"请选择操作:" ) print ("查询余额\t[输入1]" ) print ("存款\t\t[输入2]" ) print ("取款\t\t[输入3]" ) print ("退出\t\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
解释:
这个程序模拟了简单的银行系统,包含查询、存款、取款功能
global关键字用于在函数内部修改全局变量
main()函数显示菜单,接收用户选择
while True创建无限循环,直到用户选择退出
11. 数据容器
11.1 列表定义
name_list=['itheima' ,'itcast' ,'python' ] print (name_list)print (type (name_list))my_list=['itheima' ,666 ,True ] print (my_list)print (type (my_list))my_list1=[[1 ,2 ,3 ],[4 ,5 ,6 ]] print (my_list1)print (type (my_list1))
解释:
列表用[]定义,元素之间用逗号分隔
列表可以包含不同类型的元素(字符串、数字、布尔值等)
列表可以嵌套,形成二维或多维列表
11.2 列表下标(索引)
name_list=['tom' ,'lily' ,'rose' ] print (name_list[0 ]) print (name_list[1 ]) print (name_list[2 ]) print (name_list[-1 ]) print (name_list[-2 ]) print (name_list[-3 ]) my_list=[[1 ,2 ,3 ],[4 ,5 ,6 ]] print (my_list[1 ][1 ])
解释:
列表元素通过索引访问,索引从 0 开始
负数索引表示从末尾开始,-1是最后一个元素
二维列表访问格式:列表名[外层索引][内层索引]
11.3 列表遍历
def list_while_func (): """ while遍历列表 :return: None """ mylist=["传智教育" ,"黑马程序员" ,"python" ] index=0 while index<len (mylist): element=mylist[index] print (element) index+=1 list_while_func() def list_for_func (): """ for遍历列表 :return: None """ mylist=[1 ,2 ,3 ,4 ,5 ] for element in mylist: print (element) list_for_func()
解释:
遍历列表有两种方式:while 循环和 for 循环
while 循环需要通过索引访问,配合len()函数获取长度
for 循环更简单,直接遍历每个元素,不需要索引
11.4 列表的常见操作方法
mylist=["itcast" ,"itheima" ,"python" ] index=mylist.index("itheima" ) print (index)mylist[0 ]="修改了" print (mylist)mylist.insert(1 ,"插入" ) print (mylist)mylist.append("黑马" ) print (mylist)mylist2=[1 ,2 ,3 ] mylist.extend(mylist2) print (mylist)mylist=["itcast" ,"itheima" ,"python" ] del mylist[2 ] print (mylist)mylist=["itcast" ,"itheima" ,"python" ] element=mylist.pop(2 ) print (mylist)mylist=["itcast" ,"itheima" ,"itcast" ,"itheima" ,"python" ] mylist.remove("itheima" ) print (mylist)mylist.clear() print (mylist)mylist=["itcast" ,"itheima" ,"itcast" ,"itheima" ,"python" ] count=mylist.count("itheima" ) print (count)count1=len (mylist) print (count1)
解释:
列表提供了多种操作方法:
index(x):查找 x 第一次出现的索引
insert(i,x):在索引 i 处插入 x
append(x):在末尾添加 x
extend(list):合并另一个列表
del list[i]:删除索引 i 的元素
pop(i):删除并返回索引 i 的元素
remove(x):删除第一个 x
clear():清空列表
count(x):统计 x 出现的次数
len(list):计算列表长度
11.5 元组
t1=(1 ,"Hello" ,True ) t2=() t3=tuple () print (f"t1的类型是:{type (t1)} ,内容是:{t1} " )print (f"t2的类型是:{type (t2)} ,内容是:{t2} " )print (f"t3的类型是:{type (t3)} ,内容是:{t3} " )t4=("hello" ) print (f"t4的类型是:{type (t4)} ,内容是:{t4} " )t5=("hello" ,) print (f"t5的类型是:{type (t5)} ,内容是:{t5} " )
解释:
元组用()定义,元素之间用逗号分隔
元组是不可变的(创建后不能修改元素)
定义单个元素的元组时,必须在元素后加逗号((x,)),否则会被认为是其他类型
可以用tuple()创建空元组
11.6 字典
my_dict1={ "王力宏" :99 , "周杰伦" :88 ,"林俊杰" :77 } my_dict2={} my_dict3=dict () print (f"字典1的内容是:{my_dict1} ,类型:{type (my_dict1)} " )print (f"字典2的内容是:{my_dict2} ,类型:{type (my_dict2)} " )print (f"字典3的内容是:{my_dict3} ,类型:{type (my_dict3)} " )my_dict1={ "王力宏" :99 , "王力宏" :88 ,"林俊杰" :77 } print (f"重复key字典1的内容是:{my_dict1} ,类型:{type (my_dict1)} " )my_dict1={ "王力宏" :99 , "周杰伦" :88 ,"林俊杰" :77 } score=my_dict1["王力宏" ] print (score)score2=my_dict1["周杰伦" ] print (score2)stu_score_dict = { "王乃鸿" : { "语文" : 77 , "数学" : 66 , "英语" : 33 }, "周杰伦" : { "语文" : 88 , "数学" : 86 , "英语" : 55 }, "林俊杰" : { "语文" : 99 , "数学" : 96 , "英语" : 66 } } print (f"{stu_score_dict} " )score=stu_score_dict["周杰伦" ]["语文" ] print (score)
解释:
字典用{}定义,由键值对key:value组成
键(key)必须唯一,重复的键会被后面的覆盖
通过字典名[key]获取对应的值(value)
字典可以嵌套,形成复杂的数据结构
11.7 字典的常用操作
my_dict = {"周杰伦" : 99 , "林俊杰" : 88 , "张学涵" : 77 } my_dict["张信哲" ] = 66 print (my_dict)my_dict["周杰伦" ]=33 print (my_dict)score=my_dict.pop("周杰伦" ) print (my_dict)my_dict.clear() print (my_dict)my_dict = {"周杰伦" : 99 , "林俊杰" : 88 , "张学涵" : 77 } keys=my_dict.keys() print (keys)for key in keys: print (key) print (my_dict[key]) num=len (my_dict) print (num)
解释:
字典常用操作:
添加 / 修改:字典名[key] = value(key 存在则修改,不存在则添加)
删除:pop(key)删除指定 key 的键值对,返回 value
清空:clear()
获取所有 key:keys()
遍历:通常遍历 key,再通过 key 获取 value
长度:len(字典)返回键值对数量
11.8 集合
my_set={"传智教育" ,"黑马程序员" ,"itheima" ,"传智教育" ,"黑马程序员" ,"itheima" ,"传智教育" ,"黑马程序员" ,"itheima" } my_set_empty=set () print (f"{my_set} ,{type (my_set)} " )print (f"{my_set_empty} ,{type (my_set_empty)} " )my_set.add("python" ) print (f"{my_set} ,{type (my_set)} " )my_set.remove("黑马程序员" ) print (f"{my_set} ,{type (my_set)} " )my_set={"传智教育" ,"黑马程序员" ,"itheima" } element=my_set.pop() print (f"{element} {my_set} " )my_set={"传智教育" ,"黑马程序员" ,"itheima" } my_set.clear() print (my_set)set1 = {1 , 2 , 3 } set2 = {1 , 5 , 6 } set3 = set1.difference(set2) print (set3) print (set1) print (set2) set1 = {1 , 2 , 3 } set2 = {1 , 5 , 6 } set1.difference_update(set2) print (set1) print (set2) set1 = {1 , 2 , 3 } set2 = {1 , 5 , 6 } set3 = set1.union(set2) print (set3) print (set1) print (set2) set1 = {1 , 2 , 3 , 4 , 5 ,1 , 2 , 3 , 4 , 5 } num = len (set1) print (f"集合{set1} 的长度是{num} " )for element in set1: print (element)
解释:
集合用{}定义,元素唯一(自动去重)
空集合必须用set()创建,{}是字典
集合是无序的,不能通过索引访问
常用操作:
添加:add(x)
删除:remove(x)删除指定元素,pop()随机删除
清空:clear()
差集:set1.difference(set2)获取 set1 独有的元素
并集:set1.union(set2)合并两个集合
11.9 序列切片
my_list=[0 ,1 ,2 ,3 ,4 ,5 ,6 ] result1=my_list[1 :4 ] print (result1)my_tuple=(0 ,1 ,2 ,3 ,4 ,5 ,6 ) result2=my_tuple[:] print (result2)my_str="01234567" result3=my_str[::2 ] print (result3)my_str="01234567" result4=my_str[::-1 ] print (result4)my_list=[0 ,1 ,2 ,3 ,4 ,5 ,6 ] result5=my_list[3 :1 :-1 ] print (result5)my_tuple=(0 ,1 ,2 ,3 ,4 ,5 ,6 ) result6=my_list[::-2 ] print (result6)
解释:
切片格式:序列[开始:结束:步长]
开始索引包含,结束索引不包含
省略开始:从开头开始;省略结束:到末尾结束
步长为负数表示反向切片(从后往前)
切片适用于列表、元组、字符串等序列
11.10 数据容器的通用功能
my_list = [1 , 2 , 3 , 4 , 5 ] my_tuple = (1 , 2 , 3 , 4 , 5 ) my_str = "abcdefg" my_set = {1 , 2 , 3 , 4 , 5 } my_dict = {"key1" : 1 , "key2" : 2 , "key3" : 3 , "key4" : 4 , "key5" : 5 } print (f"列表 元素个数有:{len (my_list)} " )print (f"元组 元素个数有:{len (my_tuple)} " )print (f"字符串 元素个数有:{len (my_str)} " )print (f"集合 元素个数有:{len (my_set)} " )print (f"字典 元素个数有:{len (my_dict)} " )print (f"列表 最大的元素是: {max (my_list)} " )print (f"元组 最大的元素是: {max (my_tuple)} " )print (f"字符串 最大的元素是: {max (my_str)} " ) print (f"集合 最大的元素是: {max (my_set)} " )print (f"字典 最大的元素是: {max (my_dict)} " ) print (f"列表 最小的元素是: {min (my_list)} " )print (f"元组 最小的元素是: {min (my_tuple)} " )print (f"字符串 最小的元素是: {min (my_str)} " )print (f"集合 最小的元素是: {min (my_set)} " )print (f"字典 最小的元素是: {min (my_dict)} " )print (f"列表转列表的结果是: {list (my_list)} " )print (f"元组转列表的结果是: {list (my_tuple)} " )print (f"字符串转列表的结果是: {list (my_str)} " ) print (f"集合转列表的结果是: {list (my_set)} " ) print (f"字典转列表的结果是: {list (my_dict)} " ) print (f"列表转元组的结果是: {tuple (my_list)} " )print (f"元组转元组的结果是: {tuple (my_tuple)} " )print (f"字符串转元组的结果是: {tuple (my_str)} " )print (f"集合转元组的结果是: {tuple (my_set)} " )print (f"字典转元组的结果是: {tuple (my_dict)} " )print (f"列表转字符串的结果是: {str (my_list)} " )print (f"元组转字符串的结果是: {str (my_tuple)} " )print (f"字符串转字符串的结果是: {str (my_str)} " )print (f"集合转字符串的结果是: {str (my_set)} " )print (f"字典转字符串的结果是: {str (my_dict)} " )print (f"列表转集合的结果是: {set (my_list)} " )print (f"元组转集合的结果是: {set (my_tuple)} " )print (f"字符串转集合的结果是: {set (my_str)} " )print (f"集合转集合的结果是: {set (my_set)} " )print (f"字典转集合的结果是: {set (my_dict)} " )my_list = [3 ,1 ,2 ,5 ,4 ] my_tuple = (3 ,1 ,2 ,5 ,4 ) my_str = "bdcefga" my_set = {3 ,1 ,2 ,5 ,4 } my_dict = {"key3" : 1 , "key1" : 2 , "key2" : 3 , "key5" : 4 , "key4" : 5 } print (f"列表对象的排序结果: {sorted (my_list)} " ) print (f"元组对象的排序结果: {sorted (my_tuple)} " ) print (f"字符串对象的排序结果: {sorted (my_str)} " ) print (f"集合对象的排序结果: {sorted (my_set)} " ) print (f"字典对象的排序结果: {sorted (my_dict)} " ) print (f"列表对象的反向排序结果: {sorted (my_list, reverse=True )} " )print (f"元组对象的反向排序结果: {sorted (my_tuple, reverse=True )} " )print (f"字符串对象的反向排序结果: {sorted (my_str, reverse=True )} " )print (f"集合对象的反向排序结果: {sorted (my_set, reverse=True )} " )print (f"字典对象的反向排序结果: {sorted (my_dict, reverse=True )} " )
解释:
所有数据容器都支持的功能:
len():计算元素个数
max():获取最大值(元素必须可比较)
min():获取最小值
类型转换:list()、tuple()、str()、set()
sorted():排序,返回列表(原容器不变)
sorted(容器, reverse=True)可以进行反向排序
字典转换和排序都是基于 key 进行的
12. 异常处理
try : f = open ("D:/abc.txt" , "r" , encoding="UTF-8" ) except : print ("出现异常了" ) try : print (name) except NameError as e: print ("出现了变量未定义的异常" ) print (e) try : 1 /0 except (NameError,ZeroDivisionError) as e: print (e) print ("出现了变量未定义的异常,或者,除以0的异常错误" ) try : print ("hello" ) except Exception as e: print ("出现异常了" ) else : print ("没有异常" ) finally : print ("无论是否异常都会执行" )
解释:
异常处理用于捕获程序运行时的错误,避免程序崩溃
基本结构:try: 可能出错的代码 except: 出错时执行的代码
except 异常类型 as e可以捕获特定类型的异常,并获取异常信息
else块在没有异常时执行
finally块无论是否有异常都会执行,常用于释放资源(如关闭文件)
13. 综合案例:猜数字游戏
import randomnum = 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 ("三次机会用完了,没有猜中。" )
解释:
这个程序实现了一个简单的猜数字游戏,有 3 次猜测机会
random.randint(1,10)生成 1 到 10 之间的随机整数
通过嵌套的if-else语句判断猜测结果,并给出提示
每次猜错后允许再次猜测,最多 3 次
14. 注释
解释:
注释是对代码的说明,不会被执行
单行注释用#开头
多行注释用三引号""" “”"包裹
良好的注释可以提高代码的可读性
15. 股价计算小程序
name="传智播客" stock_price=19.99 stock_code="003032" stock_price_daily_growth_factor=1.2 growth_days=7 finally_stock_price=stock_price*stock_price_daily_growth_factor**growth_days print (f"公司:{name} ,股票代码:{stock_code} ,当前股价:{stock_price} " )print ("每日增长系数:%.1f,经过%d天的增长后,股价达到了:%.2f" %(stock_price_daily_growth_factor,growth_days,finally_stock_price))
解释:
这个程序计算股票经过一定天数增长后的价格
是幂运算,a b表示 a 的 b 次方
格式化输出时用%.1f保留 1 位小数,%.2f保留 2 位小数
变量名应该有意义,清晰表示变量的用途