我已经成功创建了一个随机数生成器,之前使用过随机模块。但我试图为我的天气模拟器项目增加一点随机性。我的问题是,当我添加一个指定为1到99之间的随机数的变量时,它就不会让我这样做。
这是代码。有人可以帮我找出正确的方法吗?
<div class="row">
<!--first button-->
<div class="col-xs-3">
<button class="btn btn-sq-sm" ng-click="calc.clearStacks()"><p>C</p></button>
</div>
<!-- second buttons-->
<div class="col-xs-3">
<button class="btn btn-sq-sm"><p id="uni">`</p></button>
</div>
<!-- third buttons-->
<div class="col-xs-3">
<button class="btn btn-sq-sm" ng-click="calc.addOperation('/')"><p>/</p></button>
</div>
<!-- fourth buttons-->
<div class="col-xs-3">
<button class="btn btn-sq-sm" ng-click="calc.addOperation('*')"><p>x</p></button>
</div>
</div>
答案 0 :(得分:1)
import random
from random import*
使用此样式进行导入时,不需要random.randint()。你应该使用randint(1,99)。
否则只用import random
替换它
其余的应该没问题。
答案 1 :(得分:1)
正如评论中提及的那样,您的错误原因是
from random import*
导入random
模块中定义的所有名称,并将它们转储到全局名称空间中。其中一个名称是random
,它是random
函数,新名称破坏了以前对该模块本身的赋值,该模块由
import random
现在名称random
引用random
函数而不是random
模块。所以当你尝试做的时候
random.randint(1, 99)
您将收到以下错误消息:
AttributeError: 'builtin_function_or_method' object has no attribute 'randint'
因为random
函数没有randint
属性。
通常,您应该避免使用此类通配符导入(也称为“星形”导入)。它们将所有导入的名称转储到您的命名空间中,这很脏,而且正如您所发现的,它们可能导致名称冲突。它们也使得阅读代码变得更加困难,因为您需要知道并记住所有不同名称的来源。有关此重要主题的详细信息,请参阅Why is “import *” bad?。
答案 2 :(得分:0)
Replace "random.randint(1,99)" with just "randint(1,99)"
你必须缩进你的while循环。另外,我增加了时间延迟以实现更好的可视化。
import random
from random import*
import time
t = 100
wmph = 51
h = 25
randwmph = randint(1,99)
print ("\nDynamic Weather Simulator | V.004\n")
while True:
if t >= 0 and t <= 150:
print("\nHumidity:",h)
print("\nTemperature:",t)
print("\nWindSpeed:",wmph)
print("\n________________\n")
if t >= 5 and t <= 100:
h = h + 0.6
if h >= 50 and t >= 33:
print("\nRAINFALL\n")
if h >= 50 and t <= 32:
print("\nSNOWFALL\n")
if h >= 55:
h = h - 20
if wmph >= 30:
t = t - 2
if wmph <= 29:
t = t + 1
if wmph >= 60:
wmph = wmph - randwmph # UNABLE TO USE THIS VARIABLE AS A NUMBER, EVEN THOUGH IT IS ASSIGNED AS A RANDOM NUMBER BETWEEN 1 and 99
else:
wmph = wmph + 4
time.sleep(1)