day03_顺丰快递分拣小程序

目录

  • 一、又见str
    • 1.1 字符串定义
    • 1.2 字符串常用操作
      • 1.2.1 str.center(width[, fillchar])
      • 1.2.2 str.count(sub, start= 0,end=len(string))
      • 1.2.3 str.encode(encoding='UTF-8',errors='strict')
      • 1.2.4 str.endswith(suffix[, start[, end]])
      • 1.2.5 str.find(str, beg=0, end=len(string))
      • 1.2.6 str.isdigit()
      • 1.2.7 str.join(sequence)
      • 1.2.8 str.replace(old, new , max)
      • 1.2.9 str.split(str="", num=string.count(str))
      • 1.2.10 str.startswith(substr, beg=0,end=len(string))
      • 1.2.11 str.strip([chars])
  • 二、又见list
    • 2.1 增加
    • 2.2 删除
      • 2.2.1 del删除
      • 2.2.2 pop删除
      • 2.2.3 remove删除
      • 2.2.4 clear 清空
    • 2.3 修改
    • 2.4 查看
    • 2.5 切片
    • 2.6 排序&反转
    • 2.7 循环列表-打印索引
    • 2.8 练习:班级分组⼩程序
  • 三、又见dict
    • 3.1 增加
    • 3.2 删除
    • 3.3 修改
    • 3.4 查看
    • 3.5 循环
    • 3.6 求长度
    • 3.7 练习
  • 四、补充:集合(set)
    • 4.1 添加操作
    • 4.2 删除操作
    • 4.3 运算符
  • 四、二进制运算
    • 4.1 二进制与十进制的转换
  • 五、字符编码
    • 5.1 ASCII编码
    • 5.2 计算机容量单位
    • 5.3 GBK&GB2312
    • 5.4 Unicode
    • 5.5 UTF-8
  • 六、十六进制
  • 七、快递分拣小程序
    • 练习
    • 股票查询

一、又见str

1.1 字符串定义

字符串是⼀个有序的字符的集合,⽤于在计算机⾥存储和表示⽂本信息

s = "Hello, my name is Alex,golden king."

可进⾏切⽚操作

>>> s
'Hello, my name is Alex,golden king.'
>>> s[3:6] # 顾头不顾尾
'lo,'
>>> s[1:5]
'ello'
>>> s[0:5]
'Hello'
>>>
>>> s[3:10]
'lo, my '
>>>

不可变,字符串是不可变的,不能像列表⼀样修改其中某个元素,所有对字符串的修改操作其实都是相当于⽣成了⼀份新数据。

1.2 字符串常用操作

1.2.1 str.center(width[, fillchar])

Python字符串center()方法以字符串宽度(width)为中心。使用指定的填充字符(fillchar)填充完成。默认填充字符(fillchar)是一个空格。
在这里插入图片描述

1.2.2 str.count(sub, start= 0,end=len(string))

count() 方法用于统计字符串里某个字符或子字符串出现的次数。可选参数为在字符串搜索的开始与结束位置。

  • sub – 搜索的子字符串
  • start – 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
  • end --字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
    在这里插入图片描述

1.2.3 str.encode(encoding=‘UTF-8’,errors=‘strict’)

encode() 方法以 encoding 指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案,默认为 ‘strict’,意为编码错误引起一个UnicodeError。 其他可能的值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过codecs.register_error() 注册的任何值。
在这里插入图片描述

1.2.4 str.endswith(suffix[, start[, end]])

endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True,否则返回 False。可选参数 “start” 与 “end” 为检索字符串的开始与结束位置。suffix – 该参数可以是一个字符串或者是一个元素。

在这里插入图片描述

1.2.5 str.find(str, beg=0, end=len(string))

find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始,默认为0) 和 end(结束,默认字符串的长度) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。

>>>info = 'abca'
>>> print(info.find('a'))      # 从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
0
>>> print(info.find('a', 1))   # 从下标1开始,查找在字符串里第一个出现的子串:返回结果3
3
>>> print(info.find('3'))      # 查找不到返回-1
-1
>>>

1.2.6 str.isdigit()

isdigit() 方法检测字符串是否只由数字组成。如果字符串只包含数字则返回 True 否则返回 False。(即不接受其他一切非 [0-9] 元素)

>>> import sys
>>> sys.version
'3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)]'
>>> '777'.isdigit()
True
>>> '33d'.isdigit()
False
>>> '33在'.isdigit()
False
>>> '-23'.isdigit()
False
>>> '0.32'.isdigit()
False
>>> (2>3).isdigit() #入参类型不合法
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: 'bool' object has no attribute 'isdigit'

1.2.7 str.join(sequence)

join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

s1 = "-"
s2 = ""
seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
print (s1.join( seq ))  # r-u-n-o-o-b
print (s2.join( seq ))  # runoob

1.2.8 str.replace(old, new , max)

replace()方法是把字符串中的old(旧子字符串)替换成new(新子字符串),如果指定第三个参数max,则替换次数不超过max次(将旧的字符串用新的字符串替换不超过max次),默认全部替换。
(1)当不将max参数传入时,默认将所有old字符或者字符串替换为new字符或者字符串;
(2)当我们将max参数传入后,则将旧字符串替换为新字符串不超过max次,多余的则不进行替换。

str = "www.linuxidc.com"print ("Linux公社:", str)print ("Linux公社:", str.replace("linuxidc.com", "linuxidc.net"))str = "www.linuxmi.com linuxmi linuxmi"print (str.replace("mi", "idc", 2))

在这里插入图片描述

1.2.9 str.split(str=“”, num=string.count(str))

  1. str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
  2. num – 分割次数。默认为 -1, 即分隔所有。
str = "this is string example....wow!!!"
print (str.split( ))       # 以空格为分隔符  ['this', 'is', 'string', 'example....wow!!!']
print (str.split('i',1))   # 以 i 为分隔符  ['th', 's is string example....wow!!!']
print (str.split('i',2))   # 以 i 为分隔符  ['th', 's ', 's string example....wow!!!']
print (str.split('w'))     # 以 w 为分隔符  ['this is string example....', 'o', '!!!']txt = "Google#Runoob#Taobao#Facebook"
# 第二个参数为 1,返回两个参数列表
x = txt.split("#", 1)
print(x)   # ['Google', 'Runoob#Taobao#Facebook']

1.2.10 str.startswith(substr, beg=0,end=len(string))

startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。

  • str – 检测的字符串。
  • substr – 指定的子字符串。
  • strbeg – 可选参数用于设置字符串检测的起始位置。
  • strend – 可选参数用于设置字符串检测的结束位置。
str = "this is string example....wow!!!"
print (str.startswith( 'this' ))   # 字符串是否以 this 开头  True
print (str.startswith( 'string', 8 ))  # 从第九个字符开始的字符串是否以 string 开头 True
print (str.startswith( 'this', 2, 4 )) # 从第2个字符开始到第四个字符结束的字符串是否以 this 开头 False

1.2.11 str.strip([chars])

strip() 方法用于移除字符串头尾指定的字符(默认为空格)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

str = "*****this is **string** example....wow!!!*****"
print (str.strip( '*' ))  # 指定字符串 *    输出:this is **string** example....wow!!!str = "123abcrunoob321"
print (str.strip( '12' ))  # 字符序列为 12    输出:3abcrunoob3

只要头尾包含有指定字符序列中的字符就删除

二、又见list

[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表⼀个元素,可修改指定索引位置对应的值,可变

2.1 增加

追加,数据会追加到尾部

>>> names['alex', 'jack']
>>> names.append("rain")
>>> names.append("eva")
>>>
>>> names['alex', 'jack', 'rain', 'eva']

插⼊,可插⼊任何位置

>>> names.insert(2,"⿊姑娘")
>>> names['alex', 'jack', '⿊姑娘', 'rain', 'eva']

合并,可以把另⼀外列表的值合并进来

>>> n2 = ["狗蛋","绿⽑","鸡头"]
>>> names=['alex', 'jack', '⿊姑娘', 'rain', 'eva']
>>> names.extend(n2)
>>> names['alex', 'jack', '⿊姑娘', 'rain', 'eva', '狗蛋', '绿⽑', '鸡头']

列表嵌套

>>> names.insert(2,[1,2,3])
>>> names ['alex', 'jack', [1, 2, 3], '⿊姑娘', 'rain', 'eva', '狗蛋', '绿⽑', '鸡头']
>>> names[2][1]
>>> 2

2.2 删除

2.2.1 del删除

>>> names
['alex', 'jack', [1, 2, 3], '⿊姑娘', 'rain', 'eva', '狗蛋', '绿⽑', '鸡头']
>>> del names[2]
>>> names
['alex', 'jack', '⿊姑娘', 'rain', 'eva', '狗蛋', '绿⽑', '鸡头']

2.2.2 pop删除

>>> names
['alex', 'jack', '⿊姑娘', 'rain', 'eva', '狗蛋', '绿⽑', '鸡头']
>>> names.pop() #默认删除最后⼀个元素并返回被删除的值
'鸡头'
>>> names
['alex', 'jack', '⿊姑娘', 'rain', 'eva', '狗蛋', '绿⽑']
>>> help(names.pop)
>>> names.pop(1) #删除指定元素
'jack'

2.2.3 remove删除

>>> names
['alex', 'jack', '⿊姑娘', 'rain', 'eva', '狗蛋', '绿⽑', '鸡头', 'eva']
>>> names.remove("eva") # 删除第⼀个找到的eva值
>>> names
['alex', 'jack', '⿊姑娘', 'rain', '狗蛋', '绿⽑', '鸡头', 'eva']

2.2.4 clear 清空

>>> n2
['狗蛋', '绿⽑', '鸡头']
>>> n2.clear()
>>> n2
[]

2.3 修改

>>> names
['alex', '⿊姑娘', 'rain', 'eva', '狗蛋', '绿⽑']
>>> names[0] = "⾦⻆⼤王"
>>> names[-1] = "银⻆⼤王"
>>> names
['⾦⻆⼤王', '⿊姑娘', 'rain', 'eva', '狗蛋', '银⻆⼤王']

2.4 查看

>>> names
['⾦⻆⼤王', '⿊姑娘', 'rain', 'eva', '狗蛋', '银⻆⼤王', 'eva']
>>>
>>> names.index("eva") #返回从左开始匹配到的第⼀个eva的索引
3
>>> names.count("eva") #返回eva的个数
2

2.5 切片

注意:切⽚的特性是顾头不顾尾,即start的元素会被包含,end-1是实际取出来的值names[start : end]

>>> names
['⾦⻆⼤王', '⿊姑娘', 'rain', 'eva', '狗蛋', '银⻆⼤王', 'eva']
>>> names[1:4] #不包含下标4的元素
['⿊姑娘', 'rain', 'eva']

省略写:

>>> n[0:4] = n[:4] #  省略第⼀个索引
>>> n[4:] # 省略最后⼀个索引

倒着切:

>>> names
['⾦⻆⼤王', '⿊姑娘', 'rain', 'eva', '狗蛋', '银⻆⼤王', 'eva']
>>> names[-5:-1] 
['rain', 'eva', '狗蛋', '银⻆⼤王']

但其实我想要的是后5个,只打印了4个,’eva’这个值没出来,为什么,因为上⾯提到的顾头不顾尾可是想把后5个全取出来如何做呢?

>>> names[-5:]
['rain', 'eva', '狗蛋', '银⻆⼤王', 'eva']

跳着切(设置步长):names[start:end:step] step 默认是1

>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[0:7:2] #设置步⻓为2 
[0, 2, 4, 6]
>>> a[::3] #按步⻓3打印列表,第1个:是省略掉的start:end
[0, 3, 6, 9]

2.6 排序&反转

排序

>>> a = [83,4,2,4,6,19,33,21]
>>> a.sort()
>>> a 
[2, 4, 4, 6, 19, 21, 33, 83]

反转

>>> names
['#', '4', '@', 'eva', 'rain', '狗蛋', '⾦⻆⼤王', '银⻆⼤王', '⿊姑娘']
>>> names.reverse()
>>> names
['⿊姑娘', '银⻆⼤王', '⾦⻆⼤王', '狗蛋', 'rain', 'eva', '@', '4', '#']

2.7 循环列表-打印索引

输出一组,自动换行

>>> for i in names: 
... print(i)
...
⿊姑娘
银⻆⼤王
⾦⻆⼤王
狗蛋
rain
eva
@4#
names=['#', '4', '@', 'eva', 'rain', '狗蛋', '⾦⻆⼤王', '银⻆⼤王', '⿊姑娘']
for i in enumerate(names):print(i)for j in enumerate(names):print(j[0],j[1])

在这里插入图片描述

2.8 练习:班级分组⼩程序

你们班有55⼈,每个⼈的姓名&考试成绩存在⼀个⼤列表⾥,格式如下:

stu_list = [["Alex",100],["银⻆",79],["⿊姑娘",66],....
]

需求:现要求按考试成绩⾼低将学员们分成5组,全存在⼀个新的⼤列表⾥, 5组分别是90-100, 80-89, 70-79,60-69, 0-59
最终的数据格式如下:

new_stu_list = [[["Alex",100],["Rain",91],],[["银⻆",79],["Jack",78],], ........
]

数据:

stu_list = [['李渊', 82], ['李世⺠', 7], ['侯君集', 5], ['李靖', 58], ['魏征',
41], ['房⽞龄', 64], ['杜如晦', 65], ['柴绍', 94], ['程知节', 45], ['尉迟恭', 94],
['秦琼', 54], ['⻓孙⽆忌', 85], ['李存恭', 98], ['封德彝', 16], ['段志⽞', 44], ['刘
弘基', 18], ['徐世绩', 86], ['李治', 19], ['武则天', 39], ['太平公主', 57], ['⻙后',
76], ['李隆基', 95], ['杨⽟环', 33], ['王勃', 49], ['陈⼦昂', 91], ['卢照邻', 70],
['杨炯', 81], ['王之涣', 82], ['安禄⼭', 18], ['史思明', 9], ['张巡', 15], ['雷万
春', 72], ['李⽩', 61], ['⾼⼒⼠', 58], ['杜甫', 27], ['⽩居易', 5], ['王维', 14],
['孟浩然', 32], ['杜牧', 95], ['李商隐', 34], ['郭⼦仪', 53], ['张易之', 39], ['张昌
宗', 61], ['来俊⾂', 8], ['杨国忠', 84], ['李林甫', 95], ['⾼适', 100], ['王昌龄',
40], ['孙思邈', 46], ['⽞奘', 84], ['鉴真', 90], ['⾼骈', 85], ['狄仁杰', 62], ['⻩ 巢', 79], ['王仙芝', 16], ['⽂成公主', 13], ['松赞⼲布', 47], ['薛涛', 79], ['⻥⽞
机', 16], ['贺知章', 20], ['李泌', 17], ['韩愈', 100], ['柳宗元', 88], ['上官婉⼉ 五
代⼗国:朱温', 55], ['刘仁恭', 6], ['丁会', 26], ['李克⽤', 39], ['李存勖', 11],
['葛从周', 25], ['王建', 13], ['刘知远', 95], ['⽯敬瑭', 63], ['郭威', 28], ['柴 荣', 50], ['孟昶', 17], ['荆浩', 84], ['刘彟', 18], ['张及之', 45], ['杜宇', 73],
['⾼季兴', 39], ['喻皓', 50], ['历真', 70], ['李茂贞', 6], ['朱友珪', 7], ['朱友贞',
11], ['刘守光', 2]]

代码实现:

stu_list = [['李渊', 82], ['李世⺠', 7], ['侯君集', 5], ['李靖', 58], ['魏征',41],['房⽞龄', 64], ['杜如晦', 65], ['柴绍', 94], ['程知节', 45], ['尉迟恭', 94],['秦琼', 54], ['⻓孙⽆忌', 85], ['李存恭', 98], ['封德彝', 16], ['段志⽞', 44],['刘弘基', 18], ['徐世绩', 86], ['李治', 19], ['武则天', 39], ['太平公主', 57], ['⻙后',76],['李隆基', 95], ['杨⽟环', 33], ['王勃', 49], ['陈⼦昂', 91], ['卢照邻', 70],['杨炯', 81], ['王之涣', 82], ['安禄⼭', 18], ['史思明', 9], ['张巡', 15], ['雷万春', 72], ['李⽩', 61],['⾼⼒⼠', 58], ['杜甫', 27], ['⽩居易', 5], ['王维', 14],['孟浩然', 32], ['杜牧', 95], ['李商隐', 34], ['郭⼦仪', 53], ['张易之', 39], ['张昌宗', 61],['来俊⾂', 8], ['杨国忠', 84], ['李林甫', 95], ['⾼适', 100], ['王昌龄',40], ['孙思邈', 46], ['⽞奘', 84],['鉴真', 90], ['⾼骈', 85], ['狄仁杰', 62], ['⻩ 巢', 79], ['王仙芝', 16], ['⽂成公主', 13], ['松赞⼲布', 47], ['薛涛', 79],['⻥⽞机', 16], ['贺知章', 20], ['李泌', 17], ['韩愈', 100], ['柳宗元', 88], ['上官婉⼉ 五代⼗国:朱温', 55], ['刘仁恭', 6], ['丁会', 26],['李克⽤', 39], ['李存勖', 11],['葛从周', 25], ['王建', 13], ['刘知远', 95], ['⽯敬瑭', 63], ['郭威', 28],['柴 荣', 50], ['孟昶', 17], ['荆浩', 84], ['刘彟', 18], ['张及之', 45], ['杜宇', 73],['⾼季兴', 39], ['喻皓', 50],['历真', 70], ['李茂贞', 6], ['朱友珪', 7], ['朱友贞',11], ['刘守光', 2]]new_stu_list = [[],[],[],[],[]
]for i in stu_list:if i[1] >= 90:new_stu_list[0].append(i)elif i[1] >= 80:new_stu_list[1].append(i)elif i[1] >= 70:new_stu_list[2].append(i)elif i[1] >= 60:new_stu_list[3].append(i)else:new_stu_list[4].append(i)for j in new_stu_list:print(j)

在这里插入图片描述

三、又见dict

字典可以查询数据⼜快、操作⼜⽅便,是⽇后开发中必备神器。
{key1:value1, key2:value2} 冒号左边是key, 右边是value

  1. key-value结构
  2. key必须为不可变数据类型(字符串、数字)、必须唯⼀
  3. 可存放任意多个value、可修改、可以不唯⼀
  4. ⽆序, ordered_dict
  5. 查询速度快,且不受dict的⼤⼩影响,⾄于为何快?我们学完hash再解释。

3.1 增加

mes = {"alex": [23, "CEO", 66000],"⿊姑娘": [24, "⾏政", 4000],
}
print(mes)
# 新增k
mes["佩奇"] = [26, "讲师", 40000]print(mes)

在这里插入图片描述

3.2 删除

names.pop("alex") # 删除指定key
del names["oldboy"] # 删除指定key,同pop⽅法
names.clear() # 清空dict

3.3 修改

dic['key'] = 'new_value' # 如果key在字典中存在,'new_value'将会替代原来的value值;

3.4 查看

dic = {"alex": [23, "CEO", 66000],"⿊姑娘": [24, "⾏政", 4000],"佩奇": [26, "讲师", 40000],
}print(dic)  # {'alex': [23, 'CEO', 66000], '⿊姑娘': [24, '⾏政', 4000], '佩奇': [26, '讲师', 40000]}
print(dic['佩奇'])  # 返回字典中key对应的值,若key不存在字典中,则报错;  [26, '讲师', 40000]

在这里插入图片描述

dict.get(key, default = None)

  1. key: 要设置默认值的Key
  2. default: 要返回key的值,可以是任何值,如整形、字符串、列表、字典等
  3. return: 如果字典中key本来有值,那么返回的是字典中Key所对应的值,如果没有,那么返回“default”中的值。
dic = {"alex": [23, "CEO", 66000],"⿊姑娘": [24, "⾏政", 4000],"佩奇": [26, "讲师", 40000],
}print(dic.get("alex"))  # [23, 'CEO', 66000]print(dic.get("alex1"))  # Noneprint(dic.get("alex1",0))  # 0
dic = {"alex": [23, "CEO", 66000],"⿊姑娘": [24, "⾏政", 4000],"佩奇": [26, "讲师", 40000],
}print("alex" in dic)  # 若存在则返回True,没有则返回False
print(dic.keys())  # 返回⼀个包含字典所有KEY的列表;
print(dic.values())  # 返回⼀个包含字典所有values的列表;
print(dic.items())  # 返回⼀个包含字典所有(键,值)元组的列表;for k,v in dic.items():print(k,v)

在这里插入图片描述

3.5 循环

info = {"name":"路⻜学城","mission": "帮⼀千万极客⾼效学编程","website": "https://luffycity.com"
}
for k in info:print(k,info[k])

在这里插入图片描述

3.6 求长度

info = {"name":"路⻜学城","mission": "帮⼀千万极客⾼效学编程","website": "https://luffycity.com"
}
print(len(info))  # 3

3.7 练习

1、⽣成⼀个包含100个key的字典,每个value的值不能⼀样

dic={x:x*2 for x in range(100)
}
print(dic)

在这里插入图片描述
2、{‘k0’: 0, ‘k1’: 1, ‘k2’: 2, ‘k3’: 3, ‘k4’: 4, ‘k5’: 5, ‘k6’: 6, ‘k7’: 7, ‘k8’: 8, ‘k9’: 9} 请把这个dict中key⼤于5的 值value打印出来。

dic={'k0': 0, 'k1': 1, 'k2': 2, 'k4': 4, 'k5': 5,'k6': 6,'k7': 7,'k8': 8,'k9': 9}for k in dic:if dic[k] > 5:print(k,dic[k])

在这里插入图片描述
3、把题2中value是偶数的统一改成-1

dic={'k0': 0, 'k1': 1, 'k2': 2, 'k4': 4, 'k5': 5,'k6': 6,'k7': 7,'k8': 8,'k9': 9}for k in dic:if dic[k] % 2 == 0:dic[k] = -1
print(dic)

在这里插入图片描述
4、请设计⼀个dict, 存储你们公司每个⼈的信息, 信息包含⾄少姓名、年龄、电话、职位、⼯资,并提供⼀个简单的查找接⼝,⽤户按你的要求输⼊要查找的⼈,你的程序把查到的信息打印出来

info={'张三0':{'age':20,'电话':5879960,'职位':'员工0','工资':'5000'},'张三1':{'age':21,'电话':5879961,'职位':'员工1','工资':'5001'},'张三2':{'age':22,'电话':5879962,'职位':'员工2','工资':'5002'},'张三3':{'age':23,'电话':5879963,'职位':'员工3','工资':'5003'},'张三4':{'age':24,'电话':5879964,'职位':'员工4','工资':'5004'},'张三5':{'age':25,'电话':5879965,'职位':'员工5','工资':'5005'},'张三6':{'age':26,'电话':5879966,'职位':'员工6','工资':'5006'},'张三7':{'age':27,'电话':5879967,'职位':'员工7','工资':'5007'},'张三8':{'age':28,'电话':5879968,'职位':'员工8','工资':'5008'},'张三9':{'age':29,'电话':5879969,'职位':'员工9','工资':'5009'},
}
search_name = input('>>>请输入要查找人的姓名:')
if search_name in info:print(info[search_name])
else:print('查无此人!!!')

在这里插入图片描述

四、补充:集合(set)

集合(set)是一个无序的不重复元素序列。创建集合的语法是以大括号包住集合元素,或将集合元素以列表的形式传入内置函数set()。

Winners = {'Company A','Company B'}
print(type(Winners))
print(Winners)Losers = set(['Company C ' , ' Company D '])
print(type(Losers))
print(Losers)

在这里插入图片描述

  • 集合没有顺序关系,因此不支持索引。
  • 空集合只能使用set()函数创建,不能用大括号,因为没包含任何元素的大括号{}表 示的是一个空的字典。
  • 如果要利用字符串中的个别字符或列表中的元素来创建集合,同样必须使用set()函 数而不能用大括号;若以大括号包住字符串,Python仍会创建一个集合,只不过整个字符串会被当成一个单独的元素。
a=set('Quant')
print(a)  # {'n', 'u', 't', 'Q', 'a'}a={'Quant'}
print(a)  # {'Quant'}
  • 集合没有顺序关系,且不能重复.我们可以用比较运算符“==”来判断两个集合是否相等。

4.1 添加操作

add(x)可将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。

thisSet = set(("Google", "Runoob", "Taobao"))
thisSet.add("Facebook")

update( x )可以添加元素,且参数可以是列表,元组,字典等。

thisSet = set(("Google", "Runoob", "Taobao"))
thisSet.update({1,3})
thisSet.update([1,4],[5,6])  

4.2 删除操作

remove(x)将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。

thisSet = set(("Google", "Runoob", "Taobao"))
thisSet.remove("Taobao")

discard(x)移除集合中的元素,且如果元素不存在,不会发生错误。

thisSet = set(("Google", "Runoob", "Taobao"))
thisSet.discard("Google")
thisSet.discard("Facebook")

4.3 运算符

集合常用于计算两个组合的关系。

项目标识含义
交集& 或 intersection两集合共有的部分
并集"竖杠"或 union两集合相加(重复内容只展示一次)
差集- 或 difference属于A不属于B的部分
交叉补集^ 或symmetric_difference返回两个集合中不重复的元素集合。
a = set('abracadabra')
b = set('alacazam')
c=a - b # 集合a中包含而集合b中不包含的元素
d=a | b # 集合a或b中包含的所有元素
e=a & b # 集合a和b中都包含了的元素
f=a ^ b # 不同时包含于a和b的元素

四、二进制运算

⼆进制只有0和1两个数,想表达更⼤的值 就往左补位,多个0101010就可以表达更⼤的值 啦。 ⼆进制是逢2进1, 跟我们⽤的⼗进制逢10进1⼀个原理。 于是科学家们,就⽤2进制做为计算机可识别的最底层语⾔啦。

4.1 二进制与十进制的转换

在这里插入图片描述

五、字符编码

在这里插入图片描述

5.1 ASCII编码

由于计算机是美国⼈发明的,因此,最早只有127个字⺟被编码到计算机⾥,也就是⼤⼩写英⽂字⺟、数字和⼀些符号,这个编码表被称为 ASCII 编码,⽐如⼤写字⺟ A 的编码是 65 ,⼩写字⺟ z 的编码是 122 。后128个称为扩展ASCII码。

⼀个空格对应的数字是0 翻译成⼆进制就是0(注意字符’0’和整数0是不同的)
⼀个对勾√对应的数字是251 翻译成⼆进制就是11111011

假如我们要打印两个空格⼀个对勾 写作⼆进制就应该是 0011111011, 但是问题来了,我们怎么知道从哪⼉到哪⼉是⼀个字符呢?

正是由于这些字符串⻓的⻓,短的短,写在⼀起让我们难以分清每⼀个字符的起⽌位置,所以聪明的⼈类就想出了⼀个解决办法,既然⼀共就这255个字符,那最⻓的也不过是11111111⼋位,不如我们就把所有的⼆进制都转换成8位的,不⾜的⽤0来替换。

这样⼀来,刚刚的两个空格⼀个对勾就写作000000000000000011111011,读取的时候只要每次读8个字符就能知道每个字符的⼆进制值啦。

5.2 计算机容量单位

在这⾥,每⼀位0或者1所占的空间单位为bit(⽐特),这是计算机中最⼩的表示;单位每8个bit组成⼀个bytes(字节),这是计算机中最⼩的存储单位。
在这里插入图片描述

5.3 GBK&GB2312

英⽂问题是解决了, 我们中⽂如何显示呢? 美国佬设计ASSCII码的时候应该是没考虑中国⼈有⼀天也能⽤上电脑, 所以根本没考虑中⽂的问题,上世界80年代,电脑进⼊中国,把砖家们难倒了,妈的你个⼀ASSCII只能存256个字符,我常⽤汉字就⼏千个,怎么玩???勒紧裤腰带还苏联贷款的时候我们都挺过来啦,这点⼩事难不到我们, 既然美帝的ASCII不⽀持中⽂,那我们⾃⼰搞张编码表不就⾏了,于是我们1980年设计出了GB2312编码表,⼀共存了6763个汉字。

但我们写字竟然会出现中英混杂的情况,⽐如“我是路⻜学城,我的英⽂名叫Luffycity.”,所以中国砖家们⼜通过神奇⼿段兼容了ASSCII, 即遇到中⽂⽤2个字节,遇到英⽂直接⽤ASCII的编码。

如果2个字节连在⼀起,且每个字节的第1位(也就是相当于128的那个2进制位)如果是1,就代表这是个中⽂,这个⾸位是128的字节被称为⾼字节。 也就是2个⾼字节连在⼀起,必然就是⼀个中⽂。 你怎么如此笃定?因为0-127已经表示了英⽂的绝⼤部分字符,128-255是ASCII的扩展表,表示的都是极特殊的字符,⼀般没什么⽤。

1995年, 砖家们⼜升级了gb2312, 加⼊更多字符,连什么藏语、维吾尔语、⽇语、韩语、蒙古语什么的统统都包含进去了,国家统⼀亚洲的ᰀ⼼从这些基础⼯作中就可⻅⼀斑哈。 这个编码叫GBK,⼀直到现在,我们的windows电脑中⽂版本的编码就是GBK。

5.4 Unicode

Unicode把所有语⾔(英文,中文,非英文等)都统⼀到⼀套编码⾥,这样就不会再有乱码问题了。Unicode 2-4字节 已经收录136690个字符,并还在⼀直不断扩张中…

  1. ⽀持全球所有语⾔
  2. 可以跟各种语⾔的编码⾃由转换,也就是说,即使你gbk编码的⽂字 ,想转成unicode很容易。

5.5 UTF-8

为了解决存储和⽹络传输的问题,出现了Unicode Transformation Format,学术名UTF,即:对unicode字符进⾏转换,以便于在存储和⽹络传输时可以节省空间。UTF 是为unicode编码 设计 的⼀种 在存储 和传输时节省空间的编码⽅案。

  1. UTF-8: 使⽤1、2、3、4个字节表示所有字符;优先使⽤1个字节、⽆法满⾜则使增加⼀个字节,最多4个字节。英⽂占1个字节、欧洲语系占2个、东亚占3个(中文包括在内),其它及特殊字符占4个
  2. UTF-16: 使⽤2、4个字节表示所有字符;优先使⽤2个字节,否则使⽤4个字节表示。
  3. UTF-32: 使⽤4个字节表示所有字符;
    在这里插入图片描述

六、十六进制

16进制,英⽂名称Hexadecimal(简写Hex), 在数学中是⼀种逢16进1的进位制。⼀般⽤数字0到9和字⺟A到F(或a到f)表示,其中:A到F表示10~15,这些称作⼗六进制数字,⽐如⼗进制13⽤16进制表示是D, 28⽤16进制是1C。16+12=28

0 1 2 3 4 5 6 7 8 9 A B C D E F ⼗六进制
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ⼗进制

在C语⾔、C++、Shell、Python、Java语⾔及其他相近的语⾔使⽤字⾸“0x”来标示16进制,例如“0x5A3”代表十进制的1443。

十进制与十六进制转换

七、快递分拣小程序

将数据源⾥的快递信息进⾏分拣,最终⽣成的数据格式如下:
在这里插入图片描述
思路:

  1. 引入数据源
  2. 利用’省’ 和 '市’搜索(index)并利用字典分类
  3. 打印分类

思路一:手动罗列,遍历耗时
在这里插入图片描述

在这里插入图片描述

代码实现:省市关键字切割

Data_list = [['王*龙', '北京市海淀区苏州街大恒科技大厦南座4层'],['庞*飞', '北京市昌平区汇德商厦四楼403'],['顾*锐', '江苏省扬州市三垛镇工业集中区扬州市立华畜禽有限公司'],['李*连', '北京市昌平区立汤路北七家威尼斯花园2区2-3'],['籍*旭', '北京市房山区良乡鸿顺园西区20号楼3单元601'],['韩*嵩', '北京市昌平区立汤路威尼斯花园2区2-3'],['曹*', '北京市朝阳区东三环北路28号博瑞大厦B座'],['贺*', '上海市徐汇区古美路1515号19号楼1101室'],['谷*成', '浙江省杭州市城厢街道 下湘湖路1号'],['王*玉', '上海市嘉定区南翔镇'],['刘*海', '北京市海淀区玉渊潭南路3号水科院万方城科技楼'],['杨*娟', '安徽省合肥市清源路中铁国际城和畅园'],['谢*桥', '北京市海淀区丰秀中路3号院9号楼北京数码大方科技股份有限公司'],['王*杰', '河北省邯郸市后仓街39号'],['刘*明', '河北省唐山市卫国北路305张家口银行'],['王*凡', '天津市南开区卫津路92号天津大学鹏翔公寓'],['郭*军', '上海市浦东新区郭守敬路498号浦东软件园16号3楼'],['宋*东', '北京市丰台区万寿路南口288号华信大厦'],['江*', '安徽省阜阳市临海尚城B区2单元,19号楼'],['吴*', '河南省郑州市经三路与东风路交汇处金城国际广场6#东单元2403'],['祁*雄', '湖北省武汉市洪山区白沙洲大道武汉科技大学北苑'],['吕*', '上海市嘉定区上海市嘉定区嘉罗公路2019号'],['黄*', '湖北省武汉市国家光电实验室'],['常*旗', '山东省潍坊市林海生态博览园'],['陈*', '上海市虹口区吴淞路218号宝矿大厦2501A'],['郑*琳', '北京市丰台区西马金润家园2区10号楼11单元11-2-1'],['姚*峰', '江苏省无锡市江苏省无锡市滨湖区龙山龚巷213#'],['徐*', '浙江省杭州市余杭塘路515矩阵国际中心2号楼705'],['曹*翎', '江苏省苏州市科教新城太和丽都31-1604'],['齐*', '江苏省南京市天元东路228号莱茵量子国际'],['高*', '山西省太原市经济技术开发区龙盛街2号国药控股'],['刘*', '北京市海淀区中关村丹棱街中国电子大厦B座1608'],['陈*山', '安徽省六安市南港镇'],['赵*', '黑龙江省哈尔滨市锦山路5号,黑龙江省地质科学研究所'],['伍*', '安徽省芜湖市泉塘镇'],['白*潮', '上海市浦东新区康桥镇环桥路2585弄文怡苑一期27号楼301'],['苏*', '河南省郑州市登封路晨光社区14号院绿田野超市'],['王*', '陕西省西安市雁塔区雁翔路58号西安理工大学曲江校区'],['赵*龙', '河北省廊坊市燕郊经济开发区福成大酒店东福成行政中心三楼信息部'],['范*勇', '江苏省苏州市苏州市吴中区木渎镇胥口镇621号斯莱克精密设备股份有限公司'],['白*', '北京市东城区安定门外大街10号楼415'],['刘*', '北京市昌平区回龙观镇二拨子新村东区7号楼1单元402'],['钱*庭', '江苏省江苏省泰州市姜堰区南苑新村58号'],['刘*', '河南省洛阳市城关镇人民路21号'],['杨*凯', '湖北省武汉市中国地质大学北区1栋'],['王*', '上海市浦东新区环桥路1137弄秀怡苑31号楼302'],['夏*', '北京市朝阳区垂杨柳东里11号楼3单元402'],['张*宇', '北京市海淀区中关村南大街6号中电信息大厦1207'],['蔡*', '陕西省西安市凤城八路天朗御湖一号楼二单元(西门)'],['高*', '新疆乌鲁木齐市民主路99号建行大厦12楼审计室'],['孙*园', '陕西省西安市丈八沟街道科技五路8号数字大厦'],['王*亚', '北京市朝阳区华盛乐章b座1708'],['李*博', '山东省淄博市索镇花园小区5#2单元202室'],['侯*森', '北京市朝阳区北苑路潮驿178'],['胡*辉', '浙江省杭州市瑞立东方花城2-2-503'],['杨*平', '北京市昌平区沙河镇于辛庄村赋腾公寓'],['黄*', '浙江省杭州市衢江路耀江福村3单元602'],['李*', '上海市黄浦区黄浦区北京东路288弄66号甲,后门201室'],['邹*', '安徽省淮北市南坪镇黄沟村邹圩庄'],['刘*', '北京市昌平区沙河镇赋腾公寓E516'],['彭*', '北京市望京SOHOt3  40层'],['张*乾', '河南省周口市八一路人民路交叉口医药局家属楼'],['贺*梦', '北京市通州区永顺镇世纪星城92号楼二单元'],['冯*琴', '北京市海淀区金澳国际写字楼1115  中汇'],['邓*亮', '湖北省武汉市云林街台北一路58号'],['李*沙', '北京市昌平区城南街道北清路珠江摩尔国际大厦五号楼二单元906'],['徐*瑞', '上海市徐汇区古美路1595号宝石园27号楼2楼D区'],['梁*', '陕西省西安市电子二路18号(西安石油大学)'],['徐*', '浙江省衢州市西区广电大楼'],['雷*强', '河南省信阳市汪桥镇街道滨河花园A幢6208'],['张*亮', '天津市河西区郁江道17号陈塘科技328'],['陈*', '上海市浦东新区东方路1217号陆家嘴金融服务广场15楼'],['郭*', '北京市昌平区北七家镇东三旗365号'],['李*扬', '上海市浦东新区北蔡镇北艾路1500弄6号楼203'],['汝*明', '吉林省长春市长春光机所研究生部D栋'],['朱*懿', '上海市静安区陕西北路66号科恩国际中心1027室'],['刘*', '上海市浦东新区五莲路 锦河苑'],['任*荣', '陕西省西安市软件新城软件公寓'],['王*', '上海市闵行区莲花路2080弄50号C幢3楼'],['萌*', '北京市西城区金融街邮政集团公司'],['张*宾', '河南省郑州市文治路泰祥投资集团楼下新锐广告'],
]Data_dict = {}for i in Data_list:if "省" in i[1]:idx = i[1].index("省") + 1  # 获取xx省的下标识位置name_pro_city = i[1][0:idx]  # 获取分类信息(省份名单)else:idx = i[1].index("市") + 1  # 获取xx省的下标识位置name_pro_city = i[1][0:idx]  # 获取分类信息(省份名单)# 将分类信息添加到字典的key值,有的话直接添加values,没有新建keyif name_pro_city not in Data_dict:Data_dict[name_pro_city] = []  # 添加新key {'北京市': []}Data_dict[name_pro_city].append(i)else:Data_dict[name_pro_city].append(i)  # 直接添加
print(Data_dict)# 按照格式打印结果
print("{")
for i in Data_dict:print("\t"+i+":[")  # 四个空格+北京市:[for j in Data_dict[i]:print("\t\t"+str(j)+",")print('\t],')
print("}")

练习

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

股票查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需求2修改:
在这里插入图片描述
需求3修改:

正则表达:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26762.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PYTHON 顺丰快递分拣小程序-极简9行代码实现分拣

给定一组打乱的快递信息数据&#xff0c;将快递按省份进行分类&#xff0c;最终实现如下格式效果&#xff1a; 数据源如下&#xff1a; [[王*龙, 北京市海淀区苏州街大恒科技大厦南座4层],[庞*飞, 北京市昌平区汇德商厦四楼403],[顾*锐, 江苏省扬州市三垛镇工业集中区扬州市立…

python快递分拣小程

需求 &#xff1a; 分拣出同一省份的信息 格式 省份 : 名字 地址 ...... 完整 代码 noe_list [[王*龙, 北京市海淀区苏州街大恒科技大厦南座4层],[庞*飞, 北京市昌平区汇德商厦四楼403],[顾*锐, 江苏省扬州市三垛镇工业集中区扬州市立华畜禽有限公司],[王*飞, 上海市徐汇区上…

重磅!2020国家科学技术奖全名单公布!

来源&#xff1a;软科 2021年11月3日&#xff0c;2020年度国家科学技术奖励大会在人民大会堂正式召开。 备受关注的国家最高科学技术奖&#xff0c;授予了中国航空工业集团有限公司顾诵芬院士和清华大学王大中院士。国家最高科学技术奖自2000年正式设立&#xff0c;是中国科技…

谷歌又闹大乌龙!Jeff Dean参与的新模型竟搞错Hinton生日

【导读】最近&#xff0c;谷歌研究员发布了关于指令微调的最新工作&#xff01;然而却宣传图中出现了可笑的乌龙。 几个小时之前&#xff0c;谷歌大脑的研究员们非常开心地晒出了自己最新的研究成果&#xff1a; 「我们新开源的语言模型Flan-T5&#xff0c;在对1,800多种语言…

汽车电子的AI时刻

来源&#xff1a;《中国电子商情》 感谢Imagination汽车产品业务发展和市场总监陈竹女士、芯擎科技业务拓展经理邵楠女士、中汽中心工程院网联与线控底盘室主任郭蓬女士和国创中心电子电子电气部部长李秋霞女士对本文的贡献与支持&#xff0c;本文观点均来自上述四位行业人士对…

DriveGPT、车企订单背后,为什么毫末每年都能搞出新东西?

作者 | 祥威 编辑 | 德新 4月11日&#xff0c;毫末智行正式发布自动驾驶生成式大模型 DriveGPT&#xff0c;中文名 雪湖海若&#xff0c;可以提升自动驾驶认知能力&#xff0c;最终提升规控效率。 雪湖海若的核心&#xff0c;是将各种驾驶场景作为Token输入到模型中&…

ChatGPT火到汽车圈,毫末智行、集度纷纷进场

作者 | 白日梦想家 编辑 | 于婷 ChatGPT的火爆&#xff0c;已经席卷到了汽车领域。 众多相关企业宣布纷纷布局&#xff0c;车企也争相宣布将搭载类似产品。 2月初&#xff0c;百度宣布将在今年3月完成类似ChatGPT的项目“文心一言”的内部测试。据悉&#xff0c;该产品是基于…

MOSS 真的要来了吗?——ChatGPT

最近在网络上在疯传各种 ChatGPT 的新闻消息和视频&#xff0c;大家把 ChatGPT 传得神乎其神的&#xff0c;今天我们就来聊一聊最近爆火的 ChatGPT 究竟是什么来头。 ChatGPT 是什么 ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型&#xff0c;它能够通过…

四面八方WP

四面八方 四方门主东方青木看着四面八方涌过来的极客&#xff0c;非常震惊&#xff0c;转头便进入了祖祠中的地下室&#xff0c;发现这丫传自唐朝的密室还设计了英文密码。旁边的石头上&#xff08;附件中有拓本&#xff09;刻着密码和密文&#xff0c;大家快帮助门主解出密码…

【Python】用Python做个学生管理系统,可以用作毕业设计哟~(附原码)

准备工作 环境准备 Python 3.8Pycharm 2021.2 知识点 Python基础语法基本的数据类型与结构基本的逻辑控制语句实战小项目 代码流程 赋值 赋值 就是把等号左边的内容 用 等号右边的这个变量名字 接收 msg """******************************************…

《小时代2青木时代》 短评 与郭敬明的中立评价

到底是什么原因&#xff0c;让一部被骂得狗血的影片还这么卖座&#xff0c;昨天补了小时代1&#xff0c;今天接着看了小时代2。 这是一个最坏的时代&#xff0c;也是最好的时代。 下面网摘一条粉丝的评论和批评者的声音 我觉得小时代2很好看&#xff0c;比起第一部来真的有进步…

谈古论津丨天津杨柳青年画为何要用娃娃作主题?

一提天津三绝&#xff0c;很多人都知道是狗不理包子、十八街麻花和耳朵眼炸糕&#xff0c;其实杨柳青年画、泥人张、风筝魏也是天津三绝&#xff0c;只不过是民间艺术三绝。 而天津杨柳青、苏州桃花坞、四川绵竹、潍坊杨家埠是中国四大年画产地&#xff0c;其中杨柳青和桃花坞…

电视剧《一代枭雄》观后感

电视剧《一代枭雄》观后感 肺炎疫情期间自行在家隔离&#xff0c;追剧成为一个很好的选择。憋屈而单调的生活&#xff0c;精神层面总得需要营养来补充&#xff0c;不然这种长期隔离生活&#xff0c;会让人发疯的。笔者找到了孙红雷主演的这部电视剧《一代枭雄》&#xff0c;这部…

使用 Spring Boot Operator 部署 Spring Boot 到 Kubernetes

大家好&#xff0c;我是DD。 2022年了&#xff0c;你们开始用Kubernetes了吗&#xff1f;那么Spring Boot应用要如何部署到Kubernetes里呢&#xff1f;下面给大家转了一篇不错的深度好文&#xff0c;一起来学习一下吧&#xff01; 以下内容来源&#xff1a;https://qingmu.io/2…

曝光 兼职达人(深圳市青木网络科技)无耻、恶心

《兼职达人&#xff08;深圳市青木网络科技&#xff09;无耻、恶心》公司地点&#xff1a;学府路学府楼1楼相关人物&#xff1a; A:余鑫&#xff08;合伙人&#xff09;李帛仑&#xff08;老板&#xff09; B:安丹&#xff08;HR行政&#xff0c;此人恶心至极&#xff0c;现在…

NFT 推荐|史蒂夫·青木 NFT 作品集

像扔蛋糕一样向你袭来&#xff01; 一旦你拥有这个独家 NFT 系列&#xff0c;除了史蒂夫本人&#xff0c;没有人会比你更特别&#xff01;用史蒂夫的疯狂动物创作创造你自己的 metazoo&#xff0c;或者用多个史蒂夫化身填充你的 Aokiverse&#xff0c;甚至可以装备特殊运动鞋&a…

《恒盛策略》电商概念强势拉升,凯淳股份“20cm”涨停,青木股份等大涨

电商概念21日盘中强势拉升&#xff0c;截至发稿&#xff0c;凯淳股份“20cm”涨停&#xff0c;青木股份涨超14%&#xff0c;光云科技涨超10%&#xff0c;生意宝、若羽臣、联络互动等涨停&#xff0c;焦点科技、黑芝麻涨超8%&#xff0c;返利科技、跨境通、比依股份等涨超7%&…

我喜欢星期五因为我们那天有计算机课英文,高一英语作文范文4篇

优秀小学英语作文带翻译&#xff1a;生日 My birthday is on Sunday. My parents are going to have a birthday party at home. I invite my friends to come to the party. At the party. They give me many small presents. Such as cards, picture books, pens. They sing …

英语二-议论文写作词汇、话题、模板、范文参考

1. 词汇多样性 1. 表示因果关系 2. 表示转斩关系 3. 表示顺序关系 4. 表示递进关系 5. 表示对比关系 6. 表示总结关系 7. 连接论据的词 2. 高频考试话题 1. 有益身心的短语 2. 提高能力的短语 3. 写作模板 支持原创作文&#xff0c;如果不会&#xff0c;请牢记模板。 如果嫌…

关于计算机优点缺点的英语作文,关于网络优缺点的英语作文4篇

关于网络优缺点的英语作文4篇 导语&#xff1a;随着科技的发展&#xff0c;电脑在二十一世纪成了人们必要的用品。随之而来&#xff0c;网络与我们的生活息息相关&#xff0c;给现代人的.生活、工作带来了无与伦比的方便。 篇一&#xff1a;关于网络优缺点的英语作文 A couple …