Embedded_game/数据处理/数据处理1.py
2025-01-02 12:48:11 +08:00

267 lines
8.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
# @Time : 2024/2/3 12:45
# @Author : len
# @File : 数据处理1.py
# @Software: PyCharm
# @Comment :
# 统计字符串中的空格数、大写字母数和小写字母数。
def count_chars(input_str):
"""
计算输入字符串中的空格数、大写字母数和小写字母数。
参数:
input_str (str): 输入的字符串。
返回:
tuple: 包含三个整数,分别是空格数、大写字母数和小写字母数。
"""
# 初始化计数器
space_count = 0
uppercase_count = 0
lowercase_count = 0
# 遍历输入字符串中的每个字符
for char in input_str:
# 如果字符是空格
if char == ' ':
space_count += 1
# 如果字符是大写字母
elif 'A' <= char <= 'Z':
uppercase_count += 1
# 如果字符是小写字母
elif 'a' <= char <= 'z':
lowercase_count += 1
# 返回计数结果
return space_count, uppercase_count, lowercase_count
# 示例用法
input_str = "Hello World!" # 可以替换为任意字符串
space_count, uppercase_count, lowercase_count = count_chars(input_str)
print(f"原字串:{input_str}, 空格: {space_count}, 大写字母: {uppercase_count}, 小写字母: {lowercase_count}")
# 计一个字符串在另一个字符串中出现的次数。
def count_substring_occurrence(str1, str2):
"""
统计一个字符串在另一个字符串中出现的次数。
参数:
str1 (str): 主字符串,将在此字符串中搜索子字符串。
str2 (str): 子字符串,需要统计在主字符串中出现的次数。
返回:
int: 子字符串在主字符串中出现的次数。
"""
# 初始化计数器
count = 0
# 获取两个字符串的长度
len_str1 = len(str1)
len_str2 = len(str2)
# 遍历主字符串
for i in range(len_str1 - len_str2 + 1):
# 如果在当前位置找到子字符串,则计数器加一
if str1[i:i + len_str2] == str2:
count += 1
return count
# 示例用法
str1 = "Hello World, Hello Python!"
str2 = "Hello"
occurrence = count_substring_occurrence(str1, str2)
print(f"'{str2}''{str1}' 中出现了 {occurrence}")
# 对字符串进行排序
def sort_string_characters(input_str, ascending=True):
"""
对输入字符串中的字符进行排序(使用选择排序算法),并根据用户选择进行升序或降序排序。
参数:
input_str (str): 输入的字符串。
ascending (bool): 排序顺序标志True为升序False为降序默认为升序。
返回:
str: 字符排序后形成的新字符串。
"""
char_list = list(input_str) # 将字符串转换为字符列表
n = len(char_list)
for i in range(n):
# 根据ascending标志选择适当的比较逻辑
target_index = i
for j in range(i + 1, n):
if (ascending and char_list[target_index] > char_list[j]) or \
(not ascending and char_list[target_index] < char_list[j]):
target_index = j
# 交换元素
char_list[i], char_list[target_index] = char_list[target_index], char_list[i]
return ''.join(char_list)
# 示例用法
input_str = "hello"
sorted_str_asc = sort_string_characters(input_str, ascending=True) # 升序排序
sorted_str_desc = sort_string_characters(input_str, ascending=False) # 降序排序
print(f"{input_str} 升序排序后的字符串: {sorted_str_asc}")
print(f"{input_str} 降序排序后的字符串: {sorted_str_desc}")
# 在指定位置插入字符串
def insert_string_at_position(original_str, insert_str, position):
"""
在指定位置插入字符串。如果位置是负数,则从字符串末尾开始计数。
参数:
original_str (str): 原始字符串。
insert_str (str): 要插入的字符串。
position (int): 插入位置的索引,正数从前往后数,负数从后往前数。
返回:
str: 插入字符串后的新字符串。
"""
# 调整负数索引
if position < 0:
position = len(original_str) + position + 1
# 检查调整后的插入位置是否有效
if position < 0 or position > len(original_str):
return "插入位置无效"
# 在指定位置插入字符串
new_str = original_str[:position] + insert_str + original_str[position:]
return new_str
# 示例用法
original_str = "Hello World"
insert_str = "Python "
position = 6
new_str = insert_string_at_position(original_str, insert_str, position)
print(f"插入字符串后的结果: {new_str}")
# 统计子字符串在主字符串中出现的次数
def find_substring_occurrences(main_str, sub_str):
"""
手动计算一个字符串在另一个字符串中出现的次数。
参数:
main_str (str): 主字符串,将在此字符串中搜索子字符串。
sub_str (str): 子字符串,需要统计在主字符串中出现的次数。
返回:
int: 子字符串在主字符串中出现的次数。
"""
# 初始化计数器和起始索引
count = 0
start = 0
# 主字符串的长度和子字符串的长度
main_length = len(main_str)
sub_length = len(sub_str)
# 当子字符串的长度大于0时才进行搜索
if sub_length > 0:
# 遍历主字符串
while start <= main_length - sub_length:
# 找到子字符串的下一个匹配位置
position = main_str.find(sub_str, start)
# 如果没有找到,退出循环
if position == -1:
break
# 如果找到了,增加计数并更新起始索引
count += 1
start = position + 1 # 更新起始索引以查找重叠情况
return count
# 示例用法
main_str = "the quick brown fox jumps over the lazy dog, the dog was not amused."
sub_str = "the"
occurrences = find_substring_occurrences(main_str, sub_str)
print(f"'{sub_str}''{main_str}' 中出现了 {occurrences}")
# 删除主字符串中所有出现的子字符串
def remove_substring(original_str, remove_str):
"""
不使用replace方法从原始字符串中删除所有出现的指定子字符串。
参数:
original_str (str): 原始字符串。
remove_str (str): 需要在原始字符串中删除的子字符串。
返回:
str: 删除指定子字符串后的新字符串。
"""
# 检查删除的子字符串是否为空
if not remove_str:
return original_str
result_str = "" # 初始化结果字符串
i = 0
while i <= len(original_str) - len(remove_str):
# 检查当前位置的子字符串是否为需要删除的字符串
if original_str[i:i + len(remove_str)] == remove_str:
i += len(remove_str) # 跳过需要删除的字符串
else:
result_str += original_str[i] # 将当前字符添加到结果字符串
i += 1
# 添加剩余的字符
if i < len(original_str):
result_str += original_str[i:]
return result_str
# 示例用法
original_str = "Hello World, Hello Python!"
remove_str = "Hello "
result_str = remove_substring(original_str, remove_str)
print(f"删除'{remove_str}'后的字符串: {result_str}")
def replace_substring(original_str, target_str, replacement_str):
"""
在原始字符串中替换所有出现的目标子字符串为新的子字符串。
参数:
original_str (str): 原始字符串。
target_str (str): 需要被替换的目标子字符串。
replacement_str (str): 用于替换的新子字符串。
返回:
str: 替换指定子字符串后的新字符串。
"""
result_str = "" # 初始化结果字符串
i = 0
while i <= len(original_str) - len(target_str):
if original_str[i:i + len(target_str)] == target_str:
result_str += replacement_str # 添加新子字符串到结果字符串
i += len(target_str) # 跳过目标子字符串的长度
else:
result_str += original_str[i] # 将当前字符添加到结果字符串
i += 1
# 添加末尾剩余的字符
if i < len(original_str):
result_str += original_str[i:]
return result_str
# 示例用法
original_str = "I love programming in Python. Python is great!"
target_str = "Python"
replacement_str = "JavaScript"
result_str = replace_substring(original_str, target_str, replacement_str)
print(f"替换后的字符串: {result_str}")