具有相同值的Python 2D数组

具有相同值的Python 2D数组,python,Python,我是一名初级程序员,我正在为学校做一项任务。任务是分配4个常量变量,然后使用代码计算值。每个值都有一个对应的字母,程序要求用户键入5个数字,然后程序将返回该单词。代码如下: array = [["L","N"], #define the 2d array, L=Letters, N=Numbers ["-","-"]] #line for space a = 2#define the variables b = 1 c = 7 d = 4 e = (a*b)+b#calcua

我是一名初级程序员,我正在为学校做一项任务。任务是分配4个常量变量,然后使用代码计算值。每个值都有一个对应的字母,程序要求用户键入5个数字,然后程序将返回该单词。代码如下:

array = [["L","N"], #define the 2d array, L=Letters, N=Numbers
        ["-","-"]] #line for space

a = 2#define the variables
b = 1
c = 7
d = 4

e = (a*b)+b#calcualtions
f = c+b
g = (d/a)-b
h = c*a
i = a+b+d
j = c-a
k = c-d*f
l = c+a
m = (c*a)-b
n = a*d
o = a+d-b
p = (c*d)-a*(b+d)
q = a*(c+(d-b))
r = (d*d)-b
s = r-f-g

array.append(["e",e])
array.append(["f",f])
array.append(["g",g])#append all the calculations
array.append(["h",h])
array.append(["i",i])
array.append(["j",j])
array.append(["k",k])
array.append(["l",l])
array.append(["m",m])
array.append(["n",n])
array.append(["o",o])
array.append(["p",p])
array.append(["q",q])
array.append(["r",r])
array.append(["s",s])

def answer():
    len_row = len(array)
    number_input = int(input("Enter number: "))
    for i in range(len_row):
        if number_input == (array[i][1]):
            return array[i][0]
            break

one_let = answer()
two_let = answer()
thr_let = answer()
fou_let = answer()
fiv_let = answer()

print(one_let,two_let,thr_let,fou_let,fiv_let)
我要输入的数字是6、18、7、8和3

打印的单词是“spife”,要打印的单词是“spine”。问题是有两个字母的变量为8,Python只得到第一个字母。有没有一种方法可以打印出两个单独的单词,但第一个是2D数组中的第一个变量,第二个是2D数组中的第二个变量?i、 然后是脊柱


谢谢你的帮助,我只是一个初学者!:)

是的,您可以这样做,但有点棘手。秘诀是在可能具有五个值的字母列表中使用
itertools.product

首先,您需要使用更好的数据结构,例如
dict
,(在本例中是
collection.defaltdict
)来保存具有某些值的字母。您可以这样做:

import collections
import itertools

a = 2#define the variables
b = 1
c = 7
d = 4
e = (a*b)+b#calcualtions
f = c+b
g = (d/a)-b
h = c*a
i = a+b+d
j = c-a
k = c-d*f
l = c+a
m = (c*a)-b
n = a*d
o = a+d-b
p = (c*d)-a*(b+d)
q = a*(c+(d-b))
r = (d*d)-b
s = r-f-g

dat = collections.defaultdict(list)
for c in "abcdefghijklmnopqrs":
    dat[eval(c)].append(c)
例如,现在在
dat
中,您有一个与某个数字匹配的字母列表

print(dat[6])
print(dat[18])
print(dat[7])
print(dat[8])
print(dat[3])
产出:

['s']
['p']
['i']
['f', 'n']
['e']
好的,然后您需要更改
answer
以返回字母列表,并收集用户输入:

def answer():
    number_input = int(input("Enter number: "))
    return dat[number_input]

letts = [answer() for _ in range(5)] #collect five answers of the user
最后的魔术在这里完成:

for s in map(lambda x: "".join(x),itertools.product(*letts)):
    print(s)
现在,如果您感到困惑,请学习:


  • 您可以更改计算吗?不,计算必须保持原样。谢谢!这很有帮助,我会看看模块,谢谢:-)