Python';对于';循环问题,这两个变量在my';中没有正确相加是什么;对于';环

Python';对于';循环问题,这两个变量在my';中没有正确相加是什么;对于';环,python,for-loop,Python,For Loop,我正在为一个更大项目的随机代数方程生成器编写代码片段。到目前为止,一切都进展顺利。主要问题很简单。我把词典的内容按顺序组合起来。为了论证,假设字典是:exdict={a:1,b:2,c:3,d:4},我将它们附加到一个列表中:exlist=[a,b,c,d,1,2,3,4]。我名单的长度是8,其中一半显然是4。该算法非常简单,无论在1-4之间生成什么样的随机数(或者python称之为0-3索引),如果将列表长度的一半添加到该索引值,都将得到正确的值 我曾在网上和stackoverflow上做过研

我正在为一个更大项目的随机代数方程生成器编写代码片段。到目前为止,一切都进展顺利。主要问题很简单。我把词典的内容按顺序组合起来。为了论证,假设字典是:
exdict={a:1,b:2,c:3,d:4}
,我将它们附加到一个列表中:
exlist=[a,b,c,d,1,2,3,4]
。我名单的长度是8,其中一半显然是4。该算法非常简单,无论在1-4之间生成什么样的随机数(或者python称之为0-3索引),如果将列表长度的一半添加到该索引值,都将得到正确的值

我曾在网上和stackoverflow上做过研究,但找不到任何适合我的情况的答案

下面是我的代码的错误检查版本。它会在每个变量发生时打印出来。我遇到的问题是在
#####迭代和设置
注释下面的底部。代码的其余部分在那里,因此可以正常运行。主要的问题是a+x应该是m,但a+x永远不等于m,m总是低得可怜

错误检查代码:

from random import randint as ri
from random import shuffle as sh


#def randomassortment():
letterss = ['a','b','x','d','x','f','u','h','i','x','k','l','m','z','y','x']
rndmletters = letterss[ri(1,15)]
global newdict
newdict = {}
numberss = []
for x in range(1,20):

    #range defines max number in equation
    numberss.append(ri(1,20))

for x in range(1,20):
    rndmnumber = numberss[ri(1,18)]
    rndmletters = letterss[ri(1,15)]
    newdict[rndmletters] = rndmnumber
#x = randomassortment()
#print x[]


z = []
# set variable letter : values in list
for a in newdict.keys():
    z.append(a)
for b in newdict.values():
    z.append(b)

x = len(z)/2
test = len(z)


print 'x is value %d' % (x)


### ITERATIONS & SETUP

iteration = ri(2,6)


for x in range(1,iteration):
    a = ri(1,x)
    m = a + x
    print 'a is value: %d' % (a) 
    print 'm is value %d' %(m)
    print
    variableletter = z[a]
    variablevalue = z[m]
    # variableletter , variablevalue
编辑-我的问题是,为什么
a+x
返回的值不是a+x。如果运行此代码,它将打印x、a和m。m应该是a+x的值,但由于某种原因,它不是?

您的问题是范围

你在找哪个x

x = len(z)/2 # This is the first x
print 'x is value %d' % (x)


### ITERATIONS & SETUP

iteration = ri(2,6)

# x in the for loop is referencing the x in range...
for x in range(1,iteration):
    a = ri(1,x)
    m = a + x
你的问题是范围

你在找哪个x

x = len(z)/2 # This is the first x
print 'x is value %d' % (x)


### ITERATIONS & SETUP

iteration = ri(2,6)

# x in the for loop is referencing the x in range...
for x in range(1,iteration):
    a = ri(1,x)
    m = a + x

这不能像您预期的那样工作的原因是,您的变量
x
最初表示列表的长度,但它在
for x in range
循环中被替换,然后您希望它等于列表的长度。你可以把线路改成

for i in range(iteration)
相反

还请注意,您可以用替换for循环中的所有代码

variableletter, variablevalue = random.choice(newdict.items())

这不能像您预期的那样工作的原因是,您的变量
x
最初表示列表的长度,但它在
for x in range
循环中被替换,然后您希望它等于列表的长度。你可以把线路改成

for i in range(iteration)
相反

还请注意,您可以用替换for循环中的所有代码

variableletter, variablevalue = random.choice(newdict.items())

你的问题不清楚。您希望此代码的输出是什么?编辑问题并清除代码您的问题不清楚。您希望此代码的输出是什么?编辑问题并清除代码