我试图用python创建一个串行生成器,当我生成一个数字时,它被分配给一个变量。现在序列号有数字和字母。我使用变量来存储每个字符,最后我将它们组合成一个序列。到目前为止,我得到了所有的数字,所以我为字母点设置了一个更高的范围。我想从字典中调用这个号码,使用我已经拥有的变量和归属于它的号码。你知道吗
我已经试过用这个变量打印dictionary变量,但它会引发一个错误。你知道吗
我使用以下代码:
# ironkeys serial gen prototype 1.0 - python 3.7 | 6 character (alternate
# characters)
import random
v1 = 0
v2 = 0
v3 = 0
v4 = 0
v5 = 0
v6 = 0
d = {10: "A",11: "B",12: "C",13: "D",14: "E",15: "F",16: "G",17: "H",18:
"I",19: "J",20: "K",21: "L",22: "M",22: "N",23: "O",24: "P",24: "Q",25:
"R",26: "S",27: "T",28: "U",29: "V",30: "W",31: "X",32: "Y",32: "Z"}
def gen():
v1 = random.randint(0,9)
v2 = random.randint(10,33)
v3 = random.randint(0,9)
v4 = random.randint(10,33)
v5 = random.randint(0,9)
v6 = random.randint(10,33)
def letterAssignAndPrint(v2, v4, v6):
checkVar1 = d[v2]
checkVar2 = d[v4]
checkVar3 = d[v6]
print(v1, checkVar1, v3, checkVar2, v5, checkVar3)
尝试运行上述代码时发生以下错误:
Traceback (most recent call last)
<ipython-input-24-d45f5b5c2e55> in <module>
----> 1 print(d[v2])
KeyError: 0
为什么不这样做:
string.digits = "0123456789"
(参见string constants);并且^{在您的示例中
v2
似乎是0
,而在您的字典中没有该键d
。你知道吗你的代码应该大部分都能工作。我不知道你为什么拿钥匙错误:0。您应该偶尔得到Key Error:33,因为
random.randint(10,33)
有时会生成33,这在您的字典中并不存在。这应该管用。你知道吗这给了
format function用提供的值替换模板字符串中的所有大括号({})。这是一种制作包含字母和数字的格式化字符串的简便方法。你知道吗
您也可以使用Python % operator。每个%d都替换为整数,每个%s都替换为字符串。你知道吗
我不明白分开函数
gen
和letterAssignAndPrint
的意义。如果你认为你最终想要一个函数,那么你必须小心变量的作用域。一种方法是从函数中返回元组或列表:def gen()中的变量v1到v6是函数gen()的本地变量,不更新主程序中的变量v1到v6。你知道吗
相关问题 更多 >
编程相关推荐