2015-04-01 74 views
1

你好,我正在嘗試爲小行星類型和名稱做一個生成器。成品應作出類似的商品:隨機項目生成器解析時意外的EOF錯誤Python 3.4.3

MUS-786 A Type 
AKL-675 C Type 
BHF-877 B Type 

等等

我已經作出了一串數字代碼,並用字母連字符之間:

import string, random 
def pick(num): 
    for j in range(num): 
     print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)]) 

它工程很好,但我試圖把一個隨機小行星類型以及(A型,B型,C型)

這是我使用的最終代碼:

import string, random 
def pick(num): 
    for j in range(num): 
     print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)])+" "+"".join([random.randint('A Type','B Type','C Type')]) 

這給了我一個錯誤,說分析時出現了意外的EOF。

EOF是什麼意思?我能做些什麼來解決這個問題?

+1

感謝您編輯Bhargav。 – user2368535 2015-04-01 19:10:04

+1

這意味着文件結束......可能是不匹配的括號或引號 – 2015-04-01 19:10:09

+0

嗯......任何想法來解決這個問題? – user2368535 2015-04-01 19:13:34

回答

0
import string, random 
def pick(num): 
    for j in range(num): 
     print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)])+" "+"".join(random.sample(['A Type','B Type','C Type'], 1))) 

這將工作。我用random.sample替換了random.randint,並刪除了[]random.randint,因爲random.sample返回一個列表。

您可以使用此作爲最後一行以及使用random.choice()

print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)])+" "+ random.choice(['A Type','B Type','C Type'])) 
0

您可以使用random.choice從列表中獲得一個隨機值,然後將其添加到您的代碼:

import string, random 
def pick(num): 
    for j in range(num): 
     print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)]+" "+random.choice(["A", "B", "C"])+" Type") 

因此:

>>> pick(5) 
MYO-078 B Type 
TYR-215 C Type 
IDY-604 C Type 
FRA-272 A Type 
WLJ-576 A Type 
>>> pick(0) 
>>> pick(3) 
NEJ-767 A Type 
PVD-879 C Type 
ACP-344 A Type