2012-08-09 58 views
12

Vì vậy, như tiêu đề cho biết, tôi muốn có mã thích hợp để đóng tập lệnh python của tôi. Cho đến nay, tôi đã sử dụng input('Press Any Key To Exit'), nhưng những gì có, là tạo ra một lỗi. Tôi muốn mã chỉ đóng tập lệnh của bạn mà không sử dụng lỗi.Python, Nhấn phím bất kỳ để thoát

Có ai có ý tưởng không? Google mang lại cho tôi sự lựa chọn đầu vào, nhưng tôi không muốn điều đó Nó đóng vai trò quant sử dụng lỗi này:

Traceback (most recent call last): 
    File "C:/Python27/test", line 1, in <module> 
    input('Press Any Key To Exit') 
    File "<string>", line 0 

^
SyntaxError: unexpected EOF while parsing 
+1

'input = ('Nhấn phím bất kỳ để thoát') 'Bạn có nghĩa là' input ('Nhấn phím bất kỳ để thoát')'? Người đầu tiên sẽ không làm gì cả. Ngoài ra, hãy thử sử dụng raw_input(). – Josiah

+0

đầu tiên sẽ không làm gì, nhưng nó không nên ném bất kỳ lỗi .. nó sẽ chỉ rebind tên đầu vào cho rằng chuỗi – wim

+0

@wim Đồng ý, đó là lý do tại sao tôi cho rằng ông đã gõ câu hỏi không chính xác và đề nghị cố gắng 'raw_input()'. – Josiah

Trả lời

9

Bạn đã thử raw_input()? Có thể bạn đang gặp phải lỗi cú pháp bằng cách sử dụng input() trên python 2.x, sẽ cố gắng eval bất cứ điều gì nó nhận được.

+0

Đúng vậy, cố định nó, nhưng tôi thấy ai đó trả lời này là không có sẵn trong 3.0, vì vậy nếu tôi nâng cấp, im bị mắc kẹt một lần nữa? –

+0

@JoppeDnbCuyper: 'raw_input' được đổi tên thành' đầu vào' trong Python 3.0, vì vậy nếu bạn nâng cấp, bạn chỉ cần thay đổi mọi trường hợp 'raw_input' thành đầu vào' input' –

+1

là rất nguy hiểm trong <3. –

-1

Theo như tôi biết không có cách nào để 'nhấn phím bất kỳ'. Các lệnh input và raw_input yêu cầu bạn nhấn phím ENTER. (raw_input không được hỗ trợ bằng Python 3.x)

+0

Kiểm tra câu trả lời của LISTERINE và của tôi. –

13

Nếu bạn đang ở trên cửa sổ sau đó lệnh cmd pause nên làm việc, mặc dù nó đọc 'bấm phím bất kỳ để tiếp tục'

import os 
os.system('pause') 

Việc thay thế linux là read, mô tả tốt có thể được tìm thấy here

4

Tôi sẽ không khuyến khích các chức năng cụ thể của nền tảng trong python nếu bạn có thể tránh chúng, nhưng bạn có thể sử dụng mô-đun msvcrt tích hợp sẵn.

from msvcrt import getch 

junk = getch() # Assign to a variable just to suppress output. Blocks until key press. 
0

Dưới đây là một cách để kết thúc bằng cách nhấn phím bất kỳ trên * nix, mà không hiển thị phím và mà không cần nhấn trở lại. (Tín dụng cho phương pháp chung đi đến Python read a single character from the user.) Từ poking xung quanh SO, nó có vẻ như bạn có thể sử dụng mô-đun msvcrt để nhân đôi chức năng này trên Windows, nhưng tôi không có nó được cài đặt bất cứ nơi nào để kiểm tra. Over-nhận xét để giải thích những gì đang xảy ra ...

import sys, termios, tty 

stdinFileDesc = sys.stdin.fileno() #store stdin's file descriptor 
oldStdinTtyAttr = termios.tcgetattr(stdinFileDesc) #save stdin's tty attributes so I can reset it later 

try: 
    print 'Press any key to exit...' 
    tty.setraw(stdinFileDesc) #set the input mode of stdin so that it gets added to char by char rather than line by line 
    sys.stdin.read(1) #read 1 byte from stdin (indicating that a key has been pressed) 
finally: 
    termios.tcsetattr(stdinFileDesc, termios.TCSADRAIN, oldStdinTtyAttr) #reset stdin to its normal behavior 
    print 'Goodbye!' 
0

Ok Tôi đang sử dụng Linux Mint 17.1 "Rebecca" và có vẻ như Linux Mint đã cài đặt, bạn không thể cập nhật nó cũng như bạn không thể cài đặt phiên bản khác lên trên nó. Tôi đã phát hiện ra rằng python được cài đặt sẵn trong Linux Mint là phiên bản 2.7.6, vì vậy sau đây chắc chắn sẽ làm việc trên phiên bản 2.7.6. Nếu bạn thêm raw_input('Press any key to exit'), nó sẽ không hiển thị bất kỳ mã lỗi nào nhưng nó sẽ cho bạn biết rằng chương trình đã thoát với mã 0. Ví dụ: đây là chương trình đầu tiên của tôi. MyFirstProgram. Hãy ghi nhớ nó là chương trình đầu tiên của tôi và tôi biết rằng nó hút nhưng nó là một ví dụ tốt về cách sử dụng "Nhấn phím bất kỳ để thoát" BTW Đây cũng là bài đăng đầu tiên của tôi trên trang web này.

+1

Chào mừng bạn đến với StackOverflow! Bạn nên đăng đoạn trích ngắn như thế này như là một phần của câu trả lời của bạn. Trình soạn thảo cung cấp công cụ mã khối và mã nội tuyến để hỗ trợ bạn. Điều này sẽ làm cho anwer của bạn dễ dàng hơn cho người khác đọc. Đọc thêm về cách viết câu trả lời hay trong [help center] (http://stackoverflow.com/help/how-to-answer). –

1

Một chút muộn cho trò chơi, nhưng tôi đã viết một thư viện cách đây vài năm để làm chính xác điều này. Nó hiển thị cả hai chức năng pause() với thông báo có thể tùy chỉnh và chức năng getch() đa nền tảng tổng quát hơn lấy cảm hứng từ this answer.

Install với pip install py-getch, và sử dụng nó như thế này:

pause() 

này in 'Press any key to continue . . .' theo mặc định.Cung cấp một thông báo tùy chỉnh với:

pause('Press Any Key To Exit.') 

Để thuận tiện, nó cũng đi kèm với một biến thể mà các cuộc gọi sys.exit(status) trong một bước duy nhất:

pause_exit(0, 'Press Any Key To Exit.') 

Check it out.

0

trong Windows:

if msvcrt.kbhit(): 
    if msvcrt.getch() == b'q': 
     exit() 
+1

Vui lòng thêm một số giải thích. – BlackBeard

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