计算机二级练习仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

975 lines
66 KiB

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 实践8 文本数据\n",
"\n",
"\n",
"**学习目标**\n",
"1. 熟练书写字符串数据的常量表示 \n",
"2.能掌握简单的字符串操作和函数实现计算 \n",
"3. 能掌握文本数据的典型问题的算法设计 \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.字符串常量的表示 \n",
"**理解字符串常量三种表示方式,和使用场合** \n",
"**理解转义字符(\\n和\\t)和空格的作用**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(\"To be or not to be, that's a question.\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print('古云:\"临渊羡鱼,不如退而结网。\"')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print('''富贵必从勤苦得,\n",
"男儿须读五车书。\n",
"--杜甫''')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#换行符\\n\n",
"print('富贵必从勤苦得,\\n男儿须读五车书。\\n--杜甫')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#空格和制表符\\t的区别\n",
"from random import randint \n",
"n=int(input(\"n=\"))\n",
"for i in range(1,n+1):\n",
" print(randint(0,10000),end=\" \") #使用空格间隔每一个数\n",
" if i % 10 == 0:\n",
" print()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"n=int(input(\"n=\"))\n",
"for i in range(1,n+1):\n",
" print(randint(0,10000),end=\"\\t\") #使用制表符间隔每一个数\n",
" if i % 10 == 0:\n",
" print()"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"a 的编码是 97\n"
]
}
],
"source": [
"txt = 'a'\n",
"code = ord(txt)\n",
"print (txt,'的编码是',code)\n"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 的编码是 48\n"
]
}
],
"source": [
"txt = '0'\n",
"code = ord(txt)\n",
"print (txt,'的编码是',code)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"101 对应的字符是 e\n"
]
}
],
"source": [
"code = 101\n",
"txt = chr(code)\n",
"print(code,\"对应的字符是\",txt)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.字符串的切片访问方式\n",
"**运行并理解下面表达式中切片的作用**\n",
"\n",
"`str[start:end:step]` \n",
"1.下标可以使用正序下标,也可以使用逆序下标。第一个是0,最后一个是-1。 \n",
"2.end的下标是不包含在截取串中。 \n",
"3.step值为-1,表示逆序。 \n",
"4.逆序切片时,start表示源串的右面的位置下标,end表示源串的左面位置下标,且不包含。 \n",
"例如:要取s中Python world进行逆序。start的值为-2,end值为5,step为-1。 \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s=\"Hello,Python world!\"\n",
"s[0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s[5]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s[-1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s[:5]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s[6:-7]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s[:-1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s[::-1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s[:5:-1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s[-2::-1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s[-2:5:-1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.字符串运算"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s1=\"Hello,\"\n",
"s2=\" Python\"\n",
"s=s1+s2\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s1 in s"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s=s1+s2*3\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#\"program\" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#\"prolan\" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#\"amamam\""
]
},
{
"attachments": {
"image-2.png": {
"image/png": "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"
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4.字符串处理函数和内置字符串处理方法\n",
"![image-2.png](attachment:image-2.png)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#\n",
"s=\"Python String\"\n",
"s.upper()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s.lower()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s.find('i')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s.replace('ing','gni')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"t = s.split()\n",
"t"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s1 = \"-\".join(t)\n",
"s1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"t = s1.split(\"-\")\n",
"t"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s.find('t')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s.find('t',3)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s.find('t',9)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s.index('t')\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s.index('t',9)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5.string模块\n",
"import string \n",
"string.digits 可返回'0123456789' \n",
"string.ascii_lowercase 可返回'abcdefghijklmnopqrstuvwxyz' \n",
"string.ascii_uppercase 可返回'ABCDEFGHIJKLMNOPQRSTUVWXYZ' \n",
"string.punctuation 可返回'!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~' "
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"import string"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0123456789'"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"string.digits "
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"! \" # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \\ ] ^ _ ` { | } ~ "
]
}
],
"source": [
"for ch in string.punctuation:\n",
" print(ch,end=\" \")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 试一试\n",
"\n",
"利用s1、s2和字符串操作(使用切片、连接、复制、字符串函数),写出能产生下列结果的表达式。 \n",
"s1='programming' \n",
"s2='language' \n",
"(1)\"program\" \n",
"(2)\"prolan\" \t\n",
"(3)\"amamam\" \n",
"(4)\"progr@mming l@ngu@ge\" \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s1='programming'\n",
"s2='language'"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#(1)\"program\" \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#(2)\"prolan\" \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#(3)\"amamam\"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#(4)\"progr@mming l@ngu@ge\"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#(5)'Programming Language'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 试一试:\n",
"寻找一个源字符串s中的子串sub的所有位置。 \n",
"试使用不同的方法实现 \n",
"运行示例: \n",
" ` \n",
"s=do not,for one repuls,forgo the purpose that you resolved to effort \n",
"sub=o \n",
"1\t4\t8\t11\t23\t26\t36\t46\t52\t59\t64\tover ` "
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"方法一 使用find函数,while语句实现\n",
"循环的构建\n",
"(1)循环通项\n",
"index=s.find(sub,start)\n",
"print(index)\n",
"start=index+1\n",
"(2)循环控制:index为-1 循环结束\n",
"index的初值,第一次执行find\n",
"index的终值-1\n",
"index的变化,再次执行find\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"方法二 while True...if ...break 算法模式实现\n"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"方法三 使用index函数\n",
"\n",
"(1)循环通项\n",
"index=s.find(sub,start)\n",
"print(index)\n",
"start=index+1\n",
"(2)循环控制 :当异常ValueError发生,break跳出循环"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 6.字符串典型算法设计\n",
"(1)编码解析\n",
"(2)逆序数\n",
"(3)分类统计\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### (1)编码解析 \n",
"*使用切片获取子串* \n",
"*使用format函数、连接运算(+)构造字符串* \n",
"【例】身份证解析: \n",
"输入一个昵称和身份证号的信息, \n",
"从身份证中提取出生日期和性别的信息,输出昵称和出生日期, \n",
"且在6月份出生的人员后标注“准备礼物”, \n",
"如果该用户是女性,则再加上“+鲜花”进行标注。"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"请输入昵称:红太狼\n",
"请输入身份证号码:309012199606230083\n",
"红太狼\t1996年06月23日\n",
"准备礼物+鲜花\n"
]
}
],
"source": [
"nickname=input(\"请输入昵称:\")\n",
"ids=input(\"请输入身份证号码:\")\n",
"\n",
"birthDay=\"{}年{}月{}日\".format(ids[6:10],ids[10:12],ids[12:14]) #构造生日\n",
"msg=\"{}\\t{}\\n\".format(nickname,birthDay) #构造输出字符串\n",
"if ids[-8:-6]=='06': #生日为6月\n",
" msg+=\"准备礼物\"\n",
" if int(ids[-2])%2==0: #是女性\n",
" msg+=\"+鲜花\"\n",
"print(msg)\n"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"str的format函数可以用于构造一个格式字符串,格式字符串中{}对应的内容由参数列表中的参数值按格式规定显示。\n",
"ids[10:12]和ids[-8:-6]都是月份对应的子串,前者使用正序索引,后者使用逆序索引。\n",
"msg是输出字符串变量,注意msg的逐步构造的方法:先通过赋值语句获得第一行昵称和出生年月,然后通过连接操作,追加第2行的输出文本内容。使用一个字符串变量可以操作多行文本。\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### (2)求逆序数 \n",
"整数类型和字符串可以相互转换,使用字符串操作方便实现逆序功能。 "
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"【例】输入若干个整数quit结束,求所有整数的逆序数之和。\n",
"运行示例\n",
"input x:45\n",
"input x:-12\n",
"input x:30\n",
"input x:quit\n",
"54+(-21)+3 = 36\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s=0 #累加器\n",
"outstr=\"\" #输出字符串\n",
"while True:\n",
" x=input(\"input x:\") #循环控制结构\n",
" if x==\"quit\":\n",
" break\n",
" #字符串切片操作求逆序数\n",
" if x[0]==\"-\":\n",
" x=int( x[:0:-1])*-1\n",
" else:\n",
" x=int(x[::-1])\n",
" #使用格式字符串和连接操作构造输出字符串\n",
" if x<0:\n",
" outstr+=\"({})+\".format(x)\n",
" else:\n",
" outstr+=str(x)+\"+\"\n",
" #累加逆序数\n",
" s=s+x\n",
"print(outstr[:-1],\"=\",s) \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"说明:\n",
"1.input函数输入得到字符串,实现逆序,构造输出字符串的括号和负号,使用字符串方便。\n",
"2.求累加和是整数的运算,使用int转换数据类型。\n",
"3.理解切片:x[:0:-1]和x[::-1]区别,是否保留字符\"-\"。负数字符串要先除去字符\"-\",才能逆序操作。\n",
"4.outstr变量用于构造最后的输出字符串,每一次循环连接一个数和符号\"+\"。最后一个数后的\"+\"要除去,使用切片操作:outstr[:-1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### (3) 字符统计\n",
"遍历字符串的算法模式:\n",
"```python \n",
"for ch in s:\n",
" ...ch...\n",
"```\n",
"判断字符分类的方法可以不同的方法\n",
"* ASCII的值判断\n",
"* str函数判断\n",
"* string模块的常量字符集判断"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"【例】编写程序,用于统计各类字符个数。输入一个字符串,统计其中大写字母,小写字母,数字的个数,其他各类字符的总数。 \n",
"运行示例:\n",
"please input char:HELLO python 123! \n",
"大写字母5个,小写字母6个,数字3个,其他字符3个 \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# ASCII的值判断\n",
"instr=input('please input char:')\n",
"upper,lower,digit,other=0,0,0,0\n",
"for c in instr:\n",
" if c>='A' and c<='Z':\n",
" upper=upper+1\n",
" elif c>='a' and c<='z':\n",
" lower=lower+1\n",
" elif c>='0' and c<='9':\n",
" digit=digit+1\n",
" else:\n",
" other=other+1\n",
"print('大写字母{}个,小写字母{}个,数字{}个,其他字符{}个'.format(upper,lower,digit,other))\n"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"please input char:please input char:HELLO python 123! \n",
" 大 写 字 母 5 个 , 小 写 字 母 21 个 , 数 字 3 个 , 其 他 字 符 8 个 \n"
]
}
],
"source": [
"# str函数判断\n",
"instr=input('please input char:') \n",
"upper,lower,digit,other=0,0,0,0 \n",
"for c in instr: \n",
" if c.isupper():\n",
" upper=upper+1 \n",
" elif c.islower(): \n",
" lower=lower+1 \n",
" elif c.isdigit(): \n",
" digit=digit+1 \n",
" else: \n",
" other=other+1 \n",
"\n",
"\n",
"msg = f' 大 写 字 母 {upper} 个 , 小 写 字 母 {lower} 个 , 数 字 {digit} 个 , 其 他 字 符 {other} 个 '\n",
"print(msg)\n"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"\n",
"字符串.isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False。\n",
"字符串.isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False。\n",
"字符串.isdigit() 所有字符都是数字,为真返回 Ture,否则返回 False。\n",
"字符串.islower() 所有字符都是小写,为真返回 Ture,否则返回 False。\n",
"字符串.isupper() 所有字符都是大写,为真返回 Ture,否则返回 False。\n",
"字符串.istitle() 所有单词都是首字母大写,为真返回 Ture,否则返回 False。\n",
"字符串.isspace() 所有字符都是空白字符,为真返回 Ture,否则返回 False。 \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#string模块的常量字符集判断\n",
"import string\n",
"instr=input('please input char:')\n",
"upper,lower,digit,other=0,0,0,0\n",
"for c in instr:\n",
" if c in string.ascii_uppercase :\n",
" upper=upper+1\n",
" elif c in string.ascii_lowercase:\n",
" lower=lower+1\n",
" elif c in string.digits:\n",
" digit=digit+1\n",
" else:\n",
" other=other+1\n",
"print('大写字母{}个,小写字母{}个,数字{}个,其他字符{}个'.format(upper,lower,digit,other))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 小试身手"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"(1)编写程序 实现二进制IP地址转为十进制IP地址。 \n",
"一个IP地址是由四个字节(每个字节8个位)的二进制码组成。输入一个合法的二进制表示的IP地址,请将其转换为十进制格式表示的IP地址输出(不考虑异常输入数据)。\n",
"运行示例: \n",
"input:11001100100101000001010101110010 \n",
"output:204.148.21.114 \n",
"\n",
"提示:int(str,base=2)可以将一个二进制字符串转化为十进制整数 \n",
">>> int(\"110111101\",2) \n",
"445 "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(2)编写程序 随机产生50个-1000~1000之间的整数,输出其中逆序数大于原数据的整数并统计个数。每个整数之间空格间隔。\n",
"\n",
"输出示例:\n",
"687 -564 -662 -873 519 367 -625 375 436 -981 -742 -231 -671 -382 -32 -30 -958 -920 -520 -97 -350 69 29 \n",
"共23个数"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(3)编写程序 实现电文加密\n",
"有一行电文,已按如下规律译成密码:\n",
"A-->Z a-->z\n",
"B-->Y b-->y\n",
"C-->X c-->x\n",
" ...... ......\n",
"即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。\n",
"\n",
"运行示例\n",
"input:ABC123abc \n",
"output:ZYX123zyx\n",
"运行示例\n",
"input:Life is like an ice cream, enjoy it before it melts. \n",
"output:Oruv rh orpv zm rxv xivzn, vmqlb rg yvuliv rg nvogh. \n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}