Python(一):字符串、列表、元组、布尔表达式、in、not in、and、or、not、浅拷贝和深拷贝、分支语句


前言

包括字符串的定义,字符串中的转义符,字符串的拼接,字符串的下标,字符串的切片;列表的概念,新增列表元素,删除列表元素,列表的切片;元组;布尔表达式;in,ont in;and,or,not;深拷贝和浅拷贝;选择分支结构。


一、字符串

1、字符串定义

(1)、用单引号或双引号或三引号引用的对象,就是字符串

url = 'https://www.baidu.com'  # 单引号的字符串
url2 = "https://www.baidu.com"  # 双引号的字符串
print(url, url2)

在这里插入图片描述

(2)、字符串中有单引号时,外面用双引号;字符串中有双引号时,外面用单引号

# str1='It's OK'  # invalid syntax
str1 = "It's OK"  #字符串中有单引号时,外面用双引号
#str2 = "He said:"Are you OK?""  # invalid syntax
str2 = 'He said:"Are you OK?"'  # 字符串中有双引号时,外面用单引号
print(str1,str2)

在这里插入图片描述

(3)、三引号可以用三个单引号表示,也可以用三个双引号表示

(4)、字符串中有单引号和双引号时,可以用三引号

str3_new='''这里有'单引号',"双引号"等等'''
print(str3_new)

在这里插入图片描述

(5)、三引号可以记录换行符等特殊字符

str6='''横看成岭侧成峰
远近高低各不同
不识庐山真面目
只缘身在此山中'''
str6_new='横看成岭侧成峰\n远近高低各不同\n不识庐山真面目\n只缘身在此山中'
print(str6)
print(str6_new)

在这里插入图片描述

2、字符串中的转义符

(1)、一些字母与数字前加“\”来表示常见的那些不能显示的ASCLL字符,如\o,\t,\n等,就称为转义字符

(2)、转义符用于表示不能直接显示的字符,比如后退键,换行符等

str1='abcde\b'  #backspace键
print(str1)

在这里插入图片描述

str1='abcde\nfghij'  #换行
print(str1)

在这里插入图片描述

(3)、对转义符的处理:

  • 方案一:\n前面加一个\

  • 方案二:字符串的外面加一个r,表示后面的字符串中的所有转义符均不生效

  • 方案三:表示路径时,可以用/代替\

filepath = 'D:\note1.txt'
print(filepath)

在这里插入图片描述

# 方案一,\n前面加一个\
filepath = 'D:\\note1.txt'
# 方案二,字符串的外面加一个r,表示后面的字符串中的所有转义符均不生效
filepath = r'D:\note1.txt'
# 方案三,表示路径时,可以用/代替\
filepath = 'D:/note1.txt'
print(filepath)

在这里插入图片描述

3、字符串的拼接

字符串之间用+号进行拼接

print('1'+'2')  #字符串之间用+号进行拼接
# print('1'+2)  #str型与int型进行相加,报错
print('1'*2)  #将1打印两遍

在这里插入图片描述

a = 9
b ='6'
# print(a + b)  # 报错
print(a + int(b))  # int()将对象转为int型
print(str(a) + b)  # str()将对象转为字符串
print(type(a))  # type()返回对象的类型

在这里插入图片描述

4、字符串的下标

(1)、字符串的特性,被称为下标或者sequence(序列)

(2)、一个序列,若干个元素组成

(3)、字符串的下标从0开始

(4)、长度为n的字符串,下标最大为n-1

(5)、超出最大下标,则提示下标越界

str9 = 'abcde'
print(str9[5])  # IndexError: string index out of range

(6)、也可以使用负下标,比如最后一位是-1

在这里插入图片描述

5、字符串的切片

(1)、[起始值:终止值:步长] 包含起始值,不包含终止值,步长默认值为1

str9 = 'abcde'
print(str9[0:3])  # 正下标的切片
print(str9[-5:-2])  # 负下标的切片
print(str9[:3])  # 起始值不写,表示从头开始取值
print(str9[3:])  # 终止值不写,表示从起始值开始,后面全取
print(str9[:])  # 起始值和终止值都不写,全取
print(str9[::2])  # 步长为n时,表示每n位取一次值

在这里插入图片描述

(2)、步长为负数时,从右向左取值

(3)、步长为负数代表着从右向左取值,所以起始值大于终止值才能取到值

(4)、起始值与终止值的正负不影响方向,步长的正负影响方向

str9 = 'abcde'
print(str9[::-1])
print(str9[2::-1])  # 取cba的值
print(str9[-3::-1])  # 取cba的值

在这里插入图片描述

注:步长为负数时的起始值应大于终止值;起始值与终止值的正负不影响方向,步长的正负影响方向

(5)、字符串是不可变对象,不可以修改某一位的值

str10 = 'abc'
str10[0] = 'z'  # 报错

在这里插入图片描述

二、列表与元素

1、列表的概念

(1)、列表也是一种sequence类型,列表是一种容器,由一系列元素组成,元素之间有先后顺序关系

(2)、列表的元素可以存放任意对象

(3)、列表用中括号[]表示

(4)、列表的每个元素之间用逗号分隔

list1 = [1, 'abc', [100, 180, 360], (100, 200, 300), {'A': 'apple'}]
print(list1)

在这里插入图片描述

(5)、列表是可变对象,可以修改其中的元素,字符串不可修改

list2 = [100,200,300,[400,500]]
list2[0] = 980
list2[3][0] = 680  # 修改子列表的第0位的值
print(list2)

在这里插入图片描述

2、新增列表元素

(1)、append() 将对象添加到列表的末尾

list3 = [100,200,300]
list3.append(600)
print(list3)

在这里插入图片描述

(2)、insert() 将对象添加到列表的指定位置

list3.insert(1,600)
print(list3)

在这里插入图片描述

注:第一位为下标数,当超过最大下标时,添加到末尾

(3)、extend() 列表的拼接

list3_new = [400,500,600]
list3.extend(list3_new)
print(list3)

在这里插入图片描述

# 当拼接字符串类型时会拆开拼接
list3_new = 'abcde'
list3.extend(list3_new)
print(list3)

在这里插入图片描述

3、删除列表元素

(1)、pop() 不写参数时,删除列表的最后一位,写参数时,删除指定位置的值

list6 = [100, 200, 300, 400, 500, 600]
list6.pop()  # 删除列表的最后一位
# print(list6.pop())  # 返回被删除的值
list6.pop(2)  # 删除第2位的值
print(list6)

在这里插入图片描述

(2)、remove() 根据值进行删除

list6.remove(100)
print(list6)

在这里插入图片描述

注:存在多个相同值时,只删除第一个;根据下标删效率高,根据值删效率低

(3)、del 删除列表中的元素

del list6[0]
# del list6  # 删除整个list6列表
print(list6)

在这里插入图片描述

4、列表的切片

(1)、[起始值:终止值:步长] 包含起始值,不包含终止值,步长默认值为1

(2)、步长为负数时,从右向左取值

(3)、切片生成的是新对象,不改变原对象

list9 = [11,22,33,44,55,66,77,88]
list9_new = list9[:3]
list9_new = list9[-1:-4:-1]  # 88,77,66
# list9_new = list9[7:4:-1]  # 88,77,66
print(list9)
print(list9_new)

在这里插入图片描述

5、元组

(1)、元组是不可变对象

tuple1 = (100,200)
tuple1[0] = 900  # 报错,元组是不可变对象
tuple1 = 300  # 不会报错,重新赋值

(2)、元组的元素可以存放任意对象

(3)、元组用()表示

(4)、元组的每个元素之间用逗号分隔

(5)、元组也可以使用下标和切片,用法与列表一致

(6)、如果元组中只有一个元素,加一个逗号

# tuple2 = (100)  # 不加逗号为int型,(100)认为是四则远算
tuple2 = (100,)
print(type(tuple2))

在这里插入图片描述

(7)、如果元组中有子列表,子列表里的值可以修改

tuple3 = (100, 200, [300, 400, 500])  # 列表可修改,如果修改整个列表是不可修改
tuple3[2][0] = 960
print(tuple3)

在这里插入图片描述

三、布尔表达式

1、布尔表达式

(1)、产生布尔值的表达式(expression);布尔值 True,False

(2)、python中,=表示赋值,==表示判断恒等,!=表示不等于

(3)、使用==、!=、>、<、>=、<=比较运算符

print(3 > 2)  # True
print(1 > 2)  # False

在这里插入图片描述

print('a' > 'A')  # 字符串之间的比较,比的是ASCII码的大小,A的ASCII码是65,a是97
print('aA' == 'Aa')  # 字符串之间的比较,只比较第一位,如果第一位相同,则向后比较第二位,以此类推

在这里插入图片描述

2、in;not in

list1 = [100,200,300,[400,500]]
print(100 in list1)
print(500 in list1)  # 500属于子列表,不属于列表
print(500 in list1[-1])
print(100 not in list1)  # not True为False,not False为True
print(500 not in list1)

在这里插入图片描述

3、and ;or;not

操作符描述举例
and 且只有所有表达式都是True,表达式结果才是True,一假为假,全真为真>>>True and True(True)
or 或只要有一个表达式是True,表达式结果就是True,一真为真,全假为假>>>True or False(True)
not 不把操作数反转布尔值。True变成False,False变成True>>>not True(False)
print(1 > 2 and 3 > 2 and 10 > 9)  # 一假为假,全真为真
print(1 > 2 or 2 > 3 or 10 > 9)  # 一真为真,全假为假

在这里插入图片描述

(1)、and、or、not 优先级 not > and > or,括号可以改变优先级

print(2 > 1 and 1 > 2 and not True or 3 > 2)
print(2 > 1 and 1 > 2 and (not True or 3 > 2))

在这里插入图片描述

(2)、程序执行时,如果它能判断布尔表达式为假,则后面的式子不再执行,直接返回False

def fun1():
    print('Hello')
    return True
    
print(1 > 2 and fun1())  # 不会调用fun1()函数
print(fun1() and 1 > 2)  # 程序从上到下,从左到右

在这里插入图片描述

(3)、程序执行时,如果它能判断布尔表达式为真,则后面的式子不再执行,直接返回True

def fun1():
    print('Hello')
    return True
    
print(2 > 1 or fun1())  # 不会调用fun1()函数
print(fun1() or 2 > 1)

在这里插入图片描述

4、浅拷贝与深拷贝

有两个接口,A接口的数据[100,200,300,[400,500]],接口B的数据要求与接口A一致
(1)、领导要求修改接口A的第0为的值,改为999,不可以修改接口B的值
(2)、领导要求修改接口A的子列表的第0为的值,改为180,不可以修改接口B的值

赋值:listA与listB指向的是同一个对象

在这里插入图片描述

listA = [100,200,300,[400,500]]
listB = listA  # 赋值,相当于起了一个别名,没有生成新的对象
listA[0] = 999
print(listA)
print(listB)

在这里插入图片描述

浅拷贝:列表是不同的对象,子列表仍然是同一个对象

在这里插入图片描述

import copy

listA = [100,200,300,[400,500]]
listB = copy.copy(listA)  # 浅拷贝,生成了新对象,子列表仍然是同一个对象
listA[0] = 999
listA[3][0] = 180
print(listA)
print(listB)

在这里插入图片描述

深拷贝:列表与子列表都是不同的对象

在这里插入图片描述

import copy
listA = [100,200,300,[400,500]]
listB = copy.deepcopy(listA)  # 深拷贝,列表和子列表都是新对象
listA[0] = 999
listA[3][0] = 180
print(listA)
print(listB)

在这里插入图片描述

切片,相当于浅拷贝

listA = [100,200,300,[400,500]]
listB = listA[:]  # 切片,相当于浅拷贝
listA[0] = 999
listA[3][0] = 180
print(listA)
print(listB)

在这里插入图片描述

四、分支语句

在这里插入图片描述

(1)、python对于缩进有严格的要求,不需要缩进的地方不可以缩进,需要缩进的地方必须缩进

(2)、python对于缩进几个空格不做要求,可以1个,也可以多个,一般默认4个

if 2 > 1:  # 如果布尔表达式的结果为真,则执行if下面的语句
    print('hello')
else:  # 不满足if条件,则执行else中的语句
    print('布尔表达式的结果为假')

在这里插入图片描述

经典案例: 用户输入一个分数,如果分数大于等于90,则打印优秀,如果大于等于80,则打印不错,如果大于等于60,则打印及格,否则打印不及格

# 方案一
score = input('请输入一个数字:  ')  # input()从键盘读取用户的输入,返回值是str型
if score.isdigit():  #isdigit()判断字符串对象是否是纯数字,返回值是布尔型
    score = int(score)
    if score >= 90:
        print('优秀')
    elif score >= 80:
        print('不错')
    elif score >= 60:
        print('及格')
    else:
        print('不及格')
else:
    print('您输入的不是整数')
# 方案二
score = input('请输入一个数字:  ')
if not score.isdigit():
    print('您输入的不是整数')
else:
    score = int(score)
    if score >= 90:
        print('优秀')
    elif score >= 80:
        print('不错')
    elif score >= 60:
        print('及格')
    else:
        print('不及格')

在这里插入图片描述

经典案例:如果一个人的年龄大于等于60岁,并且为男性,我们称之为老先生

# 方案一
age = 60
gender = 'male'
if age >= 60 and gender == 'male':
    print('old gentleman')
# 方案二
age = 60
gender = 'male'
if age >= 60:
    if gender == 'male':
        print('old gentleman')

在这里插入图片描述


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿快跑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值