Python训练(1)

打印 上一主题 下一主题

主题 826|帖子 826|积分 2478

一:英笔墨符频率统计。编写一个步调,对给定字符串中出现的a到z字母频率进行分析,忽略大小写采用降序方式输出
from collections import Counter
import string
def analyze_frequency(input_string):
    # 将字符串转换为小写以忽略大小写
    input_string = input_string.lower()
    
    # 过滤出仅包罗a-z字母的字符串
    filtered_string = ''.join(filter(str.isalpha,一 input_string))
    
    # 使用Counter来统计字符频率
    frequency_counter = Counter(filtered_string)
    
    # 仅保留a-z字母的频率,并排序(降序)
    sorted_frequency = sorted(frequency_counter.items(), key=lambda item: item[1], reverse=True)
    
    # 输出效果
    for char, freq in sorted_frequency:
        print(f"{char}: {freq}")
# 获取用户输入的字符串
input_string = input("请输入一串字符串: ")
# 调用函数进行分析
analyze_frequency(input_string)

  • from collections import Counter:从 collections 模块导入 Counter 类。Counter 是一个字典子类,用于计数可哈希对象。
  • import string:导入 string 模块,但在此代码中实际上并未使用到 string 模块的内容。假如您打算使用 string.ascii_lowercase 来代替手动指定小写字母范围,那么应该移除对 string 模块的导入注释。
  • 定义 analyze_frequency 函数,它接受一个参数 input_string。
  • input_string = input_string.lower():将输入字符串转换为小写,以确保分析时不区分大小写。
  • filtered_string = ''.join(filter(str.isalpha, input_string)):使用 filter 函数和 str.isalpha 方法过滤出字符串中的字母字符,然后使用 join 方法将它们连接成一个新的字符串。
  • frequency_counter = Counter(filtered_string):使用 Counter 类对过滤后的字符串进行计数,得到每个字母的频率。
  • sorted_frequency = sorted(frequency_counter.items(), key=lambda item: item[1], reverse=True):将 Counter 对象的项(即字母和频率的元组)按频率(即元组的第二个元素)进行降序排序。这里使用了 sorted 函数和 lambda 函数作为 key 参数,以指定排序的依据。
二、随机密码生成。编写一个步调在26个字母大小写和9个数字构成的列表中随机生成10个八位密码:
import random
import string
 
def generate_passwords(num_passwords, password_length):
    # 创建包罗大小写字母和数字的字符集
    characters = string.ascii_letters + string.digits
    
    passwords = []
    for _ in range(num_passwords):
        # 从字符集中随机选择字符构成密码
        password = ''.join(random.choice(characters) for _ in range(password_length))
        passwords.append(password)
    
    return passwords
 
# 生成10个八位密码
num_passwords = 10
password_length = 8
passwords = generate_passwords(num_passwords, password_length)
 
# 打印生成的密码
for i, password in enumerate(passwords, start=1):
    print(f"assword {i}: {password}")
 

  • import random:导入random模块,用于生成随机数。
  • import string:导入string模块,该模块包罗一组常用的字符串常量。
  •  
  1.  
复制代码
python复制代码
 def generate_passwords(num_passwords, password_length):
定义一个名为generate_passwords的函数,该函数接受两个参数:num_passwords(要生成的密码数目)和password_length(每个密码的长度)。
4.
  1.  
复制代码
python复制代码
 characters = string.ascii_letters + string.digits
在函数内部,创建一个名为characters的字符串,它包罗所有大小写字母(string.ascii_letters)和数字(string.digits)。
5.
  1.  
复制代码
python复制代码
 passwords = []
初始化一个空列表passwords,用于存储生成的密码。
6.
  1.  
复制代码
python复制代码
 for _ in range(num_passwords):
使用for循环来迭代指定次数(即要生成的密码数目)。
7.
  1.  
复制代码
python复制代码
 password = ''.join(random.choice(characters) for _ in range(password_length))
在循环体内,使用列表生成式和random.choice(characters)来生成一个由随机字符构成的字符串,该字符串的长度由password_length参数指定。然后,使用join方法将这个字符列表转换成一个字符串。
8.
  1.  
复制代码
python复制代码
 passwords.append(password)
将生成的密码添加到passwords列表中。
9.
  1.  
复制代码
python复制代码
 return passwords
函数返回包罗所有生成密码的列表。
10.
  1.  
复制代码
python复制代码
 num_passwords = 10
 password_length = 8
设置要生成的密码数目和每个密码的长度。
11.
  1.  
复制代码
python复制代码
 passwords = generate_passwords(num_passwords, password_length)
调用generate_passwords函数,并将返回的密码列表赋值给变量passwords。
12.
  1.  
复制代码
python复制代码
 for i, password in enumerate(passwords, start=1):
 print(f"assword {i}: {password}")
使用enumerate函数和for循环来迭代passwords列表,并打印每个密码。enumerate函数的start参数设置为1,以便密码编号从1开始。
 
补:enumerate(iterable, start=0)
iterable:一个可以遍历的对象,如列表、元组、字符串等。
start:索引的起始值,默认为 0。
enumerate() 函数返回一个枚举对象,该对象生成由 (index, value) 对构成的迭代器,此中 index 是从 start 开始的索引(默认为 0),value 是从 iterable 中获取的值。
 
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

愛在花開的季節

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表