无法添加指定为随机数的变量

时间:2018-01-13 05:24:19

标签: python python-3.x random

我已经成功创建了一个随机数生成器,之前使用过随机模块。但我试图为我的天气模拟器项目增加一点随机性。我的问题是,当我添加一个指定为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>

3 个答案:

答案 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)