Python 编程1000例(12):统计字符、用户登录系统、不重复的随机数

Python 编程1000例(12):统计字符、用户登录系统、不重复的随机数
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

本系列文章通过 1000(一篇文章表示 1 个实例) 个实例 ,为读者提供较为详细的练习题目,以便读者举一反三,深度学习。本系列的文章涉及到 Python 知识点包括:Python 语言基础、运算符和表达式、语句和程序结构、列表和元组、字典和集合、字符串、正则表达式、函数、面向对象编程、模块和包、异常处理和程序调试、文件和目录操作、数据库编程、界面编程、网络编程、WEB 编程、进程和线程、网络爬虫、游戏编程等知识点,由易到难,由浅入深,一步步打下坚实的编程基础。

本系列文章涉及的算法包括搜索、回溯、递归、排序、迭代、贪心、分治和动态规划等,涉及的数据结构包括字符串、列表、指针、区间、队列、矩阵、堆栈、链表、哈希表、线段树、二叉树、二叉搜索树和图结构等。

本系列文章是笔者为适应当前教育改革的创新要求,更好地践行语言类课程,满足实践教学与创新能力培养的需要,阅读大量书籍、各大互联网公司的面试算法、LintCode、LeetCode、九章算法和结合笔者近几年项目经验编写的系列文章,精选了 1000 个趣味性、实用性强的应用实例,从不同难度、不同算法、不同类型和不同数据结构等方面,将实际算法进行总结,希望为 Python 编程人员抛砖引玉。由于笔者经验与水平有限,博文中疏漏及不妥之处在所难免,衷心地希望各位读者在评论区多提宝贵意见及具体的修改建议,以便笔者进一步修改和完善。

一、统计字符

需求:设计一个字符串,利用字典的方法统计出每个字符出现的次数。案例演示效果如下:

示例代码如下:

# -*- coding: UTF-8 -*-
""" @author:AmoXiang @file:25.统计字符.py @time:2021/01/30 """

test_str = "hello docker"  # 定义字符串
test_str = test_str.replace(" ", "")  # 去除字符串中的空格
dic = dict()  # 定义空字典
for char in test_str:  # 遍历字符串
    if char in dic:  # 字典有这个key
        dic[char] += 1  # 该字符的值自增
    else:  # 字典没有该字符
        dic[char] = 1  # 初始化字符值

for key, value in dic.items():  # 遍历字典
    print(key, value)  # 打印结果

二、用户登录系统

需求:创建一个字典对象,用来保存用户名和密码,通过接收用户输入的用户名,判断该用户是否存在。如果不存在,则提示创建用户;如果存在,则提示输入密码。当密码输入正确时,显示登录系统;当密码输入不正确时,提示还有几次机会。案例演示效果如下:
在这里插入图片描述
示例代码如下:

# -*- coding: UTF-8 -*-
""" @author:AmoXiang @file:27.用户登录系统.py @time:2021/01/30 """

users = {
   "张三": "123456", "李四": "111111", "王五": "234567"}  # 用户字典,保存用户名和密码
count = 2  # 输入密码的次数
while True:  # 循环使用系统
    print("*" * 40)
    name = input("欢迎登陆系统! \n请输入用户名:")  # 接收用户名
    if name in users:  # 用户是否存在
        while count >= 0:  # 3次输入密码机会
            password = input("请输入密码:").strip()  # 接收密码
            if users[name] == password:  # 密码正确
                print("登录成功!")
                break
            else:
                print(f"密码输入错误!你还有{count}次机会")  # 剩余密码次数
                count -= 1  # 密码次数-1
        else:
            print("您的次数已经用完!再见!")
        break  # 密码次数用完或成功退出系统
    else:
        flag = input("用户名不存在!\n是否创建用户[y/n]:").strip()  # 是否创建用户
        if flag == "y":  # 创建用户
            while True:  # 用户创建失败时,执行循环
                name = input("请创建用户名:").strip()  # 接收用户名
                if name in users:  # 创建用户已存在
                    print("用户已存在!")
                else:
                    password = input("请设置密码:").strip()
                    re_password = input("请确认密码:").strip()
                    if password == re_password:  # 两次密码输入正确
                        users[name] = password  # 添加用户信息
                        print("用户创建成功!")
                        break  # 成功创建,退出创建循环
                    else:
                        print("两次密码输入不一致!")
        else:  # 不创建用户
            print("欢迎再次使用系统!再见!")
            break

三、不重复的随机数

需求:输入想要获得不重复随机数的个数和随机数的范围,输出该随机数生成的集合。案例演示效果如下图所示:
在这里插入图片描述
示例代码如下:

# -*- coding: UTF-8 -*-
""" @author:AmoXiang @file:26.不重复的随机数.py @time:2021/01/30 """

import random  # 导入随机模块

max_num = int(input("请输入随机数的范围:").strip())  # 数值范围
num = int(input("请输入随机数的个数:").strip())  # 随机数个数
e_set = set()  # 定义空集合
while len(e_set) < num:  # 循环生成随机数
    temp_num = random.randint(1, max_num)  # 生成范围内的随机数
    e_set.add(temp_num)  # 将不重复的随机数添加到集合中
print(e_set)  # 打印集合

感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!


在这里插入图片描述

    好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
    如果我的博客对你有帮助、如果你喜欢我的博客内容,请 点赞评论收藏 一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
 编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

本文来源Amo Xiang,经授权后由javajgs_com发布,观点不代表Java架构师必看的立场,转载请联系原作者。

发表评论