立即登录

注册账号

联系我们

2022年4月6日 14:53

2.1 基本数据类型_字符串_列表_元祖_集合_字典

字符串 str
1. 双引号和单引号到底有什么区别? 区别就在于使用场景不同.
2. 互相包含,但是不能包含自身
规则: 
1. 左右必须成对出现
2. 被包含部分被视为字符串的一部分.无需成对.

a = "what'up,it's good"
b = 'say:"hello"'

转义字符
转义字符(\)改变字符自身的含义
\输出的并不是\,而是和后面的字符结合来代表特殊含义
和引号结合,代表引号自身,避免引号之间由于包含关系产生的错误

a = 'what\'up,say"hello"'
# 常见的代表一些空白字符 \b \t \n(换行)
b = "hello,\nworld."

字符串的连接及换行
1. 可以使用+来连接多个字符串
1.1. 如果是原始字符串,其中的加号可省略但不推荐

"hello" + "world"
"hello""world" # 不会报错,不推荐
a = "hello"
b = "world"
a + b

2. 换行,当字符串过长时,有必要换行.
2.1 推荐的方法:在字符串中间部分用\来分割后换行,不用补引号 
2.2 不推荐,让字符串的每一行都成为独立的字符串,需要在每一行的头尾来补引号,确保成对.

c = "you will have it if it belongs to you,\
whereas you don't kvetch for it if it doesn't appear in your life. "
c

在某些时候,可以使用"""来包含字符串
1. 字符串中既可以有单引号,也可以有双引号
2. 不推荐使用,有长篇的文本,且有换行时,才使用

a = """say"hello"what'up""" # 不推荐,用转义字符来代替
b = """Content-Length: 75736
Content-Security-Policy: frame-ancestors 'self'; report-uri /api/security/csp-report
Content-Type: text/html; charset=UTF-8
Date: Thu, 17 Mar 2022 01:26:37 GMT
Etag: "a749598279f78177f47fb2bc6fc9e3aba7e26aa1"
Server: TornadoServer/6.1
X-Content-Type-Options: nosniff"""

练习

# 练习1 
a = 'abc'ed' # 错误
a = 'abc\'ed' # 方法一 转义字符
a = "abc'ed" # 方法二 把外面的单引号改为双引号
# 提高练习 转义字符,让转义字符来表示本身的含义,不转义
a = 'abc\ne' # \n代表了换号
# 方法一: \\表示\
a = 'abc\\ne'
# 方法二: 在字符串前加一个小写r
a = r'abc\ne'

字符串的格式化输出

# 字符串的格式化输出, 两个字符串时,超过两个用format
s = "hello"
k = "world"
s + k
s * 3

数字和字符串不能 +

name = "范总"
age = 18
# name + age # 报错

# 在字符串中用{}来占位,通过.format()中的值来依次填充占位符
# 括号的数量和值的数量必须相同
# 对数据类型没有要求

name = "范总"
age = 18
"我的名字:{},我今年{}岁".format(name,age)
# 括号中填入下标,来更改值的顺序
"我爱{0},我爱{1},我爱{2}".format("祖国","家乡","家人")
# 括号中填入下标,来更改值的顺序
"我爱{2},我爱{1},我爱{0}".format("祖国","家乡","家人")
# 通过下标,可以实现值与占位符不匹配
"我的理想{0},我的行动{1},我的爱好{0}".format("挣钱","努力学习")
# 通过下标,可以实现值与占位符不匹配, 注意: 下标不能超出范围
# "我的理想{0},我的行动{1},我的爱好{2}".format("挣钱","努力学习")  # 不匹配报错
# format(),可以简化成字符串前加f的格式,把变量填入括号中
name = "范总"
age = 18
f"我的名字:{name},我今年{age}岁"
a = "祖国"
b = "家乡"
c = "家人"
f"我爱{c},我爱{b},我爱{a}"
a = "挣钱"
b = "努力学习"
f"我的理想{a},我的行动{b},我的爱好{b}"

字符串输入

# input输入,括号中可以填入提示语句
name = input("请输入您的姓名:")
age = input("请输入您的年龄:")
print(f"我的名字:{name},我今年{age}岁")
# input需要注意的事项, input进来的是字符串
n = input("请输入一个数字:")
n = int(n)
print(f"数字{n}的立方是{n**3}")

# 列表(list) 元祖(tuple) 集合(set) 字典(dict)
# int
# float
# str
# 多个数据进行组合,组合形式不同,会形成不同的数据类型

列表

# 列表(list) []
# 1. 包含多个数据,数据类型最好相同,用,隔开
a = ["张三", "李四", "王五"]
# 2. 有序的, 可以通过下标索引(跟字符串索引完全相同)
a[1]
# 3. 可以修改列表中的元素
a[1] = "赵六"
a
# 4. 特殊情况,可以只有一个元素或为空
b = ["土豪"] # 单人间 
b
# b[0]
# c = [] # 没住人
# c[0] # 报错,喊不出来

元祖

# 元祖(tuple) () 
# 1. 包含多个数据,数据类型最好相同,用,隔开
a = (1, 2, 3)
# 2. 有序的, 可以通过下标索引(跟列表索引完全相同)
a[1]
# 3. 不可以修改列表中的元素
# a[1] = 4 # 报错
# 4. 特殊情况,可以只有一个元素或为空
b = ("土豪",) # 只有一个元素时,也要加, 
b # 宿舍
b[0] # 土豪
c = () # 没住人

集合

# 集合 set  {}
# 1. 包含多个数据,数据类型最好相同,用,隔开
a = {"王五", "李四", "张三"}
# 2. 无序,只能描述包含几个元素,包含谁,不能用下标索引
# a[0] 报错
# 3. 特殊情况,可以只有一个元素或为空
# b = {"王五"}
b = set() # 不能直接用花括号
# 4. 如果有重复元素,会删除重复元素
c  = {1,3,8,3,1,1,1,5,8,3,8} # 数字并不一定会从小到大排列
c

字典

# 字典 dict  {k:v} {key:value} {键:值} 
# 1. 包含多个键值对,用,分割
d = {"name":"卢炎", "age":18}
# 2. 有序的,但不能用下标去索引, 可以用键去索引
d['name']
# 3. 可修改
d['age'] = 19
# 4. 空字典
d = {}

遍历列表

# 遍历列表
a = ["张三", "李四", "王五"]
for i in a:
    print(i, end=" ")

遍历元祖

# 遍历元祖
a = ("张三", "李四", "王五")
for i in a:
    print(i, end=" ")

遍历集合

# 遍历集合
a = {"李四", "张三", "王五"}
for i in a:
    print(i, end=" ")

遍历字典

# 遍历字典
d = {"name":"卢炎", "age":18}
for i in d: # 默认只能打印键
    print(i,end=" ")
# 遍历字典 # 遍历所有的值
d = {"name":"卢炎", "age":18}
for i in d.values(): 
    print(i,end=" ")
# 遍历字典 # 同时遍历键和值
d = {"name":"卢炎", "age":18}
for i in d.items(): 
    print(i,end=" ")
# 遍历字典 # 同时遍历键和值, 元祖分别赋值给两个变量
d = {"name":"卢炎", "age":18}
for k,v in d.items(): 
    print(k,v)

 

留言

给我留言