基本上,我正在尝试创建一个上下浮动的函数,因为它从1-6中选择一个随机数。但是,它返回一堆0,而不是一个随机数列表。一直持续到到达一百层。
我已经尝试过将'f'变量的定义移到不同的位置以查看是否可行,并且我尝试更改了它计算是向上还是向下移动的方式。
Plugins
实际结果应该是一系列随机数,但我得到了一堆0。
答案 0 :(得分:2)
为什么得到零数组的简短答案是,每次循环时,您都要附加f
的值,该值在代码中永远不变。尽早将其初始化为0,但从未更改。您将要写
f -= 1
和
f += 1
和
f += randint(1,6)
但是,还有更多错误需要纠正,这对于初学者来说很常见。例如,您写道:
if numb is 1 or 2:
始终为True
,因为在Python中这与以下内容相同:
if (numb is 1) or 2:
您应该写:
if numb == 1 or numb == 2:
甚至:
if numb in (1, 2):
对下一个条件做同样的事情,例如:
if numb in (3, 4, 5):
另外,在处理数字时,请避免使用is not
,而应使用!=
。
这应该使您真正接近要寻找的东西。
答案 1 :(得分:1)
您永远不会修改f
。但是您的代码还有许多其他问题。
def roll():
f = 0
arry = []
count = 0
while count is not 100:
numb = randint(1,6)
if numb is 1 or 2: # this will always be true
f -= 1
elif numb is 3 or 4 or 5:
f += 1
else:
f += randint(1,6)
count=count+1
arry.append(f)
return arry
def roll():
f = 0
arry = []
count = 0
while count is not 100:
numb = randint(1,6)
if numb in (1, 2):
f -= 1
elif numb in (3, 4, 5):
f += 1
else:
f += randint(1,6)
count=count+1
arry.append(f)
return arry
答案 2 :(得分:0)
您的问题是您永远不会为f
分配新值。
写入f+1
或f-1
不会更改f
的值,但是会返回一个新值,该值等于f
的正负1。
您应该写的是:
f = f+1
f = f-1
获得所需的结果。
答案 3 :(得分:0)
原因是您执行了操作
let LinkAttributes = NSMutableDictionary(dictionary: testLink.linkAttributes)
LinkAttributes[NSAttributedStringKey.underlineStyle] = NSNumber(value: false)
yourLabel.linkAttributes = LinkAttributes as NSDictionary as! [AnyHashable: Any]
相反,您应该这样做
f-1
f+1
f + randint(1,6)
所以功能应该是
f= f-1
f= f+1
f= f + randint(1,6)
希望有帮助
答案 4 :(得分:0)
您的代码应如下所示...问题已得到解释。
(..)
答案 5 :(得分:0)
其他人已经在解释为什么它无法按预期工作的原因,我想使用
添加它while count is not 100:
这不是最好的主意,从技术上讲它是可行的,但是is
不应用于整数值比较,例如:
x = 294
print(x is 294)
会产生False
,因此要检查数字是否相同,应使用==
运算符,并检查是否不相等的!=
运算符,因此在您的情况下,while
应该是:
while count != 100: