[英]Python code for random number generator not printing as expected
抱歉,如果這是一個愚蠢的問題,我已經對其進行了研究,發現類似的代碼可以工作並應用相同的布局,但是由於某些原因,當我運行我的代碼時,它不會打印num或true或false的結果,而只是顯示一個空白行。 我正在使用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()
26
False
>>> rand_divis_3()
15
True
您所做的只是定義功能以供將來使用。
如您所知,Python是一種腳本語言。 它的工作方式與您可能對C / C ++ / Java所體驗的有點不同。 在C / Cpp / Java中,您有一個主類和/或一個可用的主要函數,它們是程序執行的起點。
對於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,該函數將創建並存儲在內部存儲器中。 問題是您必須調用該函數。
>>>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,它當然會首先隨機導入,然后創建一個名為rand_divis_3的對象,並在內部指向該函數。 當涉及到rand_divis_3()
,它將執行此行,這實際上將為您生成一個隨機數,並相應地打印該數字和True / False。
假設您需要創建一個庫,那么就會遇到問題,因為import file
, file.py
腳本是從上到下執行的。
為了避免這種情況,您可以做
from file import rand_divis_3
替換import file
,該from file import rand_divis_3
有選擇地導入一個函數,但是如果您在某個實際項目中工作,則不建議這樣做,請看#2 在腳本末尾添加此行,
如果名稱 ==' main ':rand_divis_3()
在file.py的末尾加上這一行,當您執行python file.py
,它將調用該函數,但是如果您import file
,則不會調用rand_divis_3函數。
這背后的原因是在執行任何python腳本時, 名稱變量是main 。
因此,您的最終文件將如下所示:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.