python实战-含容器运用

news2024/11/27 4:00:47

目录

1.找出10000以内能被5或6整除,但不能被两者同时整除的数

2.写一个方法,计算列表所有偶数下标元素的和(注意返回值)

3.根据完整的路径从路径中分离文件路径、文件名及扩展名

4.根据标点符号对字符串进行分行

5.去掉字符串数组中每个字符串的空格

1.使用strip()函数

2.使用列表推导式

6.两个学员输入各自最喜欢的游戏名称,判断是否一致,如 果相等,则输出你们俩喜欢相同的游戏;如果不相同,则输 出你们俩喜欢不相同的游戏。

7.上题中两位同学输入 lol和 LOL代表同一游戏,怎么办?

8.让用户输入一个日期格式如“2008/08/08”,将 输入的日 期格式转换为“2008年-8月-8日”。

9.接收用户输入的字符串,将其中的字符进行排序(升 序),并以逆序的顺序输出,“cabed”→"abcde"→“edcba”

1.使用列表和sort函数

2.使用字符串切片(有一点问题待修改)

10.接收用户输入的一句英文,将其中的单词以反序输 出,“hello c java python”→“python java c hello”。

11.从请求地址中提取出用户名和域名 http://www.163.com?userName=admin&pwd=123456

12.有个字符串数组,存储了10个书名,书名有长有短,现 在将他们统一处理,若书名长度大于10,则截取长度8的 子串并且最后添加“...”,加一个竖线后输出作者的名字。

13.让用户输入一句话,找出所有"呵"的位置。

14.让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变 成”老牛很**”;

15.判断一个字符是否是回文字符串 "1234567654321" "上海自来水来自海上"

16.过滤某个文件夹下的所有"xx.py"python文件


1.找出10000以内能被5或6整除,但不能被两者同时整除的数

def find_numbers():
    numbers = []
    for i in range(1, 10001):
        if i % 5 == 0 or i % 6 == 0 and i % 30 != 0:
            numbers.append(i)
    return numbers

# 调用函数并打印结果
numbers = find_numbers()
print(numbers)

分析:这段代码首先定义了一个函数find_numbers(),该函数会遍历1到10000之间的每一个数。对于每一个数,它会检查是否能被5或6整除,并且不能同时被5和6整除。如果能满足这些条件,那么这个数就会被添加到一个列表中。最后,调用这个函数并打印出结果。

运行结果:(由于结果太多下图仅呈现一部分)

2.写一个方法,计算列表所有偶数下标元素的和(注意返回值)

注意:我们假设这个列表为[4,6,9,5,78,152,32,45,8,54,12,16,18]

def calculate_sum(lst):
    sum= 0
    for index in range(len(lst)):
        if index % 2 == 0:  # 如果下标是偶数
            sum += lst[index]
    return sum

my_list = [4,6,9,5,78,152,32,45,8,54,12,16,18]
print("最终结果为:",calculate_sum(my_list))

分析:定义了一个函数calculate_sum,该函数接受一个列表lst作为参数。然后,它初始化一个变量sum用于存储偶数下标元素的和。接着,它遍历列表中的每个元素,如果下标是偶数,就将该元素加到sum中。最后,函数返回累加的结果。

运行结果:

3.根据完整的路径从路径中分离文件路径、文件名及扩展名

分析:使用os.path模块中的split()splitext()函数来分离文件路径、文件名和扩展名

import os

# 假设有一个完整的文件路径
file_path = "C:\\Users\\Name\\Desktop\\Example.docx"

# 使用split()函数分离路径和文件名
(dir_path, file_name) = os.path.split(file_path)

# 使用splitext()函数分离文件名和扩展名
(base_name, extension) = os.path.splitext(file_name)

print("Dir Path:", dir_path)
print("Base Name:", base_name)
print("Extension:", extension)

注意split()函数会返回一个元组,其中第一个元素是目录路径,第二个元素是文件名。然后,splitext()函数会返回另一个元组,其中第一个元素是文件的基本名称(不含扩展名),第二个元素是文件的扩展名。

这些函数可能会因为操作系统不同而有所差异。在Windows系统中,路径可能包含盘符(如C:),而在Linux和Mac OS X系统中,路径通常以/开头。此外,如果你的路径包含URL或者是在不同的文件系统上,那么可能需要额外的处理步骤。

运行结果:

4.根据标点符号对字符串进行分行

import re

def s_punctuation(text):
    # 定义标点符号列表
    punctuation = [',', '.', '!', '?']
    # 使用正则表达式匹配标点符号,并进行分行
    segments = (segment + '\n' if segment in punctuation else segment for segment in re.split(r'([,.!?]+)', text))
    # 移除字符串末尾可能多余的换行符,并连接所有片段
    return ''.join(segments).rstrip('\n')

text = "Hello, how are you? I'm fine. Thank you!"
print(s_punctuation(text))

分析:先定义了一个函数s_punctuation,它接收一个字符串作为参数。然后,我们定义了一个包含常用标点符号的列表punctuation。接着,我们使用了re.split函数,它可以根据正则表达式模式([,.!?]+)来分割字符串。这个模式会匹配一个或多个连续的标点符号,并将它们替换成换行符\n。最后,我们使用join函数将所有的子串连接成一个字符串,并使用rstrip函数移除字符串末尾可能多余的换行符。

运行结果:

5.去掉字符串数组中每个字符串的空格

有两种解决办法:   

1.使用strip()函数

array = [' apple', 'banana ', ' orange ']
new_array = [element.strip() for element in array]
print(new_array)

分析strip()函数是Python字符串对象的方法,它可以去除字符串前后的空格。

运行结果:

2.使用列表推导式

array = [' apple', 'banana ', ' orange ']
new_array = [element.strip() for element in array]
print(new_array)

分析:列表推导式是Python中的一种简洁的语法,可以用来处理列表或数组。

运行结果:同上

6.两个学员输入各自最喜欢的游戏名称,判断是否一致,如 果相等,则输出你们俩喜欢相同的游戏;如果不相同,则输 出你们俩喜欢不相同的游戏。

def compare_games():
    game1 = input("请输入第一位学员喜欢的游戏名称:")
    game2 = input("请输入第二位学员喜欢的游戏名称:")
    if game1 == game2:
        print("你们两位喜欢相同的游戏")
    else:
        print("你们两位喜欢不同的游戏")

compare_games()

分析:我们首先通过input()函数获取两个学员输入的游戏名称。然后,我们使用==运算符来比较这两个游戏名称是否相等。

运行结果:

7.上题中两位同学输入 lol和 LOL代表同一游戏,怎么办?

def game_name_comparator(game1, game2):
    # 将两个游戏名称转换为统一的大小写
    game1 = game1.upper()
    game2 = game2.upper()
    # 比较两个转换后的字符串是否相等
    if game1 == game2:
        return True
    else:
        return False


user1_game = 'lol'
user2_game = 'LOL'
if game_name_comparator(user1_game, user2_game):
    print("两位同学喜欢相同的游戏")
else:
    print("两位同学喜欢的游戏不相同")

分析:可以通过将输入的字符串转换为统一的格式(例如,都是大写或都是小写)来进行比较。这样,即使输入的字符串在大小写上有所不同,也能被识别为相同的游戏名称。首先定义了一个game_name_comparator函数,该函数会将两个游戏名称转换为统一的大小写,然后再进行比较。这样可以确保即使输入的游戏名称在大小写上不一致,也能得到正确的比较结果。

运行结果:

8.让用户输入一个日期格式如“2008/08/08”,将 输入的日 期格式转换为“2008年-8月-8日”。

from datetime import datetime

def convert_date_format(input_date):
    year, month, day = input_date.split('/')
    formatted_date = f"{year}年-{int(month)}月-{int(day)}日"
    return formatted_date


user_input_date = '2008/08/08'
formatted_date = convert_date_format(user_input_date)
print("转换后的日期为:", formatted_date)

分析:通过使用datetime模块的strptime函数和格式化字符串'%Y年-%m月-%d日',实现了将用户输入的日期格式“2008/08/08”转换为“2008年-8月-8日”的功能。这个过程不仅涉及到了字符串的分割和转换,还使用了datetime模块提供的强大功能来处理日期和时间。

运行结果

9.接收用户输入的字符串,将其中的字符进行排序(升 序),并以逆序的顺序输出,“cabed”→"abcde"→“edcba”

两种办法:

1.使用列表和sort函数


user_input = 'cabed'
sorted_list = list(user_input)
sorted_list.sort()
reversed_list = sorted_list[::-1]
output_string = ''.join(reversed_list)
print(output_string)

分析:

  1. 将字符串转换为列表,以便可以对其进行排序。

  2. 使用列表的sort方法进行升序排序。

  3. 使用reverse方法将列表逆序。

  4. 使用join方法将列表中的元素连接成字符串。

运行结果

2.使用字符串切片(有一点问题待修改)

user_input = 'cabed'
output_string = user_input[::-1]
print(output_string)

分析:

  1. 使用字符串切片[::-1]来获取字符串的逆序版本。
  2. 由于字符串本身是不可变的,所以可以直接在原始字符串上应用切片。

运行结果:

10.接收用户输入的一句英文,将其中的单词以反序输 出,“hello c java python”→“python java c hello”。

使用上个例题的第二种方法(有问题待修改)

user_input = 'hello c java python'
output_string = user_input[::-1]
print(output_string)

运行结果

11.从请求地址中提取出用户名和域名 http://www.163.com?userName=admin&pwd=123456

1.使用urllib.parse模块

import urllib.parse

url = 'http://www.163.com?userName=admin&pwd=123456'
parsed_url = urllib.parse.urlparse(url)

# 域名
domain = parsed_url.netloc
print("域名: ", domain)

# 用户名
username = ''
if 'userName' in parsed_url.query:
    username = parsed_url.query['userName']
print("用户名: ", username)

分析urllib.parse模块提供了一个方便的方式来解析URL字符串。使用urlparse函数可以将URL分解为一个包含了多个组件的对象,包括方案(scheme)、网络定位(netloc)、路径(path)、查询(query)和片段(fragment)。

运行结果:

2.使用正则表达式

import re

url = 'http://www.163.com?userName=admin&pwd=123456'

# 匹配用户名
username_regex = re.search(r'userName=([^&]+)', url)
if username_regex:
    username = username_regex.group(1)
print("用户名: ", username)

# 匹配域名
domain_regex = re.search(r'www\.([^.]+)\.com', url)
if domain_regex:
    domain = domain_regex.group(1)
print("域名: ", domain)

分析:正则表达式是处理字符串的强大工具,Python中的re模块可以用来执行正则表达式的匹配和搜索。对于提取特定模式的字符串,如电子邮件地址中的用户名和域名,正则表达式特别有用。

运行结果

12.有个字符串数组,存储了10个书名,书名有长有短,现 在将他们统一处理,若书名长度大于10,则截取长度8的 子串并且最后添加“...”,加一个竖线后输出作者的名字。

题目没有理解,待修改

13.让用户输入一句话,找出所有"呵"的位置。


def find(text):
    positions = []
    for index, char in enumerate(text):
        if char == '呵':
            positions.append(index)
    return positions

user_input = '您好呵,这是Python脚本,欢迎使用呵!'
positions = find(user_input)
print(f'所有"呵"的位置:{", ".join(map(str, positions))}')

分析:我们可以使用字符串的find()index()方法来实现。具体做法是,遍历字符串中的每个字符,如果当前字符是"呵",则记录其位置。先定义了一个find()函数,该函数接受一个字符串作为参数,并返回一个包含所有"呵"字符位置的列表。然后在主程序中获取用户的输入,并调用该函数来找出"呵"的位置,最后将结果打印出来。

运行结果

14.让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变 成”老牛很**”;

def censor_evil(sentence):
    if "邪恶" in sentence:
        censored_sentence = sentence.replace("邪恶", "**")
        return censored_sentence
    else:
        return sentence
    
user_input = input("请输入一句话: ")

# 判断和替换
censored_text = censor_evil(user_input)

# 输出处理后的句子
print(f"处理后的句子: {censored_text}")

分析:编写一个函数来判断用户输入的句子中是否含有“邪恶”一词。如果含有,则替换为“**”。这里我们可以使用字符串的find()方法来寻找“邪恶”一词的位置,如果找到了则进行替换。

运行结果:

15.判断一个字符是否是回文字符串 "1234567654321" "上海自来水来自海上"

def is_palindrome(s):
    if len(s) == 0:
        return True
    if s[0] != s[-1]:
        return False
    return is_palindrome(s[1:-1])
print(is_palindrome('1234567654321'))  
print(is_palindrome('上海自来水来自海上'))  

分析:递归切片法通过递归地调用自身来比较字符串的前半部分和后半部分是否互为倒序

运行结果:

16.过滤某个文件夹下的所有"xx.py"python文件

import os

# 指定文件夹路径
folder_path = "path/to/folder"

# 获取文件夹内所有文件列表,并通过字符串操作筛选出"xx.py"文件
files = [f for f in os.listdir(folder_path) if f.endswith('.py')]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+vue实现的计算机等级考试报名系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

第七周周一人工智能导论预告

第一讲 人工智能概述 1.1 简介 1.2人工智能的概念 1.3 人工智能的发展简史 1.4 人工智能研究的基本内容 第一讲 人工智能概述单元测试 第二讲 一阶谓词逻辑表示法 2.1 命题逻辑 2.2 谓词逻辑 2.3 一阶谓词逻辑知识表示法 第二讲 一阶谓词逻辑知识表示法单元测试 第…

Docker 学习笔记(六):挑战容器数据卷技术一文通,实战多个 MySQL 数据同步,能懂会用,初学必备

一、前言 记录时间 [2024-4-11] 系列文章简摘: Docker学习笔记(二):在Linux中部署Docker(Centos7下安装docker、环境配置,以及镜像简单使用) Docker 学习笔记(三)&#x…

基于STM32F103单片机的时间同步项目

一、前言 本项目为前一个时间同步项目的更迭版本,由于之前的G031开发板没有外部晶振,从机守时能力几乎没有,5秒以上不同步从机时间就开始飞了。在考虑成本选型后,选择了带有外部有缘晶振的STM32F103C8T6最小单片机,来作…

itext7 pdf转图片

https://github.com/thombrink/itext7.pdfimage 新建asp.net core8项目&#xff0c;安装itext7和system.drawing.common 引入itext.pdfimage核心代码 imageListener下有一段不安全的代码 unsafe{for (int y 0; y < image.Height; y){byte* ptrMask (byte*)bitsMask.Scan…

一些炫酷的按钮特效

一些炫酷的按钮特效 效果展示 完整vue版代码 <template><div class"test"><div><button class"custom-btn btn-1">btn-1</button><button class"custom-btn btn-2">btn-2</button><button class…

【安全】挖矿木马自助清理手册

一、什么是挖矿木马 挖矿木马会占用CPU进行超频运算&#xff0c;从而占用主机大量的CPU资源&#xff0c;严重影响服务器上的其他应用的正常运行。黑客为了得到更多的算力资源&#xff0c;一般都会对全网进行无差别扫描&#xff0c;同时利用SSH爆破和漏洞利用等手段攻击主机。 …

更换淘宝镜像地址,旧的已经失效(https://registry.npm.taobao.org )

旧的镜像地址&#xff1a;npm install --registryhttps://registry.npm.taobao.org 新的镜像地址&#xff1a;npm install --registryhttps://registry.npmmirror.com

TikTok如何矩阵养号?TK防关联引流系统助力TK账号安全运营

TK是 TikTok旗下的短视频社交媒体&#xff0c;平台目前是全球最火的短视频平台&#xff0c;目前全球活跃用户已经超过8亿。其中 TikTok的用户已经达到8亿。TK这款短视频社交媒体平台在海外的发展潜力非常大&#xff0c;也是国内很多人的创业目标&#xff0c;很多人都想从 TK这个…

计算机网络----第十天

配置vlan 广播风暴的含义&#xff1a; 含义&#xff1a;设备发出的广播帧在广播域中传播&#xff0c;占用网络带宽&#xff0c;降低设备性能 隔离广播的方式&#xff1a; 方式&#xff1a;用路由器来隔离广播 用VLN隔离广播 vlan的定义&#xff1a; 定义&#xff1a;虚拟…

2024mathorcup数学建模D题思路分析-量子计算在矿山设备配置及运营中的建模应用

# 1 赛题 D 题 量子计算在矿山设备配置及运营中的建模应用 随着智能技术的发展&#xff0c;智慧矿山的概念越来越受到重视。越来越多的 设备供应商正在向智慧矿山整体解决方案供应商转型&#xff0c;是否具备提供整体 解决方案的能力&#xff0c;也逐步成为众多矿山设备企业的核…

路径规划 | RRT结合APF算法快速探索随机树结合人工势场法的路径规划算法(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 RRT结合APF算法的matlab代码。地图为可以替换的栅格地图。代码是在复现华中科技大学发表的英文论文的基础上的进一步改进。RRT算法。人工势场算法。 1.原论文方法简介&#xff1a;针对快速探索随机树&#xff08;RRT&…

科技云报道:大模型加持后,数字人“更像人”了吗?

科技云报道原创。 北京冬奥运AI 虚拟人手语主播、杭州亚运会数字人点火、新华社数字记者、数字航天员小诤…当随着越来越多数字人出现在人们生活中&#xff0c;整个数字人行业也朝着多元化且广泛的应用方向发展&#xff0c;快速拓展到不同行业、不同场景。 面向C端&#xff0…

免杀开发基础(1)

目录 前言 个人介绍 我的技术与生活——小站首页 | Hexo (xiaoyunxi.wiki)https://xiaoyunxi.wiki/ 免杀开发基基础 动态函数加载和执行 Shellcode执行技术 1.指针执行 2.申请内存指针执行 3.回调函数 注入技术 shellcode加密手段 title: 免杀开发基础(1) author: …

结合文本的目标检测:Open-GroundingDino训练自己的数据集

1、简单介绍 Open-GroundingDino是GroundingDino的第三方实现训练流程的代码&#xff0c;因为官方GroundingDino没有提供训练代码&#xff0c;只提供了demo推理代码。 关于GroundingDino的介绍可以看论文&#xff1a;https://arxiv.org/pdf/2303.05499.pdf GroundingDino的G…

SpringBoot学习之Kibana和Elasticsearch-Head的下载安装和启动(三十二)

一、Kibana简介 Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目…

springboot+vue2+elementui+mybatis- 批量导出导入

全部导出 批量导出 报错问题分析 经过排查&#xff0c;原因是因为在发起 axios 请求的时候&#xff0c;没有指定响应的数据类型&#xff08;这里需要指定响应的数据类型为 blob 二进制文件&#xff09; 当响应数据回来后&#xff0c;会执行 axios 后置拦截器的代码&#xff0…

Ubuntu22.04搭建CLion C++开发环境

Ubuntu22.04搭建CLion C开发环境 文章目录 Ubuntu22.04搭建CLion C开发环境1.首先下载CLion2.配置c环境3.创建快捷方式Reference 1.首先下载CLion 进入官网https://www.jetbrains.com/clion/download/#sectionlinux 然后进入自己存放这个压缩包的路径中&#xff0c; sudo mkd…

单调栈用法

文章目录 1. 单调栈1.1 理解单调栈&#xff08;模板&#xff09;1.2 每日温度1.3 子数组的最小值之和1.4 柱状图中最大的矩形1.5 最大矩形1.6 最大宽度坡1.7 去除重复字母 1. 单调栈 单调栈经典的用法&#xff1a; 对每个位置都求&#xff1a; 当前位置的左侧比当前位置的数…

电商技术揭秘22:智能仓储与物流优化(上)

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…