专栏首页地方网络工作室的专栏Python3 初学实践案例(1)按条件生成复杂密码

Python3 初学实践案例(1)按条件生成复杂密码

Python3 初学实践案例(1)按条件生成复杂密码

最近事情太多,golang 学的东西忘记得差不多了。想想不如学习一下 python 吧~,反正我是一前端,学任何一门后端语言都是有助于自己的学习的。

最关键的事情是 golang 把我搞得头疼。里面的语法倒是不复杂,但是各种关键词和 js 差异太大,而 pythonjs 相比来说比较接近。

更关键的是,这是一个脚本语言,这点和 js 一样,不需要编译一下再跑的感觉还是蛮好的。

看了一些基础的入门文档,我决定写一个我用 nodejsgolangbash shell 都写过的一个程序,生成复杂密码的脚本。

生成复杂密码 python 脚本

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import random
import sys

pwLen = 8
if len(sys.argv) > 2:
    print('参数错误')
    sys.exit(0)

if len(sys.argv) == 2:
    if not sys.argv[1].isdigit():
        print('参数不是数字')
        sys.exit(0)
    pwLen = int(sys.argv[1])

chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789"

res = ''
for i in range(pwLen):
    res += chars[random.randint(0,54)]

print(res)

生成复杂密码 python 代码解析

首先是开头的两行注释,这里规定了我的脚本用 python3 执行。另外,我的脚本的编码是 utf-8

目前还没有做项目,都是在 shell 里面跑着玩儿的。所以这样就还好。

生成随机数

需要使用库 random 用这个库生成随机数比较简单

import random
random.randint(0,54)

如上代码,就是生成一个 0 到 54 之间的随机数

获取命令行参数

因为要和系统交互,所以需要使用 sys 这个库。

import sys

获取系统参数 sys.argv 即可获取,这得到的是一个数组(python中称之为列表),其中第一个参数就是这个 python 文件本身。

可以使用 len(sys.argv) 来获得参数的长度。也就是说 len() 方法是获取数组长度的函数。

读取数组中的内容的方法和 js 类似。比如读取第二个内容,为 sys.argv[1] 这样。

判断一个字符串是否为数字

由于从命令行中拿到的所有参数都是字符串,所以如果我的参数是数字,但系统里输出依然为字符串。

我需要判断命令行中的输入是否正确,所以需要判断这个字符串是否为数字。方法如下:

str = '0'
str.isdigit()

如上,如果一个字符串是数字,则会返回 True 否则,就会返回 False

这里需要注意的是,python 下面,布尔值的首字母是大写的,这和 js 可是不一样。

将字符串转换为数字

先要判断字符串是否为数字,如果不是数字的话,会直接报错。

转换也非常简单 int(str) 就可以转换了。

顺便提一下,啥都能转成字符串。str(xxx) 即可。

退出程序

当遇到一个条件,需要终止程序的时候,我们可以执行 sys.exit(0) 就可以终止程序。

循环数字

我一开始以为循环数字可以直接 for i in 5: 这样循环的。没想到直接被打脸。

循环数字需要加上一个 range 方法 for i in range(5) 这样来进行循环。

range 可以接收两个值,第一个是开始的数字,第二个是结束的数字,比如 range(1,4),如果只填写了一个数字,那么就默认从 0 开始。很好理解。

输出内容

shell 中,输出是 echo,而在 python 中,输出是 print()

其他小结

不需要写花括号,如果是在 css 中我有点想死的感觉。但是习惯了 python 感觉还是蛮好的。说不定,我以后就不用 scss 而用 sass 啦,哈哈~

但是要写 : 号,老是忘记写这个破玩意儿,导致程序出错。哎~

总体而言,python 是一个比较好玩的语言。以后再学习 golang 吧。我决定先把这个语言给研究到一定的水平。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux\mac 日常入门命令行使用——搜索文件\文件夹

    linux\mac 日常入门命令行使用——搜索文件\文件夹 搜索文件或者文件夹,是一个常见的需求。我们可以用多种命令来实现我们的需求。 find 命令实现搜索 ...

    FungLeo
  • Vue2+VueRouter2+webpack+Axios 构建项目实战(七)重构API文件为使用axios

    Vue2+VueRouter2+webpack+Axios 构建项目实战(七)重构API文件为使用axios 2017年8月补充 2016年,我写了一系列的 V...

    FungLeo
  • Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(九)再把内容页面渲染出来

    Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(九)再把内容页面渲染出来 前情回顾 在上一篇博文《Vue2+VueRou...

    FungLeo
  • 论文复现前奏篇:漫漫长路之Caffe-C3D

    0.导语1.Caffe源码编译1.0 NVIDIA与Anaconda31.1 GCC与G++降级1.2 cuda 9.01.3 cuDNN1.4 caffe-g...

    公众号guangcity
  • linux+python+django环境搭建+建立服务

    最近自己在搞linux+python+django服务简单的整理下自己得环境搭建与建立服务,启动服务,

    测试小兵
  • python默认编码设置

    在python安装目录下的Lib/site-packages文件夹下新建sitecustomize.py,内容为

    李拜六不开鑫
  • 六步教你如何用PADS进行PCB设计?

      在使用PADS进行PCB设计的过程中,需要对印制板的设计流程以及相关的注意事项进行重点关注,这样才能更好的为工作组中的设计人员提供系统的设计规范,同时也方便...

    用户6754675
  • Python微信后台开发--环境搭建与接入指南

    0x00 背景及介绍 申请一个微信公众平台订阅号,将后台接入到服务器上,验证服务器地址的有效性,实现简单的业务逻辑,根据用户发送不同类型的消息做出不同的反应。 ...

    小小科
  • 浅入深出Vue:数据绑定

    上一篇我们使用了简单的数据渲染,那么如果说我们想要动态渲染标签的 class 可以这么操作么?

    若羽
  • Python 3.x中的编码和解码问题

    最近在极客学院学习爬虫,老师用的是2.x版本,而我电脑里的版本是3.x,于是在网页上查找在输出中文时如何正确输出。 我原以为2.x 3.x在很多语法上没什么...

    py3study

扫码关注云+社区

领取腾讯云代金券