2013-05-01 36 views
9

Tôi không có ý tưởng tại sao điều này không làm việc xin vui lòng giúpLỗi Cú pháp: bất ngờ EOF khi phân tách

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) 

Khi tôi chạy này nó ra lỗi này

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

               ^
SyntaxError: unexpected EOF while parsing 

Tôi đang sử dụng nhật thực và python 3.3 và tôi không biết tại sao điều này lại xảy ra. Đôi khi nó xuất ra các lỗi như thế này.

+10

Bất cứ khi nào bạn nhận được một 'SyntaxError' mà làm cho không có ý nghĩa trên một dòng có vẻ hoàn toàn tốt, hoặc hoàn toàn trống rỗng, nó đáng xem xét dòng trước nó. Nếu dòng trước đó có dấu ngoặc đơn, dấu ngoặc ôm, dấu ngoặc nhọn, v.v., thì dòng bạn đang xem được coi là sự tiếp nối của dòng trước đó. – abarnert

+0

Một vài lưu ý phụ: Chỉ cần gọi 'int (z)' không làm gì cả (ngoại trừ việc tăng ngoại lệ là 'z' không thể được phân tích cú pháp thành số nguyên); bạn cần lưu trữ kết quả ở đâu đó (ví dụ: 'z = int (z)'). Ngoài ra, bởi vì bạn không bao giờ sửa đổi 'x' hoặc' z' bên trong vòng lặp (và nếu bạn _did_, nó sẽ cung cấp cho bạn 'UnboundLocalError'),' x abarnert

Trả lời

21

Bạn đang thiếu một đóng ngoặc ) trong print():

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

và bạn cũng không lưu trữ giá trị trả về từ int(), vì vậy z vẫn là một chuỗi.

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

hoặc đơn giản là:

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

cảm ơn bạn !!! nên chú ý rằng ... – Quar

+2

@ user2341020 Rất vui được giúp, bạn có thể [chấp nhận câu trả lời] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235# 5235) nếu nó làm việc cho bạn. –

2

Có lẽ đây là những gì bạn có nghĩa là phải làm:

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. làm z = int (z)
  2. Thêm ngoặc mất tích đóng trên dòng mã cuối cùng trong danh sách của bạn.
  3. Và có một cho vòng lặp sẽ lặp từ x đến z-1

Dưới đây là một liên kết trên phạm vi() chức năng: http://docs.python.org/release/1.5.1p1/tut/range.html

Các vấn đề liên quan