Python练习(1)

server/2024/12/2 10:23:49/

一:英文字符频率统计。编写一个程序,对给定字符串中出现的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)

  1. from collections import Counter:从 collections 模块导入 Counter 类。Counter 是一个字典子类,用于计数可哈希对象。

  2. import string:导入 string 模块,但在此代码中实际上并未使用到 string 模块的内容。如果您打算使用 string.ascii_lowercase 来代替手动指定小写字母范围,那么应该移除对 string 模块的导入注释。

  3. 定义 analyze_frequency 函数,它接受一个参数 input_string

  4. input_string = input_string.lower():将输入字符串转换为小写,以确保分析时不区分大小写。

  5. filtered_string = ''.join(filter(str.isalpha, input_string)):使用 filter 函数和 str.isalpha 方法过滤出字符串中的字母字符,然后使用 join 方法将它们连接成一个新的字符串。

  6. frequency_counter = Counter(filtered_string):使用 Counter 类对过滤后的字符串进行计数,得到每个字母的频率。

  7. 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"Password {i}: {password}")

 

  1. import random:导入random模块,用于生成随机数。
  2. import string:导入string模块,该模块包含一组常用的字符串常量。
  3.  
 

python复制代码

 def generate_passwords(num_passwords, password_length):

定义一个名为generate_passwords的函数,该函数接受两个参数:num_passwords(要生成的密码数量)和password_length(每个密码的长度)。
4.

 

python复制代码

 characters = string.ascii_letters + string.digits

在函数内部,创建一个名为characters的字符串,它包含所有大小写字母(string.ascii_letters)和数字(string.digits)。
5.

 

python复制代码

 passwords = []

初始化一个空列表passwords,用于存储生成的密码。
6.

 

python复制代码

 for _ in range(num_passwords):

使用for循环来迭代指定次数(即要生成的密码数量)。
7.

 

python复制代码

 password = ''.join(random.choice(characters) for _ in range(password_length))

在循环体内,使用列表生成式和random.choice(characters)来生成一个由随机字符组成的字符串,该字符串的长度由password_length参数指定。然后,使用join方法将这个字符列表转换成一个字符串。
8.

 

python复制代码

 passwords.append(password)

将生成的密码添加到passwords列表中。
9.

 

python复制代码

 return passwords

函数返回包含所有生成密码的列表。
10.

 

python复制代码

 num_passwords = 10
 password_length = 8

设置要生成的密码数量和每个密码的长度。
11.

 

python复制代码

 passwords = generate_passwords(num_passwords, password_length)

调用generate_passwords函数,并将返回的密码列表赋值给变量passwords
12.

 

python复制代码

 for i, password in enumerate(passwords, start=1):
 print(f"Password {i}: {password}")

使用enumerate函数和for循环来迭代passwords列表,并打印每个密码。enumerate函数的start参数设置为1,以便密码编号从1开始。

 

补:enumerate(iterable, start=0)

iterable:一个可以遍历的对象,如列表、元组、字符串等。

start:索引的起始值,默认为 0。

enumerate() 函数返回一个枚举对象,该对象生成由 (index, value) 对组成的迭代器,其中 index 是从 start 开始的索引(默认为 0),value 是从 iterable 中获取的值。

 

 

 


http://www.ppmy.cn/server/146686.html

相关文章

Oracle 数据库执行增删改查命令的原理与过程

摘要: 本文深入探讨当向 Oracle 数据库发送一个增删改查(CRUD)命令时,数据库内部的执行机制与详细过程。从用户发起命令开始,逐步剖析命令在 Oracle 数据库体系结构各组件中的流转、解析、优化以及执行路径&#xff0c…

Samba服务器常见问题处理

指定的网络文件夹目前是以其他用户名和密码进行映射的。要用其他用户名和密码进行连接,首先请断开所有现有的连接到网络共享的映射 解决方案 单击“开始”菜单,选择“运行…”。 在弹出的窗口中,输入cmd 进入命令行模式,并输入…

vue学习11.27

监视属性 watch: { isHot:{ handler(){ } } } handler当isHot发生改变时调用。 watch: {isHot: {handler(newValue, oldValue) {console.log(修改了, newValue, oldValue);}}} 有什么用吗:例如new和oldvalue差值过大,本例子就意味着温差过大&…

六、Python —— 函数

文章目录 一、函数基础1.1、编写函数1.2、调用函数1.3、形参和实参1.3.1、形参的初始化方式1.3.2、带默认值的形参 1.4、变量的作用域1.5、嵌套定义函数1.6、pass 语句 二、参数传递2.1、值传递2.2、引用传递 三、return 语句四、lambda 表达式五、函数递归 一、函数基础 Pytho…

Linux下如何安装JDK

在Linux系统上安装JDK(Java Development Kit),通常包括下面步骤: 下载JDK安装包解压安装包配置环境变量等 在介绍安装之前,先厘清一些常用问题。 Linux 下Java 安装到哪个目录比较好? 在Linux系统下&am…

Burp入门(3)-爬虫功能介绍

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址:burp功能介绍(1)_哔哩哔哩_bilibili 本文介绍burp的主动爬虫和被动爬虫功能。 一、主动爬虫 工作原理: 主动…

List集合的进一步学习:性能优化

|| 持续分享系列教程,关注一下不迷路 || || B站视频教程:墨轩大楼 || || 知识星球:墨轩编程自习室 || 在Java集合框架中,选择合适的集合类型和使用正确的操作…

聊聊Flink:这次把Flink的触发器(Trigger)、移除器(Evictor)讲透

一、触发器(Trigger) Trigger 决定了一个窗口(由 window assigner 定义)何时可以被 window function 处理。 每个 WindowAssigner 都有一个默认的 Trigger。 如果默认 trigger 无法满足你的需要,你可以在 trigger(…) 调用中指定自定义的 tr…