python实战-含容器运用

目录

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')]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 网卡ifcfg-eth0 ping不通外网(www.baidu.com)

1、如果确认好就直接激活网卡! ifup eth0 2、慢慢找: cd /etc/sysconfig/network-scripts/ ls 找到你的网卡是啥,这里网卡是 ifcfg-eth0 执行1就好了!

[蓝桥杯] 岛屿个数(C语言)

提示: 橙色字体为需要注意部分,红色字体为难点部分,会在文章“重难点解答”部分精讲。 题目链接 蓝桥杯2023年第十四届省赛真题-岛屿个数 - C语言网 题目理解 这道题让我们求岛屿个数,那么我们就应该先弄懂,对于一…

使用Docker定时备份数据

文章目录 一、Docker镜像制作二、MySQL数据备份三、Minio数据备份四、数据跨服务器传输五、Nginx日志分割六、Docker启动七、Docker备份日志 一、Docker镜像制作 镜像制作目录 mc下载地址 - rsyncd.conf # https://download.samba.org/pub/rsync/rsyncd.conf.5port 873 uid …

pytorch-多分类实战之手写数字识别

目录 1. 网络设计2. 代码实现2.1 网络代码2.2 train 3. 完整代码 1. 网络设计 输入是手写数字图片28x28,输出是10个分类0~9,有两个隐藏层,如下图所示: 2. 代码实现 2.1 网络代码 第一层将784降维到200,第二次使用…

【Vue3 + ElementUI】表单校验无效(写法:this.$refs[‘formName‘].validate((valid) =>{} ))

一. 表单校验 1.1 template模块 el-form 中 若校验&#xff0c;ref 和 rules 必须要有 <template><div style"padding:20px"><el-form ref"formName" :model"form" :rules"formRules" label-width"120px"…

【opencv】示例-grabcut.cpp 使用OpenCV库的GrabCut算法进行图像分割

left mouse button - set rectangle SHIFTleft mouse button - set GC_FGD pixels CTRLleft mouse button - set GC_BGD pixels 这段代码是一个使用OpenCV库的GrabCut算法进行图像分割的C程序。它允许用户通过交互式方式选择图像中的一个区域&#xff0c;并利用GrabCut算法尝试…

idea项目编译时报错:GC overhead limit exceeded

问题描述 今天idea构建一个新的项目时报错&#xff1a;GC overhead limit exceeded&#xff0c;错误是发生在编译阶段&#xff0c;而不是运行阶段。 ava: GC overhead limit exceeded java.lang.OutOfMemoryError: GC overhead limit exceededat com.sun.tools.javac.resources…

STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(2)

接前一篇文章&#xff1a;STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978&#xff08;1&#xff09; 本文参考以下文章及视频&#xff1a; STM32CbueIDE Audio播放音频 WM8978 I2S_stm32 cube配置i2s录音和播放-CSDN博客 STM32第二十二课&#xff08;I2S&#xff0c;HAL&am…

STM32 串口接收定长,不定长数据

本文为大家介绍如何使用 串口 接收定长 和 不定长 的数据。 文章目录 前言一、串口接收定长数据1. 函数介绍2.代码实现 二、串口接收不定长数据1.函数介绍2. 代码实现 三&#xff0c;两者回调函数的区别比较四&#xff0c;空闲中断的介绍总结 前言 一、串口接收定长数据 1. 函…

pbootcms百度推广链接打不开显示404错误页面

PbootCMS官方在2023年4月21日的版本更新中&#xff08;对应V3.2.5版本&#xff09;&#xff0c;对URL参数添加了如下判断 if(stripos(URL,?) ! false && stripos(URL,/?tag) false && stripos(URL,/?page) false && stripos(URL,/?ext_) false…

Composer安装与配置

Composer&#xff0c;作为PHP的依赖管理工具&#xff0c;极大地简化了PHP项目中第三方库的安装、更新与管理过程。本文将详细介绍Composer的安装步骤、基本配置方法&#xff0c;以及一些实用的操作示例&#xff0c;帮助读者快速上手并熟练运用Composer。 一、Composer安装 环…

Python --- 怎么把Python当计算器用?(小白自学笔记)

怎么把Python当计算器用&#xff1f;(小白自学笔记) Part I&#xff1a;标准数学包的导入 今天刚刚装了python&#xff0c;打算用它来取代matlab的基本计算功能&#xff0c;当我的日常计算器用。(这里还有一个捷径&#xff0c;如果你跟我一样也是纯小白的话&#xff0c;直接问c…

如何确保软件通过SmartScreen验证,消除用户下载时的警告提示?

在当前的网络时代&#xff0c;各种软件应用程序深深渗透到人们的日常生活和工作中&#xff0c;许多企业选择自行开发应用程序以推进其业务发展。但在发布应用程序后&#xff0c;软件所有者经常会遇到一个挑战&#xff0c;即用户在下载时可能会遇到微软SmartScreen提示“此应用程…

JVM修炼之路【11】- 解决内存溢出、内存泄漏 以及相关案例

前面的10篇 都是基础的知识&#xff0c;包括类加载的过程 类加载的细节&#xff0c;jvm内存模型 垃圾回收 等等&#xff0c; 这一篇我们开始实战了解一下 各种疑难杂症&#xff1a;怎么监控 怎么发现 怎么解决 内存溢出 内存泄漏 这两个概念在垃圾回收器里面已经讲过了&#…

Java前置一些知识

文章目录 搭建Java环境安装path环境变量Java技术体系 Java执行原理JDK组成跨平台Java内存分配 IDEA管理Java程序 搭建Java环境 安装 oralce官网下载 JDK17 Windows 傻瓜式的点下一步就行&#xff0c;注意&#xff1a;安装目录不要有空格、中文 java 执行工具 javac 编译工具…

2024年第十四届MathorCup数学应用挑战赛C题解析(更新中)

2024年第十四届MathorCup数学应用挑战赛C题解析&#xff08;更新中&#xff09; 题目题目解析(更新中&#xff09;问题一问题二问题三 题目 C题 物流网络分拣中心货量预测及人员排班电商物流网络在订单履约中由多个环节组成&#xff0c;图1是一个简化的物流 网络示意图。其中&a…

状态模式:管理对象状态转换的动态策略

在软件开发中&#xff0c;状态模式是一种行为型设计模式&#xff0c;它允许一个对象在其内部状态改变时改变它的行为。这种模式把与特定状态相关的行为局部化&#xff0c;并且将不同状态的行为分散到对应的状态类中&#xff0c;使得状态和行为可以独立变化。本文将详细介绍状态…

ActiveMQ 01 消息中间件jmsMQ

消息中间件之ActiveMQ 01 什么是JMS MQ 全称&#xff1a;Java MessageService 中文&#xff1a;Java 消息服务。 JMS 是 Java 的一套 API 标准&#xff0c;最初的目的是为了使应用程序能够访问现有的 MOM 系 统&#xff08;MOM 是 MessageOriented Middleware 的英文缩写&am…

django基于python的法院执法案件管理系统

本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行&#xff0c;将系统所使用到的表以及数据存储到MySQL数据库中&#xff0c;方便对数据进行操作本课题基于WEB的开发平台&#xff0c;设计的基本思路是&#xff1a; 框架&#xff1a;django/flask 后端&#xff…

LwIP 之八 详解 IP RAW 编程、示例、API 源码、数据流

我们最为熟知的网络通信程序接口应该是 Socket。LwIP 自然也提供了 Socket 编程接口,不过,LwIP 的 Socket 编程接口都是使用最底层的接口来实现的。我们这里要学习的 IP RAW 编程则是指的直接使用 LwIP 的提供的 RAW API 来直接实现应用层功能。这里先来一张图,对 LwIP 内部…