上次做的随机生成字符串的代码,稍微显得有点简陋,参见上文:
Python_001_根据指定字符生成序列随机字符串
这次做了一个修改版本,此版本比上次的多了一些验证同时加入了很多验证的基准类型。
import random
welcom = '欢迎您使用本软件,本程序的作用是根据用户输入的条件生成指定长度指定数量的随机数'
author = '作者:格子工作室'
email = '邮箱:[email protected]'
version = '版本:V 1.0.0'
bar = '='*20
br = '\n'
#书写欢迎信息、作者信息、邮箱、版本等资料
print(bar*4 + br)
print(welcom)
print(author)
print(email)
print(version)
print(br + bar*4)
print(br)
#定义用户输入组合
#单纯数字 0 - 9
type_num = ['0','1','2','3','4','5','6','7','8','9']
#小写字母 a - z
type_lowwer_words = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
#大写字母 A - Z
type_upper_words = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
#单纯数字 + 小写字母
type_num_lowwer = type_num + type_lowwer_words
#单纯数字 + 大写字母
type_num_upper = type_num + type_upper_words
#小写字母 + 大写字母
type_lowwer_upper = type_lowwer_words + type_upper_words
#数字 + 小写字母 + 大写字母
type_all = type_num + type_lowwer_words + type_upper_words
#根据获取 用户 给定的数值,得到随机数组合的结果
def get_random_type():
print('请根据您的需求对需要生成的数码组合进行选择!')
print('输入 1 :仅用数字')
print('输入 2 :仅用小写字母')
print('输入 3 :仅用大写字母')
print('输入 4 :用数字 + 小写字母')
print('输入 5 :用数字 + 大写字母')
print('输入 6 :用小写字母 + 大写字母')
print('输入 7 :用数字 + 小写字母 + 大写字母')
get_userType = input('请输入您的选择:')
if get_userType.isdigit():
global user_Type
#获取到的数值仍然为Str
if get_userType == '1' :
user_Type = type_num
elif get_userType == '2' :
user_Type = type_lowwer_words
elif get_userType == '3' :
user_Type = type_upper_words
elif get_userType == '4' :
user_Type = type_num + type_lowwer_words
elif get_userType == '5' :
user_Type = type_num + type_upper_words
elif get_userType == '6' :
user_Type = type_lowwer_upper
elif get_userType == '7' :
user_Type = type_all
else:
print(bar)
print(br)
print('请输入正确的选择,选择范围 1-6')
print(br)
get_random_type()
else:
print(bar)
print(br)
print('输入错误:请输入正确的选择,选择范围 1-6')
print(br)
get_random_type()
#调用函数取得用户输入资料
get_random_type()
def get_random_Len():
get_Len = input('请输入您需要生成的随机数码的长度: 例如 : 20 ' + br)
if get_Len.isdigit():
return get_Len
else:
print(bar)
print(br)
print('输入错误:请输入正确的选择')
print(br)
get_random_Len()
#获取用户输入的要生成的随机数码长度
Enter_Len = int(get_random_Len())
#获取用户输入的需要生成的随机数码数量
def get_num():
get_num_line = input('请输入您需要生成的随机数码的数量:')
if get_num_line.isdigit():
return get_num_line
else:
print(bar)
print(br)
print('输入错误,请输入正确的随机数码数量!')
print(br)
get_num()
#获取需要生成的随机数码的数量
get_nums = int(get_num())
if (len(user_Type) / Enter_Len) >= 1 :
print('正在处理,请稍等!')
print('处理完成后,您可以打开软件所在目录下寻找 Random_list.txt 文件 。 ')
print('请注意:如果要重新生成,请将目录下的 Random_list.txt 文件删除,以免造成数据混乱。 ')
for random_x in range(0,get_nums):
#随机数生成数码
random_line = str(random.sample(user_Type,Enter_Len)).replace(',','').replace('\'','').replace(' ','').replace('[','').replace(']','')
f = open('Random_list.txt','a')
f.write(random_line + br)
f.close()
else:
print('单次数量不满足数量,现将数值 * 2 ')
#这是未知解决方法的情况下,暂时的折衷办法,实在脑子不好用,想不出来
for random_x in range(0,get_nums):
#随机数生成数码
random_line = str(random.sample(user_Type*2,Enter_Len)).replace(',','').replace('\'','').replace(' ','').replace('[','').replace(']','')
f = open('Random_list.txt','a')
f.write(random_line + br)
f.close()
print('处理完成,程序执行退出操作!')