【问题标题】:Python code for random number generator not printing as expected随机数生成器的 Python 代码未按预期打印
【发布时间】:2015-02-26 16:16:50
【问题描述】:

对不起,如果这是一个愚蠢的问题,我已经研究过它并发现了类似的代码可以工作并应用相同的布局,但由于某种原因,当我运行我的时,它不会打印 num 或真假结果,只是一个空行。我正在使用 Python 2,我错过了什么? rand_divis_3 函数应该只是简单地生成一个随机数并根据它是否可被 3 整除打印 True 或 False。非常感谢帮助,我是 python 新手

import random
def rand_divis_3():
    num = random.randint(0,100)
    print num
    if num % 3 == 0:
        print True
    else:
        print False

【问题讨论】:

  • 你调用rand_divis_3()函数了吗?

标签: python function random printing integer


【解决方案1】:

如您所知,Python 是一种脚本语言。它的工作方式与您可能对 C/C++/Java 的体验有所不同。在 C/Cpp/Java 中,您有一个可用的主类和/或主函数,这是程序执行的起点。

对于python,没有语言指定的main函数或类,你必须定义自己的类并调用它。

你所做的只是定义函数而不使用它,所以调用函数。

片段:

import random
def rand_divis_3():
    num = random.randint(0,100)
    print num
    if num % 3 == 0:
        print True
    else:
        print False

这创建了一个函数rand_divis_3,它被创建并存储在内部存储器中。问题是你必须调用函数。

>>>rand_divis_3()
93

现在这部分很棘手,python 是一门拥有数百万个库的语言,您可以在https://pypi.python.org 找到它们,也可以创建自己的库。

假设你写了这段代码

import random
def rand_divis_3():
        num = random.randint(0,100)
        print num
        if num % 3 == 0:
            print True
        else:
            print False
rand_divis_3() #This is where the function is executed

你调用了这个 file.py 并将其作为 python file.py 执行,这当然会首先导入 random,然后创建一个名为 rand_divis_3 的对象,并在内部指向该函数。当它到达rand_divis_3() 时,它将执行这一行,这实际上会为您生成一个随机数并相应地打印该数字和 True/False。

假设你需要创建一个库,那么你就有问题了,因为当你import file那么file.py脚本是从上到下执行的。

为了避免这种情况,你可以这样做

  1. import file 替换为from file import rand_divis_3,这会选择性地导入一个函数,但如果您正在处理一些实际项目,则不建议这样做,请查看#2
  2. 在脚本末尾添加这一行,

    如果 name=='ma​​in': rand_divis_3()

file.py 末尾有这一行,当你做python file.py 时,它会调用函数,但如果你做import file,函数rand_divis_3 不会被调用。

这背后的原因是当你执行任何 python 脚本时 name 变量是 ma​​in

所以你的最终文件将如下所示:

import random
def rand_divis_3():
        num = random.randint(0,100)
        print num
        if num % 3 == 0:
            print True
        else:
            print False

if __name__=='__main__':
   rand_divis_3() # function is called  only when you execute the script

注意:这很重要,Cyber​​ 说的在你学习语言做一些事情的时候很有效,但是当你认真编程时,它就会派上用场,我花了很长时间才意识到它的重要性。

我在这里为 python 新手创建了一个 github 存储库,http://github.com/thewhitetulip/SamplePythonScripts

【讨论】:

  • 非常感谢你抽出宝贵的时间来写这篇文章,我将在今年晚些时候做一些大型的小组项目,所以我会参考这个并记住它。很有帮助,谢谢!
  • 不客气。实际上,当我开始编程时,我花了很长时间才真正理解这一点。
【解决方案2】:

您需要实际调用该函数。如果你这样做,你会发现你的函数运行良好。

>>> rand_divis_3()
26
False

>>> rand_divis_3()
15
True

您所做的只是定义函数以供将来使用。

【讨论】:

  • 啊,是的,我明白了,抱歉打扰了!刚开始,试图绕过它!非常感谢! :)
猜你喜欢
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
相关资源
最近更新 更多