您现在的位置是:首页 > 编程 > 

Python编程实验二:字符串与列表的基本应用

2025-07-24 09:33:17
Python编程实验二:字符串与列表的基本应用 一、实验目的与要求(1)通过本次实验,学生应掌握字符串索引、切片和一些常用方法的使用; (2)掌握列表创建的基本方法,能实现列表元素增加、查询、排序等常见操作; ()能结合应用问题选择合适的数据结构进行问题求解; (4)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)二、实验内容请使用Py

Python编程实验二:字符串与列表的基本应用

一、实验目的与要求

(1)通过本次实验,学生应掌握字符串索引、切片和一些常用方法的使用; (2)掌握列表创建的基本方法,能实现列表元素增加、查询、排序等常见操作; ()能结合应用问题选择合适的数据结构进行问题求解; (4)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)

二、实验内容

请使用Python语言在Jupyter otebook环境下编程,完成下列题目的要求:

1、通过用户输入的身份证号,输出对应的出生日期‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬程序运行的效果如下:‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

提示:可以使用字符串切片进行年月日信息的提取。

2、自幂数是指一个n位数 (n≥),它的每个位上的数字的n次幂之和等于它本身。例如15就是一个自幂数(当n=时也称为水仙花数),因为15=1^+5^+^。请按下面的运行结果出用户输入范围内的所有自幂数。

提示:可以考虑把整数转换成数值字符串,再按顺序分离出各个位置上的数字字符串,并转换成整数后进行计算。例如:判断整数124是否是自幂数,可以把它转换成字符串”124”,然后通过for循环依次取出字符“1”、“2”、“”和“4”,再分别转换成整数就可以快速得到原来整数124各个位置上的数字了,这样再判断是否是自幂数就比较方便了。

、对于给定的字符串"Where there is a will, there is a way. The important point is that you must have the will to achieve success.",请统计该字符串中不重复的单词数,并把这些单词按字母顺序降序排列,输出效果如下所示:

提示:考虑使用下列处理过程: (1)用空格替换串中的英文逗号和句号,去除标点符号的影响; (2)用字符串对象的split()方法提取出单词; ()把split()方法的结果转换为集合进行自动去重; (4)而排序时则需要把去重后的集合转换为列表来实现。

4、请按照教材教材第8页实训2中表-5给出的数据完成食物菜单的建立与查询。建议使用一个列表存储食品大类,另一个列表存储各类食物的详细菜单。程序运行结果可以参考如下图:

提示:本题主要涉及列表元素的增加与查询。

三、主要程序清单和程序运行结果

第1题

1、通过用户输入的身份证号,输出对应的出生日期‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬程序运行的效果如下:‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

提示:可以使用字符串切片进行年月日信息的提取。

代码语言:javascript代码运行次数:0运行复制
id=input("请输入身份证号:")
year=id[6:10]
month=id[10:12]
day=id[12:14]
print("出生日期:{}年{}月{}日".format(id[6:10],id[10:12],id[12:14]))
第2题

2、自幂数是指一个n位数 (n≥),它的每个位上的数字的n次幂之和等于它本身。例如15就是一个自幂数(当n=时也称为水仙花数),因为15=1^+5^+^。请按下面的运行结果出用户输入范围内的所有自幂数。

提示:可以考虑把整数转换成数值字符串,再按顺序分离出各个位置上的数字字符串,并转换成整数后进行计算。例如:判断整数124是否是自幂数,可以把它转换成字符串”124”,然后通过for循环依次取出字符“1”、“2”、“”和“4”,再分别转换成整数就可以快速得到原来整数124各个位置上的数字了,这样再判断是否是自幂数就比较方便了。

法一:for循环

代码语言:javascript代码运行次数:0运行复制
n = int(input("请输入10的n次幂(n>=): "))  # 使用int来确保输入的安全性
end = 10 ** n
print(f"{end}以内的自幂数包括:")

for j in range(100, end):  # 直接使用end,end已经是10**n的结果
    number_str = str(j)
    length = len(number_str)
    sum_of_powers = sum(int(digit) ** length for digit in number_str)
    if sum_of_powers == j:
        print(j)

直接在循环内部处理每个数字,而不是调用一个单独的函数来检查它是否是自幂数。这样做简化了代码的结构,但牺牲了一些可读性和重用性。对于这个特定的任务,由于逻辑相对简单,直接在循环中实现功能并不会造成太大的问题。 这段代码遍历从100到10**n的所有数字,对每个数字转换为字符串,然后计算其每一位数字的n次幂之和。如果这个和等于原始的数字,就打印出这个数字,表示它是一个自幂数。

法二:定义函数

代码语言:javascript代码运行次数:0运行复制
n = int(input("请输入10的n次幂(n>=): "))  # 使用int来确保输入的安全性
end = 10 ** n
print(f"{end}以内的自幂数包括:")

def is_armstrong(number_str):
    length = len(number_str)
    sum_of_powers = sum(int(digit) ** length for digit in number_str)
    if sum_of_powers == int(number_str):
        print(sum_of_powers)

for j in range(100, end):  # 直接使用end,end已经是10**n的结果
    is_armstrong(str(j))

这个代码保持了原有的逻辑结构,同时采用了一些更安全和更清晰的代码实践。注意,这里使用列表推导式来计算幂之和,使代码更加简洁。根据题目要求和自幂数的定义(n>=),从100开始是合理的。

第题

、对于给定的字符串"Where there is a will, there is a way. The important point is that you must have the will to achieve success.",请统计该字符串中不重复的单词数,并把这些单词按字母顺序降序排列,输出效果如下所示:

提示:考虑使用下列处理过程: (1)用空格替换串中的英文逗号和句号,去除标点符号的影响; (2)用字符串对象的split()方法提取出单词; ()把split()方法的结果转换为集合进行自动去重; (4)而排序时则需要把去重后的集合转换为列表来实现。

代码语言:javascript代码运行次数:0运行复制
import re

s = "Where there is a will, there is a way. The important point is that you must have the will to achieve success."

a = s.replace('.',' ')
b = a.replace(',',' ')
words = b.split()
# 这里还可以使用正则表达式移除标点符号并分割单词
# words = re.findall(r'\b\w+\b', s)

# 转换成集合去除重复单词,然后计算不重复单词的数量
unique_words = set(words)
unique_count = len(unique_words)
print("字符串中不重复的单词数:", unique_count)

# 对不重复的单词列表进行降序排序
sorted_unique_words = sorted(unique_words, key=str.lower, reverse=True)  # key=str.lower确保排序时不区分大小写
print("这些单词降序排列的结果:{}".format(sorted_unique_words))

在这个代码中,或者可以使用正则表达式re.findall(r'\b\w+\b', s)用于到所有单词,其中\b表示单词边界,\w+匹配一个或多个字母数字字符。这样可以直接提取出所有单词,无需手动替换标点符号。 注意,这里在排序时使用了key=str.lower参数,这是为了确保排序过程中不区分大小写,因为默认的字符串排序是区分大小写的,可能会导致所有大写字母开头的单词排在小写字母开头的单词之前。

第4题

4、请按照教材教材第8页实训2中表-5给出的数据完成食物菜单的建立与查询。建议使用一个列表存储食品大类,另一个列表存储各类食物的详细菜单。程序运行结果可以参考如下图:

提示:本题主要涉及列表元素的增加与查询。

代码语言:javascript代码运行次数:0运行复制
#s1=['汉堡类','小食类','饮料类']
#s2=[['香辣鸡腿堡','劲脆鸡腿堡','新奥尔良烤鸡腿堡','半鸡半虾堡'],['薯条','黄金鸡块','香甜粟米棒'],['可口可乐','九珍果汁','经典咖啡']]
s1=[]
s2=[]
while(True):
    menu=input("请输入食品大类(输入q退出食品输入):")
    if menu=='q':
        break
        print()
    s1.append(menu)
    details=input("请输入{}的详细食物清单,多个食物直接用空格分开:".format(menu)).split()
    s2.append(details)
print()
print("当前的食品大类包括:",s1)
print("当前的详细食品菜单是:",s2)
print()

while True:
    try:
        operation=int(input("请输入要查询的食品大类(输入0则退出程序):"))
        if operation==0:
            print("感谢使用")
            break       
        print("{}食品的详细食物菜单是{}".format(s1[operation-1],s2[operation-1]))
    except ValueError:  # 处理非数字输入
        print("请输入有效的数字")
    except IndexError:  # 处理数字不在范围内的情况
        print("请输入有效的食品大类编号")

用户可以输入食品大类和对应的详细食物清单,随后可以通过输入食品大类的编号查询具体的食物清单。这个程序是基于列表的索引来实现的。 代码使用了try-except语句来处理可能出现的异常,例如用户输入的不是数字(ValueError)或者输入的数字超出了列表的范围(IndexError)。这样可以提高程序的健壮性,避免因为无效输入而崩溃。

四、实验结果分析与体会

通过本次实验,掌握了字符串索引、切片和一些常用方法的使用,以及列表创建的基本方法,能实现列表元素增加、查询、排序等常见操作,能结合应用问题选择合适的数据结构进行问题求解。在使用字符串时,我们需要注意Unicode编码的特点,即中英文字符都是一个长度单位。同时,我们可以使用strip()方法去掉字符串首尾的空格或指定字符,使用split()方法根据指定字符分割字符串。此外,字符串还支持拼接运算符+、重复操作符*、in操作符等。 列表是一种非常灵活的数据类型,可以存储各种类型的元素,并且支持增删改查等各种操作。我们可以使用append()方法向列表中添加元素,使用pop()方法删除元素,使用sort()方法排序等。此外,列表还支持切片操作、列表推导式等高级用法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-02-0,如有侵权请联系 cloudcommunity@tencent 删除字符串python编程集合排序

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1139540.html

相关标签:无
上传时间: 2025-07-19 05:39:01
留言与评论(共有 13 条评论)
本站网友 中国农业发展集团总公司
28分钟前 发表
这样再判断是否是自幂数就比较方便了
本站网友 宇洋中央金座
14分钟前 发表
使代码更加简洁
本站网友 如何有效去眼袋
27分钟前 发表
print("感谢使用") break print("{}食品的详细食物菜单是{}".format(s1[operation-1]
本站网友 大台北婚纱摄影
26分钟前 发表
第题
本站网友
14分钟前 发表
对于给定的字符串"Where there is a will
本站网友 微软补丁下载中心
2分钟前 发表
其中\b表示单词边界
本站网友 房地产税种
3分钟前 发表
代码语言:javascript代码运行次数:0运行复制id=input("请输入身份证号
本站网友 营业税实施细则
28分钟前 发表
排序等常见操作; ()能结合应用问题选择合适的数据结构进行问题求解; (4)按照实验题目要求独立正确地完成实验内容(编写
本站网友 东单体育馆
30分钟前 发表
使代码更加简洁
本站网友 水痘的症状图片
22分钟前 发表
查询
本站网友 新电脑如何分区
4分钟前 发表
实验目的与要求(1)通过本次实验
本站网友 炒股票入门
14分钟前 发表
提示:可以考虑把整数转换成数值字符串