我是python的新手,想问一个简单的问题。
我试图让这个程序循环,每次循环时,都应该在列表中存储一个变量。
请帮忙
到目前为止,这是我的代码:
import random
for x in range(1,100):
q=random.randint(0,99)
w=random.randint(0,99)
e=q*w
q=[]#This is the list
print '%s * %s = %s'%(q,w,e)
答案 0 :(得分:3)
您需要在循环外部定义列表,并在循环内追加它。
import random
# Define your list
l = []
for x in range(1,100):
q=random.randint(0,99)
w=random.randint(0,99)
e=q*w
# Append the result to your list
l.append(e)
print '%s * %s = %s'%(q,w,e)
print 'The list becomes: %s' % l
答案 1 :(得分:0)
让我们逐行完成您的代码行
import random
for x in range(1,100): # this will go 1, 2, ... , 99
q = random.randint(0, 99) # q is a random number 0-99
w = random.randint(0, 99) # w is a random number 0-99
e = q * w # e is q times w
q = [] # q is now an empty list
print '%s * %s = %s' % (q,w,e)
# q is an empty list, so this is wrong
显然,您并不是每次都尝试将q
分配给空列表。您需要在循环之前创建一个列表,然后继续添加它。
some_list = [] # some_list is an empty list
for _ in range(99): # this will go 0, 1, ... , 98
q = random.randint(0, 99) # q is a random number 0-99
w = random.randint(0, 99) # w is a random number 0-99
e = q * w # e is q times w
some_list.append(e) # add e to the list!
print "%s * %s = %s" % (q,w,e)
# print "q * w = e"
请注意,当你获得更高级的时候,你可以将它作为列表理解很好地包装起来,这样你就不必将它初始化为空,然后加入它。
some_list = [random.randint(0,99) * random.randint(0,99) for _ in range(99)]
# equivalent to your code
但这仍然有点超过你的舒适程度。一步一步来! :)
这里需要注意的是我改变了:
range
是半开放范围,例如range(1,100)
是99个数字,1-99
。它不包括100。for _ in range(some_number)
。您使用下划线(_
)向其他编码器表示您不在此处使用该变量(请注意_
并不代表Python的任何特殊内容,这只是惯例)for _ in range(N)
是N
次做事的快捷方式。list.append
添加到列表=)答案 2 :(得分:0)
关于风格的一些注释:
for
循环中不定义列表,在这种情况下q=[]
,如果您希望它存储值,则可以循环for循环的几次迭代。q
在这种情况下用于存储随机数和列表。添加到列表的方法:
append()
对象的list
函数向list
+
运算符以将新值连接到原始列表所以,以下是我将如何更改您的代码:
首先在循环外定义列表:
import random
e = []
在for循环中,使用append()
函数将值添加到主列表e
:
for x in range(0,100):
q=random.randint(0,99)
w=random.randint(0,99)
e_val=q*w # new local variable that resets at each iteration of the loop
e.append(e_val)
print '%s * %s = %s'%(q,w,e_val)
或者,您可以使用以下内容替换行e.append(e_val)
:
e += [e_val]