因此,使用我的代码生成一个数字/字母字符串时,它会在末尾生成一个额外的破折号,我希望它只包含16位数字和字母(没有额外的破折号)
import string, random
def generateCode():
code = ''
for i in xrange(16):
number = random.choice(string.ascii_letters + string.digits)
code += str(number)
if (i - 3) % 4 == 0 and i - 4:
code += '-'
file = open('AlphaKeys.txt', 'w')
file.write(code + '\n')
file.close()
return code
generateCode()
输出示例:qIss-wXbS-PZo7-audg-
当然,即使在最后一次迭代中,您也在添加破折号。你知道吗
无论如何,最具python风格的方法是:嵌套2
str.join
语句:举个例子:
内部压缩生成4个字母/数字序列,外部压缩将这些序列中的4个与
-
连接起来。你知道吗请注意,
join([..])
语法可能看起来很麻烦,但是比没有方括号(Joining strings. Generator or list comprehension?)要快编辑:注意你的数字/字母可以用
random.choice
重复。没有重复的更好方法是使用random.choice
,如下所示:迭代器会被使用,除非是时候发出破折号了。你知道吗
另一种选择,只有一个循环:
if
语句中的第二个条件没有任何意义。如果您在最后一次迭代中,您应该修改它,这样就不会添加-
:做出这样的改变给了我:
我是否可以建议您对当前使用^{} 的方法进行改进?你知道吗
请注意,
random.sample
不提供每次调用的替换,因此如果您需要,您将需要random.choice
。你知道吗如果你想用替换的随机性,你可以用^{} 替换
random.sample
,但只能从python3.6开始。你知道吗相关问题 更多 >
编程相关推荐