当前位置: 首页 > news >正文

从零开始的python学习生活

pycharm部分好用快捷键

在这里插入图片描述

变量名的定义

与之前学习过的语言有所不同的是,python中变量名的定义更加的简洁
such as
整形。浮点型和字符串的定义

money=50
haha=13.14
gaga="hello"

字符串的定义依然是需要加上引号,也不需要写;了

字符串拼接

在print输出时使用“,”进行连接
在这里插入图片描述
在这里插入图片描述

type的使用方式

可以查看数据类型
在这里插入图片描述
也可以三方中转
在这里插入图片描述

数据类型转换

在这里插入图片描述
在这里插入图片描述
转换成字符串可能比较方便,但是float转换成int可能会损失精度

标识符命名规则

在这里插入图片描述
真好可以用中文 😄
其他没啥要注意的,和其他语言一样

基本运算符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
ps:从来没见过这么省事的编辑器,他居然会猜你想写什么就给你写好。它真的我哭死

字符串的多种定义方式

在这里插入图片描述
感觉python有一种独特的疯感,freedom!

字符串拼接


在这里插入图片描述
ps字符串之间才可以拼接
在这里插入图片描述
数字的话需要定义的时候是字符串类型

字符串格式化

name="黑马程序员"
message="I am %s" % name
print(message)

这里必须是%和s,表示字符串站位
假如有很多个字符串的话
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

name="雪distance"
where="烟台"
age=21
xiaoshu=13.14
print("我的名字是%s,我家住在%s,我的年龄是%d,我将会爱你%f"%(name,where,age,xiaoshu))

在这里插入图片描述

数字精度设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不够的会在前面补上空格,小数就可以约束后面的位数

快速字符串格式化

print(f"我的名字是{name},我家住在{where},我的年龄是{age},我将会爱你{xiaoshu}")

在这里插入图片描述
在这里插入图片描述
课后练习

在这里插入图片描述

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

在这里插入图片描述
上面的修改一下股票价格不需要加上引号
这里一个很智障的问题,没搞明白数学公式咋写

input的用法

print("告诉我你是谁")
name=input()
age=input()
print(f"{name}")
print("我知道了你是%s,年龄是%s" % (name,age))

在这里插入图片描述
input接受的是字符串形式的数据,故上面是%s,尝试了一下%d会报错
所以需要强制类型转换

name=input("please tell me who are you")
name=int(name)
print(type(name))

在这里插入图片描述
在这里插入图片描述
小练习
在这里插入图片描述

user_name = input()
user_type=input()
print("您好:%s,您是尊贵的:%s用户,欢迎您光临。" % (user_name, user_type))

在这里插入图片描述

真假判断

bool_1=True
bool_2=False
print(f"bool_1的内容是{bool_1},类型是{type(bool_1)}")num1=10
num2=20
print(f"the final is {num1>=num2}")

在这里插入图片描述
需要注意的是,这里的True和False必须首字母大写

if判断语句

age=30
if age<=18:print("you are a kid")

python中没有大括号的限制了,所以主要就是看前面缩进,别忘了加冒号
小练习
在这里插入图片描述

print("欢迎来到黑马儿童游乐场,儿童免费,成人收费")
age=input("请输入你的年龄")
age=int(age)
if age >= 18:print("您已成年,游玩需要补票10元。")
print("祝您游玩愉快")

在这里插入图片描述

if-else语句

在这里插入图片描述
if和else都需要加:

print("欢迎来到黑马儿童游乐场,儿童免费,成人收费")
age=int(input("请输入您的年龄"))
if age >= 18:print("您已成年,游玩需要补票10元。")
else:print("未成年!免费!")
print("祝您游玩愉快")

在这里插入图片描述
小练习
在这里插入图片描述

print("欢迎来到黑马动物园")
age=int(input("请输入您的身高(cm)"))
if age >= 120:print("您的身高超出120cm,游玩需要补票10元。")
else:print("免费游玩!")
print("祝您游玩愉快。")

在这里插入图片描述

if-else多条件判断

elseif写成elif了非常摆烂
if-elif-else
在这里插入图片描述
在这里插入图片描述
小练习
在这里插入图片描述

num=4
num1=int(input("请输入第一次猜想的数字"))
if num1==num:print("猜对啦")
elif int(input("猜错了在猜一次"))==num:print("猜对啦")
elif int(input("猜错了,在猜最后一次"))==num:print("猜对了")
else:print("Sorry,猜错了,我猜想的数字是%d" % num)

在这里插入图片描述
ps猜数字小游戏

# 猜数字小游戏
num=4
while True:num1 = int(input("请输入一个数字"))if num1==num:print("你猜对啦")breakelif num1>num:print("你猜的数偏大了")else:print("你猜的数偏小了")

在这里插入图片描述

嵌套判断语句

if int(input("你的身高是多少cm"))>120:print("不免费")print("但是VIP等级大于3,可以免费,请输入VIP等级")if int(input("你的VIP级别是多少"))>3:print("免费!")else:print("不免费啦")
else:print("欢迎小朋友游玩")

在这里插入图片描述
这种只要题干里面描述清楚一般没得问题

little练习
在这里插入图片描述

age=int(input("Enter your age:"))
time=int(input("Enter your enter time:"))
level=int(input("Enter your enter level:"))
if age>=18 and age<30:if time>2 or level>3:print("可以领取嗷")else:print("不能领取嗷")
else:print("不能领取嗷")

在这里插入图片描述
到是也能实现,但是和老师希望的可能不太一样(老师希望可能一步一判断),顺便python的并且和或者竟然改成and和or了真好哇!

老师写的代码:

age=int(input("Enter your age:"))
time=int(input("Enter your enter time:"))
level=int(input("Enter your enter level:"))
if age>=18:print("你是成年人")if age<30:print("你的年龄达标")if time>2:print("你的入职时间达标")elif level>3:print("你的级别达标")else:print("入职时间或者级别不达标不能领取")else:print("你的年龄太大了嗷,不能领取")
else:print("未成年,不能领取嗷")

每一个if记得对应一个else

实战训练

在这里插入图片描述
代码如下所示

import random
num=random.randint(1,10)
num1=int(input("请输入数字"))
if num1==num:print("bingo")
elif num1>num:print("too big")num1=int(input("请第二次输入数字"))if num1>num:print("too big")num1=int(input("请第三次输入数字"))if num1>num:print("too big the num is %d"%num)elif num1<num:print("too small the num is %d"%num)else:print("bingo")elif num1<num:print("too small")num1 = int(input("请第三次输入数字"))if num1 > num:print("too big the num is %d"%num)elif num1 < num:print("too small the num is %d"%num)else:print("bingo")else:print("bingo")
else:print("too small")num1 = int(input("请第二次输入数字"))if num1 > num:print("too big")num1 = int(input("请第三次输入数字"))if num1 > num:print("too big the num is %d"%num)elif num1 < num:print("too small the num is %d"%num)else:print("bingo")elif num1 < num:print("too small")num1 = int(input("请第三次输入数字"))if num1 > num:print("too big the num is %d"%num)elif num1 < num:print("too small the num is %d"%num)else:print("bingo")else:print("bingo")

感觉是非常费劲的计算方式,假如使用上面的while循环或者for循环会比较简单,这个就用来锻炼逻辑
ps:三次猜数太难猜了,私心偷偷加了最后一次再猜不中就把数告诉我就完了,玩不过人工智能
在这里插入图片描述

while循环

假如表白100次就能成功!

n=10
while n>0:print("小美,我喜欢你")n-=1

怕给我电脑烧了,表白10次意思意思吧
在这里插入图片描述
little作业
在这里插入图片描述

n=1
sum1=0
while n<=100:sum1+=nn+=1# print(n)# print(sum1)
print(sum1)

在这里插入图片描述
这里出现101不重要,重要的是n=1和n=100之间就是100个数,假如从0开始,那么就要<100了

while循环猜数案例

带生成随机数版循环猜数案例

import random
num=random.randint(1,100)while True:num1=int(input("请输入数字"))if num1==num:print("you are right")breakelif num1>num:print("too big")else:print("too small")

在这里插入图片描述
哈哈,也是猜了好多遍
老师没有用break,使用的是修改flag,顺便还记录了一下你猜了多少次

import random
num=random.randint(1,100)
count=0
flag=True
while flag:count+=1num1=int(input("请输入数字"))if num1==num:print("you are right")flag=Falseelif num1>num:print("too big")else:print("too small")
print(f"你一共猜了{count}次")

在这里插入图片描述

while嵌套循环

在这里插入图片描述

让print语句输出不换行

在这里插入图片描述
在这里插入图片描述

制表符\t

在这里插入图片描述
这个对于中文可能有点问题,用英文是没有问题的

print("hello\tworld")
print("你好\tlihua")
print("itheima\tbest")

在这里插入图片描述
小练习
在这里插入图片描述

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

在这里插入图片描述

for循环

在这里插入图片描述

利用for循环遍历字符串

name="hhagegege"
for x in name:print(x,end='')

在这里插入图片描述
在这里插入图片描述
小练习
在这里插入图片描述

count=0
for x in "itheima is a brand of itcast":if x=="a":count+=1
print(f"这个字符串里面一共有{count}个a")

在这里插入图片描述
暂时没有区分大小写

count=0
for x in "itheima is a brand of itcastAAA":if x=="a" or x=="A":count+=1
print(f"这个字符串里面一共有{count}个a")

在这里插入图片描述
这是区分大小写的

for循环range语句

在这里插入图片描述
range里面一个数:到这个数有多少个
在这里插入图片描述
range两个数:这两个数字之前的所有数,不包含右端,包含左端
range三个数:左端,右端-1,加步长
上面三种语法代码:

# 语法一
for x in range(10):print(x,end='')
print()
# 语法二
for x in range(1,10):print(x,end='')
print()
# 语法三
for x in range(1,10,2):print(x,end='')
print()

在这里插入图片描述
这种就是类似其他语言的for循环,也是实现执行几遍的功能
在这里插入图片描述
small练习
在这里插入图片描述

num=int(input("Enter a number:"))
count=0
for x in range(1,num):if x%2==0:count+=1
print(f"1到{num}(不含100本身)有{count}个偶数")

在这里插入图片描述

for循环变量作用域

也就是我们之前学习的局部变量和全局变量

for i in range(5):print(i)
print(i)

在这里插入图片描述
这里实际上pycharm没有和你计较,最好还是用比较规范的版本,进行全局定义
在这里插入图片描述

for循环的嵌套使用

在这里插入图片描述
想小美表白案例,一共一百天,每天10朵玫瑰

for i in range(1,101):print(f"the {i} day")for j in range(1,11):print(f"this is the {j} flower")print("xiaomei I love you")
print(f"the {i} day I succeed!")

在这里插入图片描述
在这里插入图片描述
我们之前使用while循环时,我们最后第几天是i先++了,然后while判断不执行,我们在输出时还需要i-1现在for循环则是不管右端点的101,因此我们此时不需要进行i–的操作

练习for循环打印九九乘法表

在这里插入图片描述

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

在这里插入图片描述
下面老师写的

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

在这里插入图片描述
可以看出在间断方面做得更加完美

continue和break的使用

在这里插入图片描述
continue:暂时跳过这一次(程序读到continue就结束本次循环,直接到下一次)
break:结束循环,整个循环都结束
在这里插入图片描述
永远不会执行语句2

在这里插入图片描述
永远不会执行语句3,但是其他的都会被执行,这里注意一下语句4跟的谁
在这里插入图片描述
假如上面这个没有break

for i in range(1,10):print("1")for j in range(1,10):print("2",end='')# breakprint("3",end='')print("4")

在这里插入图片描述
是这样

循环综合案例

在这里插入图片描述

import random
num=random.randint(1,100)
money=10000
for i in range(1,21):level=random.randint(1,10)if level>=5:if money>=1000:money=money-1000print(f"向员工{i}发放工资1000元,账户余额还剩{money}")else:print("工资发完了,下个月领取把")breakelse:print(f"员工{i},绩效分{level},不发工资,下一位")

在这里插入图片描述
continue和break还是非常重要的

函数

在这里插入图片描述
提前写好方便直接使用
在这里插入图片描述

str1="hahsdwibcwidb"
str2="hfbiurwb"
str3="cnefbvu"def mylen(str):count = 0for i in str:count += 1print(f"字符串的长度是{count}")length1=mylen(str1)
length2=mylen(str2)
length3=mylen(str3)

eg:统计字符串长度的函数,实际上python已经提供了一个方法len()方法,也可直接调用
在这里插入图片描述

函数定义

在这里插入图片描述
简单小函数

def sayhi():print("hi")
sayhi()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
非常的人性!
我们调用要严格的遵循,调用在定义后面
小练习
在这里插入图片描述

def welcome():print("欢迎来到黑马程序员")print("请出示您的72小时核酸检测证明")
welcome()

在这里插入图片描述
老师写的,差点忘记我们的老朋友\n

def welcome():print("欢迎来到黑马程序员\n请出示您的72小时核酸检测证明")# print("")
welcome()

函数的传入参数

一个加法小函数

def add(a,b):result=a+bprint(f"{a}{b}相加的结果是{result}")
add(1,2)

在这里插入图片描述
在这里插入图片描述

函数的传入参数案例

在这里插入图片描述

def check(tem):if tem<=37.5:print(f"balabala……您是{tem}体温正常,请进!")else:print(f"balabala……您是{tem}体温异常,隔离去吧")check(36)
check(40)

在这里插入图片描述

函数返回值

在这里插入图片描述
我们假如使用return进行传递返回值的时候,需要拿一个变量来接
在这里插入图片描述

def add(a,b):return a+b
result=add(1,2)
print(result)

在这里插入图片描述
在这里插入图片描述
有返回值,只不过这里的返回值是None

def sayhi():print("hi")result=sayhi()
print(type(result))

在这里插入图片描述
在这里插入图片描述

def check(age):if age > 18:return "success"else:return None
result = check(18)
if not result:print("未成年禁止进入")

None=False
这里修改为True和False也是可以的,因为这样返回类型就不为空了,就是返回的布尔类型

函数的说明文档

在这里插入图片描述
主要就是在函数体前面记得备注,详细一点,让自己和他人都能看懂
在这里插入图片描述
在这里插入图片描述

函数的嵌套调用

在这里插入图片描述

def funb():print("funb")
def funa():print("funa")funb()print("func")
funa()

在这里插入图片描述
这个也是调用的函数需要提前定义完毕
在这里插入图片描述

变量在函数中的作用域

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
出了函数体在外面没法用
全局变量在函数内外都是可以使用的
正常在函数里面修改全局变量的值是没门的,但是在函数里面print一下能发现被修改了
引入global
在这里插入图片描述
在函数里面定义一下就是全局变量了

函数综合案例

在这里插入图片描述
自个写的感觉挺全面的

money=5000000
name=input("Enter your name: ")
def check():print("----------查询余额-------------")print(f"{name},你好,您的余额剩余{money}")
def cunkuan():print("----------存款-------------")money1=int(input("请输入您要存多少钱"))print(f"{name},你好,您的余额剩余{money+money1}")
def qukuan():print("----------取款-------------")money1 = int(input("请输入您要取多少钱"))print(f"{name},你好,您的余额剩余{money - money1}")while(True):print("-----------主菜单--------------")print(f"{name},hello,welcome,please choose")print("查询余额\t[输入1]\t")print("存款\t[输入2]\t")print("取款\t[输入3]\t")print("退出\t[输入4]\t")choose=int(input("请输入您的选择"))if choose==1:check()elif choose==2:cunkuan()elif choose==3:qukuan()else:print("您已成功退出")break

在这里插入图片描述
在这里插入图片描述
唯一注意一下,这里的处理,对齐展示,一个不行那就多加几个
ps老师原视频指路,想看老师写的代码可以看
视频链接P61

数据容器

在这里插入图片描述
但是猜测都是一个数据元素都是同类的里面
在这里插入图片描述

列表的定义

在这里插入图片描述
在这里插入图片描述
列表中可以存储不同的数据类型
之前好像写错了,写成只能一种类型了

name_list=['itheima','itcast','python']
print(name_list)
print(type(name_list))

在这里插入图片描述
假如里面放的不是一种数据类型,那么type依然是list类型
在这里插入图片描述

列表的下标索引

在这里插入图片描述
在这里插入图片描述
python支持正负进行取元素(虽然暂时不知道有啥用,但是很高级)
正向举例

name_list=['tom','Lily','sam']
print(name_list[0])
print(name_list[1])
print(name_list[2])

在这里插入图片描述
负向举例

name_list=['tom','Lily','sam']
print(name_list[-1])
print(name_list[-2])
print(name_list[-3])

在这里插入图片描述
在这里插入图片描述

嵌套索引同样可以用下标
用二维数字数组表示,第一个内列表里面第一个个就是按照顺序进行表示

name_list=[[9,8,6],[1,2,3]]
print(name_list[0][0])
print(name_list[0][2])
print(name_list[1][1])

唯一就是别忘了内部列表之间记得加,
还有下标是从0开始的,数对下标
在这里插入图片描述

列表的常用操作方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也就是某个类给我们提供了一堆函数(方法)
在这里插入图片描述

name_list=["itcast","itheima","python"]
index=name_list.index("itheima")
print(f"itheima在列表中的下标索引是{index}")

在这里插入图片描述
输入列表中的元素,查找元素在列表的那个位置

name_list=["itcast","itheima","python"]
name_list[0]="afteritcast"
print(name_list)

在这里插入图片描述
可以看到元素被修改成功了
在这里插入图片描述

name_list=[1,2,3]
name_list.insert(1,"insert")
print(name_list)

在这里插入图片描述
输入的是什么数字,到最后就会插入到对应位置
在这里插入图片描述

name_list=[1,2,3]
name_list.append("insert")
print(name_list)

在这里插入图片描述
听着,所谓追加元素,那肯定是在末尾(致敬杀手)
在这里插入图片描述
追加好多元素:extend

name_list=[1,2,3]
name_list.extend([4,5,6])
print(name_list)

在这里插入图片描述
追加的格式也是列表

name_list=[1,2,3]
name_list2=[4,5,6,7]
name_list.extend(name_list2)
print(name_list)

在这里插入图片描述
合并字符串变的轻轻松松
在这里插入图片描述
删除第一种方法:del 列表【下标】

name_list=["itcast","itheima","python"]
del name_list[0]
print(f"列表删除元素后,列表是{name_list}")

在这里插入图片描述
删除第二种方法:列表.pop(下标)

name_list=["itcast","itheima","python"]
# del name_list[0]
element=name_list.pop(1)
print(f"列表删除元素后,列表是{name_list},取出的元素是{element}")

在这里插入图片描述
瞎联想一下,这个很想弹出栈内元素
del仅仅能完成删除,但pop不仅可以删除,还可以拿到这个元素
在这里插入图片描述

name_list=[1,2,3,4,4,6,2,7]
# del name_list[0]
name_list.remove(2)
print(f"列表删除元素后,列表是{name_list}")

删除第一个匹配的(希望赶快出一个全部匹配删掉的,代码题里面很常见)
在这里插入图片描述
列表全部清空

name_list=[1,2,3,4,4,6,2,7]
name_list.clear()
print(f"列表删除元素后,列表是{name_list}")

在这里插入图片描述
统计某元素在列表内的数量
在这里插入图片描述

name_list=[1,2,3,4,4,6,2,7]
count=name_list.count(2)
print(f"列表2元素出现的次数为{count}")

在这里插入图片描述

列表增删改查巴拉巴拉方法的总结(非常好)

查找某元素的下标
语法:列表.index(元素)
列表的插入元素
语法:列表.insert(下标,元素)
列表的追加元素
语法:列表.append(元素)
列表的大量追加元素
语法:列表.extend(其他列表)
列表的删除元素
语法1del 列表【下标】
语法2:列表.pop(下标)
列表删除某元素在列表中的第一个匹配项
语法:列表.remove(元素)
清空整个列表
语法:列表.clear()
统计某元素在列表内的数量
语法:列表.count(元素)

在这里插入图片描述

列表课后练习

在这里插入图片描述

# 定义
student=[21,25,21,23,22,20]
# 追加31
student.append(31)
print(f"追加完数字31之后的列表{student}")
# 追加新列表
student.extend([29,33,30])
print(f"追加完新列表之后的列表{student}")
# 取出第一个元素
num=student.pop(0)
print(f"取出的第一个元素是{num}")
# 取出最后一个元素
num1=student.pop(-1)
print(f"取出的最后一个元素是{num1}")
# 查找元素
index=student.index(31)
print(f"元素下标是{index+1}列表是{student}")

在这里插入图片描述
通过这个例题我知道取负数下标有啥用了,假装当我们不知道一共有几个元素的时候,我们需要取元素,就可以直接取-1,就是最后一个元素

列表循环遍历

在这里插入图片描述
在这里插入图片描述

student=["haha","gaga","QAQQAQ"]
len=len(student)
index=0
while index<len:element=student[index]print(f"取出来的元素是{element}")index+=1

在这里插入图片描述
在这里插入图片描述

student=["haha","gaga","QAQQAQ"]
for i in student:print(f"每次取出来的元素是{i}")

在这里插入图片描述
在这里插入图片描述
小练习
在这里插入图片描述
使用while循环

list=[1,2,3,4,5,6,7,8,9,10]
list1=[]
# 使用while循环
num=0
while num<len(list):if list[num]%2==0:list1.append(list.pop(num))num+=1
print(f"通过while循环,从列表取出偶数,组成的新列表{list1}")

在这里插入图片描述
使用for循环(偷偷给改成奇数了,反正偶数已经打印了一遍了)

list=[1,2,3,4,5,6,7,8,9,10]
list1=[]
# 使用for循环
num=0
for num in list:if num%2!=0:list1.append(num)num+=1
print(f"通过for循环,从列表中取出奇数,组成新列表{list1}")

在这里插入图片描述
while循环里面num类似于下标,但是for里面的num就类似于列表中的内容了

元组的定义和相关操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
元组相当于一个只读的列表
在这里插入图片描述
在这里插入图片描述
元组的操作:比较全

# 定义元组
t1=(1,"hello",True)
print(f"t1的类型是{type(t1)},内容是{t1}")# 定义单个元素的元组
t2=("hello")
print(f"t1的类型是{type(t2)},内容是{t2}")
# 元组后面假如只有一个数据,数据后面要添加,不然就不是元组类型了,就是元素的类型了# 元组的嵌套
t3=((1,2,3),(4,5,6))
print(f"t1的类型是{type(t3)},内容是{t3}")# 下标索引取出内容,假设要取t3里面的5元素
num=t3[1][1]
print(f"取出的元素是{num}")# 元组的操作:index查找方法
t4=("haha","gaga","QAQQAQ")
index=t4.index("haha")
print(f"haha在元组里面的下标是{index}")# 元组的操作:count统计方法
t5=("haha","haha","haha","gaga","QAQQAQ")
count=t5.count("haha")
print(f"haha在元组里面出现的次数是{count}")# 元组的操作:len函数统计元组元素数量
length=len(t5)
print(f"t5元组的长度是{length}")# 元组的while遍历,这里就是遍历t5元组
num=0
while num<length:print(t5[num],end='')num+=1
print("")
# 元组的for遍历
for element in t5:print(element,end='')

在这里插入图片描述
在这里插入图片描述
元组里面的元素不能修改
but元组里面的列表可以修改

t9=(1,2,["haha","gaga","QAQQAQ"])
print(t9)
t9[2][0]="hahaha"
t9[2][1]="gagaga"
print(t9)

在这里插入图片描述
现在不知道为什么这么设定,功能有点鸡肋,但是它这么做一定有他的道理!

小练习
在这里插入图片描述

Jay=('周杰伦',11,['football','music'])
# 查询年龄在的下标
index=Jay.index(11)
print(f"年龄所在的下标是{index}")
# 查询学生姓名
str=Jay[0]
print(f"学生姓名是{str}")
# 删除学生爱好中的football
Jay[2].remove("football")
print(f"删除爱好之后元组是{Jay}")
# 增加爱好:coding(每日催眠,我爱编程我爱编程)
Jay[2].append("coding")
print(f"添加爱好之后元组是{Jay}")

在这里插入图片描述

字符串的定义和操作

在这里插入图片描述
这里的字符串就类似于我们之前学习过的列表和元组了,就是存放大量字符的地方
字符串也是一个不可以修改的数据容器
在这里插入图片描述
在这里插入图片描述
类似查找替换
在这里插入图片描述
分割字符串,到不同的列表中,也就是进行切分
在这里插入图片描述
简洁来说就是掐头去尾,去掉前后没有意义的东西
在这里插入图片描述
这个不知道是我使用有问题还是咋的,很鸡肋
空格就只能去两头空格
数字去完了之后假如有空格还是有

字符串操作汇总

str="haha and gaga or QAQQAQ"
# 通过下标取索引
value=str[1]
value1=str[-5]
print(value)
print(value1)
# 假如我们要修改字符串里面的数据,就只能新增一个字符串# index方法
value=str.index("and")
print(f"在字符串中and的起始下标是{value}")# replace方法,老的字符串并不会修改,需要一个新的字符串取接它
str1=str.replace("haha","哈哈")
print(f"替换完的新字符串是{str1}")# split方法
str2=str.split("a")
print(f"切割完的新字符串是{str2}")
str3=str.split(" ")
print(f"切割完的新字符串是{str3}")# strip方法
str3="12  haha and gaga or QAQQAQ  12"
print(str3.strip())
print(str3.strip("12"))# 统计字符串中某字符串的出现次数,count
count=str.count("ga")
print(f"ga这个字符串出现的次数是{count}")# 统计字符串的长度,len()
length= len(str)
print(f"str字符串的长度是{length}")

在这里插入图片描述
while循环和for循环

str="花花,你是一只小猪"
# while字符串循环
index=0
while index<len(str):print(str[index])index+=1
print("")
# for字符串循环
for i in str:print(i)

在这里插入图片描述
在这里插入图片描述

字符串练习

在这里插入图片描述

str="itheima itcast boxuegu"
# 统计一共有多少个“it”字符
count=str.count("it")
print(f"一共有{count}个“it”字符")
# 将字符串空格换成|
str1=str.replace(" ","|")
print(f"换完之后是{str1}")
# 按照|进行字符串分割,得到列表
str2=str1.split("|")
print(f"分割完之后是{str2}")

在这里插入图片描述

数据容器(序列)的切片

在这里插入图片描述
步长2,中间隔一个
步长3,中间隔两个
序列切片也是不会影响序列本身,而是整个新的序列

# 对list进行切片,从1开始,4结束,步长1
list=[1,2,3,4,5,6,7,8,9,10]
# 开始,结束,步长(步长可以省略不写list[1:4])
result=list[1:4:1]
print(f"结果是{result}")# 对tuple进行切片,从头开始,到最后结束,步长1
tuple=(1,2,3,4,5,6,7,8,9,10)
# 可以这么表示,是开头和结尾的话,步长还是1就都可以省略了
result1=tuple[0:len(tuple):1]
# 省略之后是这样
# result1=tuple[:]
print(f"结果是{result1}")# 对str进行切片,从头开始,到最后结束,步长2
str="12345678910"
result2=str[::2]
print(f"结果是{result2}")# 对str进行切片,从头开始,到最后结束,步长-1
str1="12345"
result3=str1[::-1]
print(f"结果是{result3}")# 对列表进行切片,从3开始,到1结束(不包含它本身),步长-1
list1=[1,2,3,4,5,6,7]
result4=list1[3:1:-1]
print(f"结果是{result4}")# 对元组进行切片,从头开始,到尾结束,步长-2
tuple1=(1,2,3,4,5,6,7)
result5=tuple1[::-2]
print(f"结果是{result5}")

元组,字符串,列表都是可以划分的都是
【开始:结束:步长】需要一个东西来接输出结果
在这里插入图片描述
在这里插入图片描述

# 这一步主要是得到这个倒序的序列,我不想自己敲
str="学Python,来黑马程序员,月薪过万"
str1=str[::-1]
# 得到正序序列
str2=str1[::-1]
str3=str2.split(",")
str4=str3[1]
str5=str4.replace("来"," ")
str6=str5.strip(" ")
print(str6)

写的有点麻烦感觉
在这里插入图片描述
老师写的:

# 这一步主要是得到这个倒序的序列,我不想自己敲
str="学Python,来黑马程序员,月薪过万"
str1=str[::-1]
# 倒序字符串,然后切片
str2=str1[::-1][9:14]
print(str2)
# 切片,然后倒序
str3=str1[5:10][::-1]
print(str3)
# split分割,replace替换来为空,倒序字符串
str4=str1.split(",")[1][::-1].replace("来","")
print(str4)

被python一长串爽到了
不用加中间变量
在这里插入图片描述

集合的定义和操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
集合里面没有重复元素,并且也是无序的
在这里插入图片描述

集合的操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

set1={"haha","gaga","QAQQAQ",}
my_set=set()
# 添加新元素
set1.add("huhu")
print(f"set添加元素之后结果是{set1}")
# 移除元素
set1.remove("haha")
print(f"set移除元素之后结果是{set1}")
# 随机取出一个元素
element=set1.pop()
print(f"set随机取出的元素是{element},还剩下集合{set1}")
# 清空集合
set1.clear()
print(f"set清空元素之后结果是{set1}")
# 取2个集合的差集
set2={1,2,3}
set3={2,3,4,5}
set4=set2.difference(set3)
print(set4)
# 消除2个集合的差集
set2.difference_update(set3)
print(set2)
# 2个集合合并为一个
set1={1,2,3}
set2={1,5,6}
set3=set1.union(set2)
print(set3)
# 统计集合元素数量len()
set1={1,2,3,4,5}
print(f"元素数量有{len(set1)}")
# 集合的遍历(不能用while循环,不支持下标索引)
for element in set1:print(f"元素有{element}")

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

集合课后练习

在这里插入图片描述

my_list=['黑马程序员','haha','黑马程序员','haha','gaga','gaga','huhu','huhu','best']
set1=set()
for element in my_list:set1.add(element)
print(set1)

在这里插入图片描述
它自动得出来就是不重复的了

字典定义

在这里插入图片描述
类似于我们平常使用的字典
在这里插入图片描述
在这里插入图片描述
定义字典也是大括号(和集合一样)
但是里面是定义键值对
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
外层key是学生姓名,内层key是考试科目

# 字典定义
dict11={"xiaoming":99,"Jay":88,"lihua":77}
# 定义空字典
dict1={}
dict2=dict()
print(f"字典一的内容是{dict11},类型是{type(dict1)}")
print(f"字典一的内容是{dict1},类型是{type(dict1)}")
print(f"字典一的内容是{dict2},类型是{type(dict2)}")
# 定义重复key的字典,新的数会把老的数字覆盖掉
dict3={"xiaoming":99,"Jay":88,"lihua":77,"xiaoming":53}
print(f"字典一的内容是{dict3}")
# 从字典中基于key获取value
dict11={"xiaoming":99,"Jay":88,"lihua":77}
score=dict11["xiaoming"]
print(f"小明的分数是{score}")
# 定义嵌套字典
student_score_dict={"xiaoming":{"语文":77,"数学":66,"英语":33},"Jay":{"语文":88,"数学":86,"英语":55},"lihua":{"语文":99,"数学":96,"英语":66}
}
print(f"学生的考试成绩是{student_score_dict}")
# 从嵌套字典中获取数据
score=student_score_dict["Jay"]["语文"]
print(f"Jay的语文成绩是{score}")
score1=student_score_dict["lihua"]["英语"]
print(f"lihua的英语成绩是{score}")


在这里插入图片描述

字典的常用操作

新增元素
在这里插入图片描述

更新元素
在这里插入图片描述
在这里插入图片描述

dict11={"xiaoming":99,"Jay":88,"lihua":77}
# 新增元素
dict11["lihaha"]=66
print(f"新增之后的字典{dict11}")
# 更新元素
dict11["Jay"]=69
print(f"更新之后的字典{dict11}")
# 删除元素
score=dict11.pop("xiaoming")
print(f"删除的元素是{score},删除之后的字典是{dict11}")# 清空元素
dict11.clear()
print(f"清空之后的字典{dict11}")# 获取全部的key
dict11={"xiaoming":99,"Jay":88,"lihua":77}
key=dict11.keys()
print(f"字典全部的keys{key}")
# 遍历字典,两种方法
for key,value in dict11.items():print(f"字典中的key是{key}")print(f"字典中的value是{value}")
for key in dict11.keys():print(f"字典中的key是{key}")print(f"字典中的value是{dict11[key]}")
# 统计字典内的元素数量
length=len(dict11.keys())
print(f"元素数量{length}")

在这里插入图片描述
在这里插入图片描述

字典课后练习

在这里插入图片描述

staff_information={"王力宏":{"部门":"科技部","工资":3000,"级别":1},"周杰伦":{"部门":"市场部","工资":5000,"级别":2},"林俊杰":{"部门":"市场部","工资":7000,"级别":3},"张学友":{"部门":"科技部","工资":4000,"级别":1},"刘德华":{"部门":"市场部","工资":6000,"级别":2}
}
print(f"全体员工的当前信息{staff_information}")for name in staff_information:if staff_information[name]["级别"] == 1:# 获取到员工的信息字典!!!employee_information=staff_information[name]# 修改员工信息employee_information["工资"]+=1000employee_information["级别"]=2# 将嵌套字典的东西更新回去!!!staff_information[name]=employee_information
print(f"全体员工的当前信息{staff_information}")

在这里插入图片描述
这个案例很好,主要练习了嵌套的类型,很有借鉴意义

5类数据容器的总结(五颗星)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据容器的通用操作

在这里插入图片描述
max,min,len
在这里插入图片描述
在这里插入图片描述
最大的收获就是又学了一个快捷键:
shift+Alt+鼠标拖动
可以批量选择,然后进行修改

my_list = [1,2,3,4,5,6,7,8,9]
my_tuple = (1,2,3,4,5,6,7,8,9)
my_string = 'hello world'
my_set = {1,2,3,4,5,6,7,8,9}
my_dict = {1,2,3,4,5,6,7,8,9}print(f"列表 元素个数有{len(my_list)}")
print(f"元组 元素个数有{len(my_tuple)}")
print(f"字符串 元素个数有 {len(my_string)}")
print(f"集合 元素个数有{len(my_set)}")
print(f"字典 元素个数有{len(my_dict)}")print(f"列表 最大的元素是{max(my_list)}")
print(f"元组 最大的元素是{max(my_tuple)}")
print(f"字符串最大的元素是{max(my_string)}")
print(f"集合 最大的元素是{max(my_set)}")
print(f"字典 最大的元素是{max(my_dict)}")print(f"列表 最小的元素是{min(my_list)}")
print(f"元组 最小的元素是{min(my_tuple)}")
print(f"字符串最小的元素是{min(my_string)}")
print(f"集合 最小的元素是{min(my_set)}")
print(f"字典 最小的元素是{min(my_dict)}")

在这里插入图片描述
整整齐齐
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
转换不了字典:因为字典是键值对
在这里插入图片描述

print(f"列表对象的排序结果:{sorted(my_list)}")
print(f"元组对象的排序结果:{sorted(my_tuple)}")
print(f"字符串对象的排序结果:{sorted(my_string)}")
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_string,reverse=True)}")
print(f"集合对象的排序结果:{sorted(my_set,reverse=True)}")
print(f"字典对象的排序结果:{sorted(my_dict,reverse=True)}")

在这里插入图片描述
全倒过来了
在这里插入图片描述

字符串大小比较

在这里插入图片描述
按照ASCII进行大小比较的65A,97a
小写a比较大
在这里插入图片描述
从前向后比较
在这里插入图片描述
在这里插入图片描述
不知道是我电脑的问题还是咋,感觉在这里面敲有点卡,换个文章继续干

相关文章:

从零开始的python学习生活

pycharm部分好用快捷键 变量名的定义 与之前学习过的语言有所不同的是&#xff0c;python中变量名的定义更加的简洁 such as 整形。浮点型和字符串的定义 money50 haha13.14 gaga"hello"字符串的定义依然是需要加上引号&#xff0c;也不需要写&#xff1b;了 字符…...

MSP学习

一、迁移资源调研 完成导入&#xff0c;类似完成选型分析 离线工具调研 账单 二、迁移计划 1、 ecs 确认开始构建迁移环境后&#xff0c;平台将锁定当前标记的迁移资源范围及源端、目标端资源配置信息&#xff0c;并以此为迁移环境构建及迁移实施的数据依据 目标账号…...

生产力工具|Endnote X9如何自动更新文件信息

一、以EndNote X9.2版本为例&#xff0c;打开EndNote文献管理软件。 二、在菜单栏找到“Edit→Preferences...”&#xff0c;点击打开&#xff0c;弹出一个“EndNote Preferences”窗口。 三、进行设置 在打开的窗口左侧选择“PDF Handing”&#xff0c;右边会出现自动导入文献…...

【python】字典、列表、集合综合练习

1、练习1(字典) 字典dic,dic {‘k1’:‘v1’, ‘k2’: ‘v2’, ‘k3’: [11,22,33]} (1). 请循环输出所有的key dic {"k1": "v1", "k2": "v2", "k3": [11, 22, 33]} for k in dic.keys():print(k)k1 k2 k3(2). 请循环输…...

超融合服务器挂载硬盘--linux系统

项目中需要增加服务器的硬盘容量&#xff0c;通过超融合挂载了硬盘后&#xff0c;还需要添加到指定的路径下&#xff0c;这里记录一下操作步骤。 一&#xff1a;通过管理界面挂载硬盘 这一步都是界面操作&#xff0c;登录超融合控制云台后&#xff0c;找到对应的服务器&#…...

Kafka如何防止消息重复发送

Kafka 提供了几种方式来防止消息重复发送和处理。这些方式通常取决于生产者和消费者的设置和实现方式&#xff1a; 生产者端幂等性&#xff08;什么是幂等性&#xff09;&#xff1a; 幂等性生产者&#xff1a;从 Kafka 0.11 版本开始引入了生产者端的幂等性支持。生产者可以通…...

数据库设计原则介绍

数据库设计是一个重要的过程&#xff0c;它涉及到创建一个逻辑结构来存储和管理数据。良好的数据库设计可以确保数据的完整性、一致性、性能和安全性。以下是一些关键的数据库设计原则&#xff1a; 1. 数据规范化 (Normalization) 目的&#xff1a;减少数据冗余、提高数据一致…...

反馈神经网络与不同类型的神经网络:BP神经网络,深度感知机,CNN,LSTM

反馈神经网络与不同类型的神经网络&#xff1a;BP神经网络&#xff0c;深度感知机&#xff0c;CNN&#xff0c;LSTM 在神经网络的研究和应用中&#xff0c;我们经常听到BP神经网络、深度感知机&#xff08;MLP&#xff09;、卷积神经网络&#xff08;CNN&#xff09;、长短期记…...

轮播图案例

丐版轮播图 <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title> 基础轮播图 banner 移入移出</t…...

Spring 泛型依赖注入

Spring 泛型依赖注入&#xff0c;是利用泛型的优点对代码时行精简&#xff0c;将可重复使用的代码全部放到一个类之中&#xff0c;方便以后的维护和修改&#xff0c;同时在不增加代码的情况下增加代码的复用性。 示例代码&#xff1a; 创建实体类 Product package test.spri…...

C++ Linux调试(无IDE)

跨平台IDE编译调试C很方便&#xff0c;如QTCreate 、VSCode、Eclipse等&#xff0c;但是如果只能使用Shell控制台呢&#xff0c;gdb调试的优势就很明显了&#xff0c;在没有IDE的情况下&#xff0c;这个方式最有效。因为上手不是很难&#xff0c;特此整理 参考链接 目录 1、G…...

FFmpeg——视频拼接总结

最近需要做一个关于视频拼接的内容&#xff0c;需要将两个视频合成一个视频&#xff0c;使用opencv的话需要将视频读上来然后再写到文件了&#xff0c;这个会很消耗时间也没有必要。两个视频的编码格式是一样的&#xff0c;并不需要转码操作所以想法是直接将视频流补到后面&…...

springboot项目怎么样排除自带tomcat容器使用宝蓝德bes web中间件?

前言&#xff1a; 由于Spring Boot 1.x和2.x不兼容&#xff0c;BES提供了对应的Spring Boot Starter版本。 bes‑lite‑spring‑boot‑1.x‑starter.jar&#xff0c;适用于Spring Boot 1.x的版本。 bes‑lite‑spring‑boot‑2.x‑starter…...

响应式ref()和reactive()

文章目录 ref()reactive()ref对比reactivetoRefs与toRef ref() 作用&#xff1a;定义响应式变量。 语法&#xff1a;let xxxref(初始值)。 返回值&#xff1a;一个RefImpl的实例对象&#xff0c;简称ref对象或ref&#xff0c;ref对象的value属性是响应式的 注意点&#xff1…...

运维系列.Nginx中使用HTTP压缩功能

运维专题 Nginx中使用HTTP压缩功能 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550…...

vue3项目图片压缩+rem+自动重启等plugin使用与打包配置

一、Svg配置 每次引入一张 SVG 图片都需要写一次相对路径&#xff0c;并且对 SVG 图片进行压缩优化也不够方便。 vite-svg-loader插件加载SVG文件作为Vue组件&#xff0c;使用SVGO进行优化。 插件网站https://www.npmjs.com/package/vite-svg-loader 1. 安装 pnpm i vite-svg…...

数据库性能优化系统设计

设计一个数据库性能优化系统&#xff0c;目标是监测、诊断并改善数据库的运行效率&#xff0c;确保系统能够高效稳定地处理大量数据请求。以下是一个概要设计&#xff0c;包括关键模块、功能和实现思路&#xff1a; 1. 系统架构 分布式监控中心&#xff1a;采用分布式架构收集…...

MyBatisPlus-分页插件的基本使用

目录 配置插件 使用分页API 配置插件 首先&#xff0c;要在配置类中注册MyBatisPlus的核心插件&#xff0c;同时添加分页插件。&#xff08;可以放到config软件包下&#xff09; 可以看到&#xff0c;我们定义了一个配置类&#xff0c;在配置类里声明了一个Bean,这个Bean的名…...

深入探索Python库的奇妙世界:赋能编程的无限可能

在编程的浩瀚宇宙中&#xff0c;Python以其简洁的语法、强大的功能和广泛的应用领域&#xff0c;成为了众多开发者心中的璀璨明星。而Python之所以能够如此耀眼&#xff0c;很大程度上得益于其背后庞大的库生态系统。这些库&#xff0c;如同一块块精心雕琢的积木&#xff0c;让…...

力扣爆刷第161天之TOP100五连刷71-75(搜索二叉树、二维矩阵、路径总和)

力扣爆刷第161天之TOP100五连刷71-75&#xff08;搜索二叉树、二维矩阵、路径总和&#xff09; 文章目录 力扣爆刷第161天之TOP100五连刷71-75&#xff08;搜索二叉树、二维矩阵、路径总和&#xff09;一、98. 验证二叉搜索树二、394. 字符串解码三、34. 在排序数组中查找元素的…...

你真的了解Java内存模型JMM吗?

哈喽&#xff0c;大家好&#x1f389;&#xff0c;我是世杰。 本文我为大家介绍面试官经常考察的**「Java内存模型JMM相关内容」** 面试连环call 什么是Java内存模型(JMM)? 为什么需要JMM?Java线程的工作内存和主内存各自的作用?Java缓存一致性问题?Java的并发编程问题? …...

Springboot整合Jsch-Sftp

背景 开发一个基于jsch的sftp工具类&#xff0c;方便在以后的项目中使用。写代码的过程记录下来&#xff0c;作为备忘录。。。 Maven依赖 springboot依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-par…...

生成随机的验证码图片(Python)

文章目录 一、导入包二、生成随机的验证码三、生成随机的rgb颜色四、生成图片验证码总结&#xff1a; 一、导入包 import random from PIL import Image, ImageDraw, ImageFont二、生成随机的验证码 def random_code(length4):默认返回4位随机验证码&#xff0c;字符串code …...

0/1背包问题总结

文章目录 &#x1f347;什么是0/1背包问题&#xff1f;&#x1f348;例题&#x1f349;1.分割等和子集&#x1f349;2.目标和&#x1f349;3.最后一块石头的重量Ⅱ &#x1f34a;总结 博客主页&#xff1a;lyyyyrics &#x1f347;什么是0/1背包问题&#xff1f; 0/1背包问题是…...

模电基础 - 放大电路的频率响应

目录 一. 简介 二. 频率响应的基本概念 三. 波特图 四. 晶体管的高频等效模型 五. 场效应管的高频等效模型 六. 单管放大电路的频率响应 七.多级放大电路的频率响应 八. 频率响应与阶跃响应 一. 简介 放大电路的频率响应是指在输入不同频率的正弦信号时&#xff0c;电路…...

Java 8 到 Java 22 新特性详解

Java 8 到 Java 22 新特性详解 Java自发布以来一直在不断演进&#xff0c;添加新特性以提升开发效率和性能。本文将介绍Java 8到Java 22的主要新特性&#xff0c;帮助开发者了解各版本的新功能和改进。 Java 8 (2014) 1. Lambda 表达式 Lambda 表达式允许使用简洁的语法定义…...

华为OD机试题-提取字符串中最长数学表达式

题目描述 https://blog.csdn.net/weixin_51055612/article/details/139841128 题目描述 提取字符串中的最长合法简单数学表达式&#xff0c;字符串长度最长的&#xff0c;并计算表达式的值。如果没有&#xff0c;则返回0。 简单数学表达式只能包含以下内容&#xff1a;0-9数字&…...

专家指南:如何为您的电路选择理想的压敏电阻或热敏电阻

保护和维持电路功能需要两种设备&#xff1a;压敏电阻和热敏电阻。这两个电气元件有时会因后缀相似而混淆&#xff0c;但它们具有不同且重要的用途。 由于这种混淆&#xff0c;我们需要准确地了解这些组件是什么&#xff0c;这就是本文将要讨论的内容——应用程序、作用、优点…...

基于主流SpringBoot进行JavaWeb开发的学习路线

目录 一、学习路线 &#xff08;1&#xff09;第一部分&#xff08;Web前端开发的技术栈&#xff09; &#xff08;2&#xff09;第二部分&#xff08;Web后端开发&#xff09; 二、学习之后必备的技能 三、学习Web开发的基础与未来的收获 学完这一类知识目标&#xff1a;…...

医疗机器人中的具身智能进展——自主超声策略模型的任务编码和局部探索

医疗机器人一直是具身智能的研究热点。医学图像、医疗触诊、血压血氧、心率脉搏和生物电信号等多模态生物医学信息&#xff0c;不断丰富着医疗机器人的感知范畴。 自主超声 “自主超声”属于具身智能医疗机器人领域中话题度较高的研究方向。作为临床检查的重要手段之一&#…...