学无止境

少年辛苦终身事,莫向光阴惰寸功。——唐·杜荀鹤《题弟侄书堂》


计算机存储单位与Python字符串操作详解

1. 计算机存储单位

1.1 基本存储单位

  1. 比特(bit):计算机存储的最小单位
  2. 字节(Byte):1 Byte = 8 bits

1.2 存储单位换算表

# 存储单位换算关系
storage_units = {
    "1 Byte": "8 bits",
    "1 KB": "1,024 Bytes = 2^10 Bytes",
    "1 MB": "1,024 KB = 2^20 Bytes",
    "1 GB": "1,024 MB = 2^30 Bytes",
    "1 TB": "1,024 GB = 2^40 Bytes",
    "1 PB": "1,024 TB = 2^50 Bytes",
    "1 EB": "1,024 PB = 2^60 Bytes",
    "1 ZB": "1,024 EB = 2^70 Bytes",
    "1 YB": "1,024 ZB = 2^80 Bytes",
    "1 BB": "1,024 YB = 2^90 Bytes",
    "1 NB": "1,024 BB = 2^100 Bytes",
    "1 DB": "1,024 NB = 2^110 Bytes"
}

1.3 数据传输速率

# 常见网络速率单位换算
def bandwidth_calculator(speed, unit='Mbps'):
    """计算不同单位的网络速率"""
    if unit == 'Mbps':
        return {
            'KB/s': speed * 1024 / 8,
            'MB/s': speed * 1024 / 8 / 1024,
            '实际速率': f"约 {speed * 0.7:.2f}Mbps (考虑30%网络损耗)"
        }

# 示例使用
print(bandwidth_calculator(100))  # 计算100Mbps的实际传输速率

1.4 Python中的对象大小计算

import sys

# 计算不同类型对象的大小
def show_object_size():
    objects = {
        'integer': 42,
        'string': "Hello",
        'list': [1, 2, 3],
        'dict': {'a': 1, 'b': 2}
    }
    
    for name, obj in objects.items():
        print(f"{name}: {sys.getsizeof(obj)} bytes")

show_object_size()

2. Python字符串操作

2.1 基本字符串操作

2.1.1 字符串长度

# 使用len()函数
text = "Hello, World!"
print(f"字符串长度: {len(text)}")  # 13

# 中文字符串
chinese_text = "你好,世界"
print(f"中文字符串长度: {len(chinese_text)}")  # 5

2.1.2 字符串格式化

# format()方法使用示例
# 1. 位置参数
print("{} {}".format("Hello", "World"))  # Hello World

# 2. 索引参数
print("{1} {0}".format("World", "Hello"))  # Hello World

# 3. 关键字参数
print("{greeting} {name}".format(greeting="Hello", name="World"))

# 4. f-string (Python 3.6+)
name = "World"
print(f"Hello {name}")

2.2 字符串切片操作

text = "Python Programming"

# 基本切片操作
print(text[0:6])      # Python
print(text[-11:])     # Programming
print(text[::2])      # Pto rgamn
print(text[::-1])     # gnimmargorP nohtyP

# 常用切片模式
def string_slicing_examples(text):
    examples = {
        '完整字符串': text[:],
        '前半部分': text[:len(text)//2],
        '后半部分': text[len(text)//2:],
        '隔一个取一个': text[::2],
        '反转': text[::-1]
    }
    return examples

2.3 字符串查找与替换

def string_search_examples():
    text = "Python Programming Language"
    
    # find方法
    print(f"'gram' 的位置: {text.find('gram')}")  # 8
    print(f"'Java' 的位置: {text.find('Java')}")  # -1
    
    # index方法
    try:
        position = text.index('gram')
        print(f"找到 'gram' 在位置: {position}")
    except ValueError as e:
        print(f"未找到指定字符串: {e}")
    
    # replace方法
    new_text = text.replace('Python', 'Java')
    print(f"替换后: {new_text}")

2.4 字符串分割与合并

def string_split_join_examples():
    # 分割示例
    text = "Python,Java,C++,JavaScript"
    
    # split
    languages = text.split(',')
    print(f"分割后的列表: {languages}")
    
    # partition
    before, sep, after = text.partition(',')
    print(f"分区结果: {before} | {sep} | {after}")
    
    # join
    new_text = ' -> '.join(languages)
    print(f"合并后: {new_text}")

2.5 字符串判断方法

def string_validation():
    tests = {
        'abc': str.isalpha,
        '123': str.isdigit,
        'abc123': str.isalnum,
        '   ': str.isspace,
        'Hello World': str.title
    }
    
    for text, test_func in tests.items():
        print(f"{text}: {test_func(text)}")

2.6 字符串修改和格式化

def string_modification():
    text = " Python Programming "
    
    # 去除空格
    print(f"左侧去空格: '{text.lstrip()}'")
    print(f"右侧去空格: '{text.rstrip()}'")
    print(f"两侧去空格: '{text.strip()}'")
    
    # 大小写转换
    print(f"全部大写: {text.upper()}")
    print(f"全部小写: {text.lower()}")
    print(f"首字母大写: {text.capitalize()}")
    print(f"标题格式: {text.title()}")