SWUST 派森练习题:P113. 集合操作

news/2024/11/23 9:31:17/

描述

txt = '''Ifthereisonlyoneargument,itmustbeadictionarymappingUnicode |ordinals(integers)orcharacterstoUnicodeordinals,stringsorNone. |Characterkeyswillbethenconvertedtoordinals. |Iftherearetwoarguments,theymustbestringsofequallength,and |intheresultingdictionary,eachcharacterinxwillbemappedtothe |characteratthesamepositioniny.Ifthereisathirdargument,it |mustbeastring,whosecharacterswillbemappedtoNoneintheresult.''' 将以上字符串进行操作处理,编写程序完成统计: (1) 将字符串转换成列表lt;

(2) 输入随机种子x,四个正整数m1、n1、m2和n2,要求: n1 > m1,n2 > m2 且 n1,n2 小于整个列表长度;

(3) 设置随机种子,使用shuffle函数将列表顺序打乱;

(4) 切片列表,设lt1 = lt[m1:n1],lt2 = lt[m2:n2];

(5) 统计并输出lt1,lt2中分别出现了多少个不同的字符;

(6) 输出在lt1和lt2同时出现的字符;

(7) 出现在lt1但没在lt2中出现的字符。说明:为确保和输出用例一致,你需要对筛选出的字符做排序。

样例

输入

2005 5 35 70 76

输出

lt1中出现了17个不同的字符

lt2中出现了6个不同的字符

同时出现在lt1和lt2中的字符为:e g h i

出现在lt1,但没在lt2中的字符为:( I a c f m o p r s t u v

代码:

import random
txt = '''Ifthereisonlyoneargument,itmustbeadictionarymappingUnicode |ordinals(integers)orcharacterstoUnicodeordinals,stringsorNone. |Characterkeyswillbethenconvertedtoordinals. |Iftherearetwoarguments,theymustbestringsofequallength,and |intheresultingdictionary,eachcharacterinxwillbemappedtothe |characteratthesamepositioniny.Ifthereisathirdargument,it |mustbeastring,whosecharacterswillbemappedtoNoneintheresult.'''
lt = list(txt)
x, m1, n1, m2, n2 = map(int, input().split())
random.seed(x)
random.shuffle(lt)
lt1 = lt[m1:n1]
lt2 = lt[m2:n2]
print(f"lt1中出现了{len(set(lt1))}个不同的字符")
print(f"lt2中出现了{len(set(lt2))}个不同的字符")
print(f"同时出现在lt1和lt2中的字符为:{' '.join(sorted(set(lt1) & set(lt2)))}")
print(f"出现在lt1,但没在lt2中的字符为:{' '.join(sorted(set(lt1) - set(lt2)))}")

代码解释:

  1. import random:导入random模块,用于生成随机数。

  2. txt = '''Ifthereisonlyoneargument,itmustbeadictionarymappingUnicode |ordinals(integers)orcharacterstoUnicodeordinals,stringsorNone. |Characterkeyswillbethenconvertedtoordinals. |Iftherearetwoarguments,theymustbestringsofequallength,and |intheresultingdictionary,eachcharacterinxwillbemappedtothe |characteratthesamepositioniny.Ifthereisathirdargument,it |mustbeastring,whosecharacterswillbemappedtoNoneintheresult.''':定义一个多行字符串txt。

  3. lt = list(txt):将多行字符串txt转换为列表lt。

    • list(txt)将字符串txt中的每个字符作为列表的一个元素,并将其存储在列表lt中。

  4. x, m1, n1, m2, n2 = map(int, input().split()):接收用户输入的五个整数,并将它们分别赋值给变量x、m1、n1、m2、n2。

    • input()用于接收用户的输入。

    • split()将输入的字符串按空格分隔为多个子字符串,并返回一个包含这些子字符串的列表。

    • map(int, ...)将列表中的每个子字符串转换为整数。

    • x, m1, n1, m2, n2将转换后的整数依次赋值给变量x、m1、n1、m2、n2。

  5. random.seed(x):设置随机数生成器的种子为x。

    • random.seed()用于设置随机数生成器的种子,以便生成可重复的随机数序列。

  6. random.shuffle(lt):打乱列表lt的顺序。

    • random.shuffle()用于将序列的元素随机排序。

  7. lt1 = lt[m1:n1]:将列表lt中的第m1到第n1个元素(不包括第n1个元素)赋值给列表lt1。

    • 这里使用切片操作来获取指定范围内的元素。

  8. lt2 = lt[m2:n2]:将列表lt中的第m2到第n2个元素(不包括第n2个元素)赋值给列表lt2。

    • 这里使用切片操作来获取指定范围内的元素。

  9. print(f"lt1中出现了{len(set(lt1))}个不同的字符"):输出lt1中不同字符的数量。

    • len(set(lt1))用于获取lt1中不同字符的数量。

    • f"lt1中出现了{len(set(lt1))}个不同的字符"使用字符串格式化来输出结果。

  10. print(f"lt2中出现了{len(set(lt2))}个不同的字符"):输出lt2中不同字符的数量。

    • len(set(lt2))用于获取lt2中不同字符的数量。

    • f"lt2中出现了{len(set(lt2))}个不同的字符"使用字符串格式化来输出结果。

  11. print(f"同时出现在lt1和lt2中的字符为:{' '.join(sorted(set(lt1) & set(lt2)))}"):输出同时出现在lt1和lt2中的字符。

    • set(lt1) & set(lt2)用于获取lt1和lt2中的共同字符。

    • sorted(set(lt1) & set(lt2))用于对共同字符进行排序。

    • {' '.join(sorted(set(lt1) & set(lt2)))}使用字符串格式化来输出结果。

  12. print(f"出现在lt1,但没在lt2中的字符为:{' '.join(sorted(set(lt1) - set(lt2)))}"):输出出现在lt1但未在lt2中的字符。

    • set(lt1) - set(lt2)用于获取出现在lt1但未在lt2中的字符。

    • sorted(set(lt1) - set(lt2))用于对这些字符进行排序。

    • {' '.join(sorted(set(lt1) - set(lt2)))}使用字符串格式化来输出结果。


http://www.ppmy.cn/news/1049389.html

相关文章

PHP加密与安全的最佳实践

PHP加密与安全的最佳实践 概述 在当今信息时代,数据安全是非常重要的。对于开发人员而言,掌握加密和安全的最佳实践是必不可少的。PHP作为一种常用的后端开发语言,提供了许多功能强大且易于使用的加密和安全性相关函数和类。本文将介绍一些P…

计算机视觉之图像特征提取

图像特征提取是计算机视觉中的重要任务,它有助于识别、分类、检测和跟踪对象。以下是一些常用的图像特征提取算法及其简介: 颜色直方图(Color Histogram): 简介:颜色直方图表示图像中各种颜色的分布情况。通…

页面加了背景图片,向右拉滚动条出现页面空白没有背景图的情况

前言 页面加了背景图片,在没有缩放浏览器的情况下,有横向的滚动条,向右拉滚动条会出现页面空白没有背景图的情况。 解决 直接从浏览器的滚动条入手,保留纵向滚动条,去除横向滚动条,这样就不存在向右拉横…

8月18日上课内容 Haproxy搭建Web群集

本章结构 课程大纲 Haproxy调度算法 常见的web集群调度器 目前常见的Web集群调度器分为软件和硬件软件 通常使用开源的LVS、Haproxy、Nginx 硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等 Haproxy应用分析 LVS在企业应用中…

iotdb查询结果集转换为java对象

iotdb查询结果集转换为java对象 百度文心 未使用插件 要将IoTDB查询结果集转换为Java对象,您需要编写Java代码以解析查询结果并将其转换为相应的Java对象。 以下是一个示例代码,可以将IoTDB查询结果集转换为Java对象: import java.io.IOEx…

常用字符串匹配算法

一、BF匹配 BF算法中的BF是Brute Force的缩写,中文叫作暴力匹配算法,也叫朴素匹配算法。 BF算法的时间复杂度很高,是O(nm),但在实际的开发中,它却是一个比较常用的字符串匹配算法。 第一,实际的软件开发中…

废品回收抢单派单小程序开源版开发

废品回收抢单派单小程序开源版开发 用户注册和登录:用户可以通过手机号码注册和登录小程序,以便使用废品回收抢单派单功能。废品回收订单发布:用户可以发布废品回收订单,包括废品种类、数量、回收地点等信息。废品回收抢单&#…

Flink流批一体计算(13):PyFlink Tabel API之SQL DDL

1. TableEnvironment 创建 TableEnvironment from pyflink.table import Environmentsettings, TableEnvironment# create a streaming TableEnvironmentenv_settings Environmentsettings.in_streaming_mode()table_env TableEnvironment.create(env_settings)# or create…