我贴了这一段时间前,但我已经清理了一点,从那以后,问题仍然存在,因为没有人真正给出一个正确的答案。
所以我的问题是,我在类外定义的变量和循环stonepile
和woodpile
(在类内)没有多次向自身添加stone
/wood
(也在同一类内),我知道这一点是因为我得到了要打印的stonepile
/woodpile
。我已经测试过,问题实际上是开始时的stonepile
/woodpile
每次被告知将stone
/wood
添加到stonepile
/woodpile
时都被重置。我知道这是因为我和他们一起做的:
y = random.randint(1,5)
x = random.randint(1,5)
woodpile = y
stonepile = x
结果是,如果开采的石头是1,x的randint是5,它将打印6。或者类似的东西。 有什么办法可以解决吗?你知道吗
整个代码如下:
import random
import time
idle = True
woodpile = 0
stonepile = 0
while True:
class Taskassigner:
def __init__(self,tasknum,stonepile,woodpile):
self.tasknum = tasknum
self.woodpile = woodpile
self.stonepile = stonepile
def choosejob(self,stonepile,woodpile):
if self.tasknum == 1:
self.chop(woodpile)
if self.tasknum == 2:
self.mine(stonepile)
def chop(self,woodpile):
wood = random.randint(1, 10)
print('chopping wood')
time.sleep(1.5)
print('you got', wood)
woodpile += wood
print(woodpile)
time.sleep(0.75)
def mine(self,stonepile):
stone = random.randint(1, 10)
print('mining for stone')
time.sleep(1.5)
print('you got', stone)
stonepile += stone
print(stonepile)
time.sleep(0.75)
while idle:
taskchance = random.randint(0,1)
if taskchance == 1:
tasknum = random.randint(0,2)
job = Taskassigner(tasknum,stonepile,woodpile)
job.choosejob(stonepile,woodpile)
print
else:
print('idle')
time.sleep(0.5)
您可以找出在
while idle
循环之外实例化变量的方法。我会尽量不将tasknum作为__init__
输入变量之一另外,由于你不能砍石头或我的木头,你不必把他们包括在你的所有方法。 i、 e
然后你可以打电话:
我的工作代码是这样的:
如果要修改函数(或类函数)中的全局函数,则需要使用全局函数
全局变量的名称与类内部的名称相同。我注意到有些地方你做了
woodpile += wood
而你可能想要self.woodpile += wood
相关问题 更多 >
编程相关推荐