2013-05-01 52 views
9

我不知道爲什麼,這並不工作,請幫助語法錯誤:意外的EOF在解析

import random 
x = 0 
z = input('?') 
int(z) 

def main(): 
    while x < z: 
     n1 = random.randrange(1,3) 
     n2 = random.randrange(1,3) 
     t1 = n1+n2 
     print('{0}+{1}={2}'.format(n1,n2,t1) 

當我運行這一點,

File "/Users/macbook/Documents/workspace/gamlir_filar/samlagning.py", line 12 

               ^
SyntaxError: unexpected EOF while parsing 

我使用日食和Python 3.3,並把該錯誤我不知道爲什麼會發生這種情況。它有時會輸出這樣的錯誤。

+10

當你得到一個'SyntaxError'沒有任何意義在看起來非常好或完全空白的線上,值得看看它之前的線。如果上一行有未封閉的括號,括號,大括號等,則您正在查看的行將被視爲前一行的延續。 – abarnert 2013-05-01 22:23:34

+0

一對夫婦注意:只要調用'int(z)'什麼也不做(除非拋出一個異常,'z'不能被解析爲一個整數)。你需要在某處存儲結果(例如'z = int(z)')。此外,因爲你永遠不會修改循環內部的'x'或'z'(如果你有_did_,它會給你一個'UnboundLocalError'),'x abarnert 2013-05-01 22:26:20

回答

21

你缺少一個右括號)print()

print('{0}+{1}={2}'.format(n1,n2,t1)) 

而你也無法從int()存儲返回值,所以z仍然是一個字符串。

z = input('?') 
z = int(z) 

或者乾脆:

z = int(input('?')) 
+0

謝謝!應該已經注意到了...... – Quar 2013-05-03 20:28:22

+2

@ user2341020很高興幫助,你可以[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235# 5235)如果它爲你工作。 – 2013-05-03 20:29:52

2

也許這是你的意思做的:

import random 

x = 0 
z = input('Please Enter an integer: ') 
z = int(z) # you need to capture the result of the expressioin: int(z) and assign it backk to z 

def main(): 
    for i in range(x,z): 
     n1 = random.randrange(1,3) 
     n2 = random.randrange(1,3) 
     t1 = n1+n2 
     print('{0}+{1}={2}'.format(n1,n2,t1)) 

main() 
  1. 做Z = INT(Z)
  2. 添加缺少的結束括號在你列表中的最後一行代碼中。
  3. 並有一個for循環將從X迭代,以Z-1

這裏的範圍()函數的鏈接: http://docs.python.org/release/1.5.1p1/tut/range.html

相關問題