返回顶部
首页 > 资讯 > 后端开发 > Python >python函数和类
  • 425
分享到

python函数和类

函数python 2023-01-30 21:01:26 425人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

函数曾经有一句非常出名的话是 In Unix Everything Is A File,在unix中所有的一切都是文件在这里可以借鉴一下 In python Everything Is A Function,在Python程序中,所有的一切

函数

曾经有一句非常出名的话是 In Unix Everything Is A File,在unix中所有的一切都是文件

在这里可以借鉴一下 In python Everything Is A Function,在Python程序中,所有的一切都是函数,把所需的功能写成一个一个的函数,然后由函数调用函数,以此类推,最终完成整个程序的功能

记得之前提过暴力破解,不管用什么工具,暴力破解都少不了一个合适的字典,下面编写一个简单的程序makepassWordfilefunction.py,创建一个有针对性的专用密码字典

代码如下

coding: utf-8
__author__ = 'www.py3study.com'
import os
import platfORM
import itertools
import time

def main():
    '''主程序'''
    global rawlist #原始数据列表
    rawlist = []
    global denylist #非法单词列表
    denylist = [' ', '', '@']
    global pwlist #最终的密码列表
    pwlist = []
    global minlen #密码的最小长度
    minlen = 6
    global maxLen #密码的最大长度
    maxLen = 16
    global timeout
    timeout = 3
    global flag
    flag = 0
    run = {
        '0': exit, #退出
        '1': getrawlist, #创建原始列表
        '2': aDDDenylist, #添加不可能出现的元素
        '3': clearrawlist, #清空列表
        '4': setrawlist, #原始列表排序
        '5': modifypasswordlen, #修改最终的密码长度
        '6': createpasswordlist, #创建最终的字典列表
        '7': showpassword, #显示密码
        '8': createpassowrdfile, #创建密码文件
    }

    while True:
        mainMenu()
        op = input('输入选项:')
        if op in map(str, range(len(run))):
            run.get(op)()
        else:
            tipMainMenuInputError()
            continue

def mainMenu():
    '''主菜单'''
    global denylist
    global rawlist
    global pwlist
    global flag
    clear()
    print(u"||")
    print(u"="*40)
    print(u"|| 0:退出程序")
    print(u"|| 1:输入密码原始字符串")
    print(u"|| 2:添加非法字符串到列表")
    print(u"|| 3:清空原始密码列表")
    print(u"|| 4:整理原始密码列表")
    print(u"|| 5:改变默认密码长度({}-{})".format(minlen, maxLen))
    print(u"|| 6:创建密码列表")
    print(u"|| 7:显示所有密码")
    print(u"|| 8:创建字典文件")
    print(u"||")
    print(u"="*40)
    print(u"||")
    print(u"当前非法字符为:{}".format(denylist))
    print(u"当前原始密码元素为:{}".format(rawlist))
    print(u"共有密码{}个".format(len(pwlist)))
    if flag:
        print(u"已在当前目录创建密码文件dict.txt")
    else:
        print(u"尚未创建密码文件")

def clear():
    '''清屏函数'''
    OS = platform.system()
    if (OS == u'windows'):
        os.system('cls')
    else:
        os.system('clear')

def tipMainMenuInputError():
    '''错误提示'''
    clear()
    print(u"只能输入0-7的整数,等待{}秒后重新输入".format(timeout))
    time.sleep(timeout)

def getrawlist():
    '''获取原始数据列表'''
    clear()
    global denylist
    global rawlist
    print(u"输入回车后直接退出")
    print(u"当前的原始密码列表为:{}".format(rawlist))
    st = None
    while not st == '':
        st = input("请输入密码元素字符串:")
        if st in denylist:
            print(u"这个字符串是预先设定的非法字符串")
            continue
        else:
            rawlist.append(st)
            clear()
            print(u"输入回车后直接退出")
            print(u"当前原始密码列表为:{}".format(rawlist))

def adddenylist():
    '''添加非法词'''
    clear()
    global denylist
    print(u"输入回车后直接退出")
    print(u"当前非法字符为:{}".format(denylist))
    st = None
    while not st == '':
        st = input("请输入需要添加的非法字符串:")
        denylist.append(st)
        clear()
        print(u"输入回车后直接退出")
        print(u"当前原始密码列表为:{}".format(denylist))

def clearrawlist():
    '''清空原始数据列表'''
    global rawlist
    rawlist = []

def setrawlist():
    '''整理原始数据列表'''
    global rawlist
    global denylist
    a = set(rawlist)
    b = set(denylist)
    rawlist = []
    for str in set(a - b):
        rawlist.append(str)

def modifypasswordlen():
    '''修改默认密码长度'''
    clear()
    global maxLen
    global minlen
    while True:
        print(u"当前密码长度为{}-{}".format(minlen, maxLen))
        min = input("请输入密码最小长度:")
        max = input("请输入密码最大长度:")
        try:
            minlen = int(min)
            maxLen = int(max)
        except ValueError:
            print(u"密码长度只能输入数字[6-18]")
            break
        if minlen not in range(6,19) or maxLen not in range(6,19):
            print(u"密码长度只能输入数字[6-18]")
            minlen = 6
            maxLen = 16
            continue
        if minlen == maxLen:
            res = input(u"确定将密码长度设定为{}吗?(Yy/Nn)".format(minlen))
            if res not in list('yYnN'):
                print(u"输入错误,请重新输入")
                continue
            elif res in list('yY'):
                print(u"好吧,你确定就好")
                break
            else:
                print(u"给个机会,改一下吧")
                continue
        elif minlen > maxLen:
            print(u"最小长度比最大长度还大,可能吗?请重新输入")
            minlen = 6
            maxLen = 16
            continue
        else:
            print(u"设置完毕,等待{}秒后回主菜单".format(timeout))
            time.sleep(timeout)
            break

def createpasswordlist():
    '''创建密码列表'''
    global rawlist
    global pwlist
    global maxLen
    global minlen
    titlelist = []
    swapcaselist = []
    for st in rawlist:
        swapcaselist.append(st.swapcase())
        titlelist.append(st.title())
    sub1 = []
    sub2 = []
    for st in set(rawlist + titlelist + swapcaselist):
        sub1.append(st)
    for i in range(2,len(sub1) + 1):
        sub2 += list(itertools.permutations(sub1, i))
    for tup in sub2:
        PW = ''
        for subPW in tup:
            PW += subPW
        if len(PW) in range(minlen, maxLen + 1):
            pwlist.append(PW)
        else:
            pass

def showpassword():
    '''显示创建的密码'''
    global pwlist
    global timeout
    for i in range(len(pwlist)):
        if i % 4 == 0:
            print("{}".format(pwlist[i]))
        else:
            print("{}".format(pwlist[i]))
    print('\n')
    print(u"显示{}秒,回到主菜单".format(timeout))
    time.sleep(timeout)

def createpassowrdfile():
    '''创建密码文件'''
    global flag
    global pwlist
    print(u"当前目录下创建字典文件:dict.txt")
    time.sleep(timeout)
    with open('dict.txt', 'w') as fp:
        for PW in pwlist:
            fp.write(PW)
            fp.write('\n')
    flag = 1

if __name__ == '__main__':
    main()

应该看到的结果blob.png

该脚本将输入的元素根据一定的规则修改,添加后当作新元素添加到元素列表中去,最后将元素列表排列组合得到最后的字典列表

--结束END--

本文标题: python函数和类

本文链接: https://lsjlt.com/news/178879.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python函数和类
    函数曾经有一句非常出名的话是 In Unix Everything Is A File,在unix中所有的一切都是文件在这里可以借鉴一下 In Python Everything Is A Function,在python程序中,所有的一切...
    99+
    2023-01-30
    函数 python
  • python(函数指针和类函数指针)
    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】     函数指针和类函数指针在c语言下面的概念都比较简单,用在脚本下面也很方便。因为脚本语言一切类型都是对象,所以根本不存在指...
    99+
    2023-01-31
    指针 函数 python
  • python函数和类有什么区别
    python中函数与类的区别有以下几点规则不同类是一种引用数据类型,类似于byte、short、int(char)、long、float、double等基本数据类型;而函数必须声明后才可以被调用,调用格式为:函数名(实参)调用时函数名后的小...
    99+
    2024-04-02
  • PHP函数的类和对象函数
    PHP是一种广泛使用的服务器端脚本语言,它的广泛应用主要归功于它强大的函数库。这篇文章将介绍PHP中函数的类和对象函数。在PHP的函数库中,使用类是很常见的。类定义了的一个对象的所有属性和方法,这使得代码更加结构化和组织化。在PHP中,一个...
    99+
    2023-05-18
    PHP函数 对象函数
  • python fire怎么在函数和类中应用
    小编给大家分享一下python fire怎么在函数和类中应用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python是什么意思Python是一种跨平台的、具有解...
    99+
    2023-06-14
  • Python转换数据类型函数和转换数据类型的作用
    目录一、转换数据类型的作用(必要性)二、转换数据类型的函数三、快速体验数据类型转换前言: 学习Python的转换数据类型前期主要学习目标有两个,一是数据类型转换的必要性,二是数据类型...
    99+
    2024-04-02
  • 浅谈Python类里的__init__方法函数,Python类的构造函数
    如果某类里没有__init__方法函数,通过类名字创建的实例对象为空,切没有初始化;如果有此方法函数,通常作为类的第一个方法函数,有点像C++等语言里的构造函数。 class Ca: def __ini...
    99+
    2022-06-04
    函数 浅谈 方法
  • Python零基础入门(九)——函数,类和对象
    系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟...
    99+
    2023-08-31
    python pycharm 人工智能 开发语言
  • python函数和python匿名函数lambda详解
    目录1. python函数1.1 函数的作用1.2 函数定义1.3 函数调用1.4 函数的参数1.4.1 参数的传递1.4.2 参数类型1.4.2.1 位置参数(必备参数)1.4.2...
    99+
    2024-04-02
  • python函数有哪些类型
    python中函数的类型有以下四种无参数,无返回值无参数,无返回值函数,不能接收参数,也没有返回值,一般用于打印提示等类似的功能。无参数,有返回值无参数,有返回值函数,不能接收参数,但是可以返回某个数据,一般用于采集数据等场景。有参数,无返...
    99+
    2024-04-02
  • 简析Python函数式编程字符串和元组及函数分类与高阶函数
    目录函数式编程中的字符串不变类型元组普通元组的声明与访问函数式的分类any() 、all() 、len()、sum() 对比学习zip()、reversed()、enumerate(...
    99+
    2024-04-02
  • python中multiprosessing模块的Pool类中的apply函数和apply_async函数的区别
    目录1、二者的区别2、apply()3、apply_async()1、二者的区别 apply():  非异步(子进程不是同时执行的),堵塞主进程。它的非异步体现在:一个一个...
    99+
    2024-04-02
  • Python中的any()函数和all()函数
    目录Python 中的布尔数据类型如何在 Python 中使用 any() 函数如何用any() 函数检查字符串中的数字如何用any()函数检查字符串中的字母如何用any()函数将多...
    99+
    2024-04-02
  • Python转换数据类型函数和转换数据类型的作用是什么
    这篇文章给大家分享的是有关Python转换数据类型函数和转换数据类型的作用是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、转换数据类型的作用(必要性)先用一个问题来讲解一下为什么要学习转换数据类型?问题:...
    99+
    2023-06-29
  • Python函数: any()和all(
    版权声明:本文为博主原创文章,未经允许不得转载 引子 平常的文本处理工作中,我经常会遇到这么一种情况:用python判断一个string是否包含一个list里的元素。 这时候使用python的内置函数any()会非常的简洁: fruit...
    99+
    2023-01-30
    函数 Python
  • Java Math类中取整函数、三角函数和指数函数方法
    这篇文章主要讲解了“Java Math类中取整函数、三角函数和指数函数方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java Math类中取整函数、三角...
    99+
    2024-04-02
  • Python类的高级函数详解
    __str__函数 如果定义了该函数,当print当前实例化对象的时候,会返回该函数的return信息 可用于定义当前类的描述信息 用法: def _...
    99+
    2024-04-02
  • python如何判断函数类型
    在python中使用isinstance函数判断函数的类型,具体方法如下:class Person(object):def __init__(self, name, gender):self.name = nameself.gender =...
    99+
    2024-04-02
  • PHP 函数的分类和用途
    php 函数按用途分类,包括:字符串处理、数组处理、数学运算、文件系统操作、日期和时间处理。实战示例演示了如何使用 preg_replace() 函数从字符串中过滤数字。 PHP 函数...
    99+
    2024-04-13
    函数 php
  • C++ 函数的类型和特性
    c++++ 函数有以下类型:简单函数、const 函数、静态函数、虚函数;特性包括:inline 函数、默认参数、引用返回、重载函数。例如,calculatearea 函数使用 π 计算...
    99+
    2024-04-11
    函数 c++ 类型 特性
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作