我宁愿不改变我已经写过的当前代码,尽管它可能效率很低或者其他什么。
import string
import random
prompt=raw_input("Name")
print "Code:",prompt
a=string.ascii_letters+string.digits+string.digits
trip='!%s%s%s%s%s%s%s%s%s%s' % (random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a),random.choice(a))
print trip
我想要做的是制作一个tripcode生成器,以便我编写的这个程序在输出中生成一个始终与输入一致的代码。因此,每当有人在提示中键入单词时,他们将始终获得相同的随机生成的代码。
因此,如果有人在输入中键入“python”,输出将始终为!gT3rF39hjj或一些随机生成的tripcode。
很抱歉,如果我不清楚的话。
答案 0 :(得分:2)
使用哈希或HMAC怎么样?
例如:
import base64
import hmac
import hashlib
prompt = raw_input('Name')
print 'Code:',prompt
trip = base64.b64encode(hmac.new('somekey', prompt, hashlib.sha1).digest())
print trip
只要密钥保密,输出就不可预测。
答案 1 :(得分:1)
糟糕!我的第一个答案非常愚蠢 - 每次传递名称时都会给出相同的答案,但这只是因为它每次都返回相同的代码 。相反,我们可以根据名称设置种子(请参阅文档here)。例如:
prompt=raw_input("Name")
random.seed(prompt)
产生
~/coding$ python tripcode.py
NameFred
Code: Fred
!yjmjKnTwC8
~/coding$ python tripcode.py
NameFred
Code: Fred
!yjmjKnTwC8
~/coding$ python tripcode.py
NameBob
Code: Bob
!C7im8B12jo
[BTW,prompt
会更好地命名为name
,不是吗?]
答案 2 :(得分:1)
您可以使用hashlib
为用户输入的数据生成几乎唯一的摘要。
import hashlib
name = raw_input("Name: ")
trip = hashlib.md5(name).hexdigest()
print trip
结果:
C:\programs>get_trip.py
Name: Kevin
f1cd318e412b5f7226e5f377a9544ff7
C:\programs>get_trip.py
Name: George
578ad8e10dc4edb52ff2bd4ec9bc93a3
C:\programs>get_trip.py
Name: Kevin
f1cd318e412b5f7226e5f377a9544ff7