উত্তর:
ইন পাইথন 3 ব্যবহার input()
:
input("Press Enter to continue...")
ইন পাইথন 2 ব্যবহার raw_input()
:
raw_input("Press Enter to continue...")
এটি কেবল ব্যবহারকারী যদিও এন্টার টিপবে তার জন্য অপেক্ষা করে।
কেউ এমএসভিসিআরটি ব্যবহার করতে চাইতে পারে (শুধুমাত্র উইন্ডোজ / ডস) এমএসভিসিআরটি মডিউল আপনাকে মাইক্রোসফ্ট ভিজ্যুয়াল সি / সি ++ রানটাইম লাইব্রেরি (এমএসভিসিআরটি) এর বেশ কয়েকটি ফাংশনে অ্যাক্সেস দেয়:
import msvcrt as m
def wait():
m.getch()
এটি একটি কী প্রেসের জন্য অপেক্ষা করা উচিত।
অতিরিক্ত তথ্য:
পাইথন 3 তে raw_input()
বিদ্যমান নেই
পাইথন 2 input(prompt)
এর সমতুল্যeval(raw_input(prompt))
input
কোনও কী চাপলে কেবল চালানো হয় না, কেবল এন্টার চাপলে।
পাইথন 2 এ করার একটি উপায় হ'ল ব্যবহার করা raw_input()
:
raw_input("Press Enter to continue...")
অজগর 3 এ ঠিক input()
enter
?
input()
।
আমার লিনাক্স বাক্সে, আমি নিম্নলিখিত কোডটি ব্যবহার করি। এটি আমি অন্য কোথাও দেখেছি কোডের অনুরূপ (উদাহরণস্বরূপ পুরাতন অজগর প্রশ্নাবলী) তবে এই কোডটি একটি টাইট লুপে স্পিন করে যেখানে এই কোডটি দেয় না এবং প্রচুর অদ্ভুত কোণার কোড রয়েছে যে কোডটি তার জন্য অ্যাকাউন্ট করে না where কোড করে।
def read_single_keypress():
"""Waits for a single keypress on stdin.
This is a silly function to call if you need to do it a lot because it has
to store stdin's current setup, setup stdin for reading single keystrokes
then read the single keystroke then revert stdin back after reading the
keystroke.
Returns a tuple of characters of the key that was pressed - on Linux,
pressing keys like up arrow results in a sequence of characters. Returns
('\x03',) on KeyboardInterrupt which can happen when a signal gets
handled.
"""
import termios, fcntl, sys, os
fd = sys.stdin.fileno()
# save old state
flags_save = fcntl.fcntl(fd, fcntl.F_GETFL)
attrs_save = termios.tcgetattr(fd)
# make raw - the way to do this comes from the termios(3) man page.
attrs = list(attrs_save) # copy the stored version to update
# iflag
attrs[0] &= ~(termios.IGNBRK | termios.BRKINT | termios.PARMRK
| termios.ISTRIP | termios.INLCR | termios. IGNCR
| termios.ICRNL | termios.IXON )
# oflag
attrs[1] &= ~termios.OPOST
# cflag
attrs[2] &= ~(termios.CSIZE | termios. PARENB)
attrs[2] |= termios.CS8
# lflag
attrs[3] &= ~(termios.ECHONL | termios.ECHO | termios.ICANON
| termios.ISIG | termios.IEXTEN)
termios.tcsetattr(fd, termios.TCSANOW, attrs)
# turn off non-blocking
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save & ~os.O_NONBLOCK)
# read a single keystroke
ret = []
try:
ret.append(sys.stdin.read(1)) # returns a single character
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save | os.O_NONBLOCK)
c = sys.stdin.read(1) # returns a single character
while len(c) > 0:
ret.append(c)
c = sys.stdin.read(1)
except KeyboardInterrupt:
ret.append('\x03')
finally:
# restore old state
termios.tcsetattr(fd, termios.TCSAFLUSH, attrs_save)
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save)
return tuple(ret)
সিস্টেম কমান্ডের উপর নির্ভর করে যদি আপনি ঠিক থাকেন তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:
লিনাক্স:
import os
os.system('read -sn 1 -p "Press any key to continue..."')
print
উইন্ডোজ:
import os
os.system("pause")
system
তারপরেও কল করতে পারেন sys.exit(0)
।
সহজভাবে ব্যবহার
input("Press Enter to continue...")
সিনট্যাক্সেরর সৃষ্টি করবে: পার্স করার সময় প্রত্যাশিত ইওএফ।
সাধারণ ফিক্স ব্যবহার:
try:
input("Press enter to continue")
except SyntaxError:
pass
input
পাইথন 2 এ ব্যবহার করবেন না - সঠিক ফাংশনটি raw_input
। পাইথন 2 এ, input
সমান eval(raw_input())
।
পাইথন ম্যানুয়ালটি নিম্নলিখিতটি সরবরাহ করে:
import termios, fcntl, sys, os
fd = sys.stdin.fileno()
oldterm = termios.tcgetattr(fd)
newattr = termios.tcgetattr(fd)
newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
termios.tcsetattr(fd, termios.TCSANOW, newattr)
oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)
try:
while 1:
try:
c = sys.stdin.read(1)
print "Got character", repr(c)
except IOError: pass
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags)
যা আপনার ব্যবহারের ক্ষেত্রে রোল করা যেতে পারে।
ক্রস প্ল্যাটফর্ম, পাইথন 2/3 কোড:
# import sys, os
def wait_key():
''' Wait for a key press on the console and return it. '''
result = None
if os.name == 'nt':
import msvcrt
result = msvcrt.getch()
else:
import termios
fd = sys.stdin.fileno()
oldterm = termios.tcgetattr(fd)
newattr = termios.tcgetattr(fd)
newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
termios.tcsetattr(fd, termios.TCSANOW, newattr)
try:
result = sys.stdin.read(1)
except IOError:
pass
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
return result
আমি fctl / অবরুদ্ধকরণ স্টাফ সরিয়েছি কারণ এটি সরবরাহ করছে IOError
এবং আমার এটির প্রয়োজন নেই। আমি এই কোডটি বিশেষত ব্যবহার করছি কারণ আমি এটি ব্লক করতে চাই। ;)
সংযোজন:
আমি এটি পিপিআইতে একটি প্যাকেজে কনসোল নামে প্রচুর অন্যান্য গুডি সহ প্রয়োগ করেছি :
>>> from console.utils import wait_key
>>> wait_key()
'h'
প্ল্যাটফর্মটি এটি করার স্বাধীন উপায় সম্পর্কে আমি জানি না, তবে উইন্ডোজের অধীনে, আপনি যদি এমএসভিসিআরটি মডিউলটি ব্যবহার করেন তবে আপনি এর গ্যাচ ফাংশনটি ব্যবহার করতে পারেন:
import msvcrt
c = msvcrt.getch()
print 'you entered', c
mscvcrt- এ অ-ব্লকিং কেবিট () ফাংশনটিও অন্তর্ভুক্ত রয়েছে এটি দেখার জন্য যে কোনও কীটি অপেক্ষা না করে চাপানো হয়েছে কিনা (নিশ্চিত না যে এটি সম্পর্কিত কোনও শাপের কাজ রয়েছে কিনা) if ইউনিক্সের অধীনে, এখানে শাপের প্যাকেজ রয়েছে, তবে নিশ্চিত না যে আপনি এটি সমস্ত পর্দার আউটপুট ব্যবহার না করে ব্যবহার করতে পারবেন কিনা। এই কোডটি ইউনিক্সের অধীনে কাজ করে:
import curses
stdscr = curses.initscr()
c = stdscr.getch()
print 'you entered', chr(c)
curses.endwin()
নোট করুন যে ক্রেপস.ট্যাচ () কী টিপানো কীটির অর্ডিনালটি দেয় যাতে এটির মতো আউটপুট আমাকে কাস্ট করতে হয়েছিল।
আপনি যদি প্রবেশের জন্য অপেক্ষা করতে চান (তাই ব্যবহারকারী কীবোর্ডটি ছুঁড়ে ফেলার ফলে অনিচ্ছাকৃত কিছু ঘটায় না) use
sys.stdin.readline()
আমি পাইথনে নতুন এবং আমি ইতিমধ্যে ভাবছিলাম যে আমি এখানে দেওয়া সহজ পরামর্শগুলি পুনরুত্পাদন করতে খুব বোকা। দেখা যাচ্ছে যে একটি সমস্যা অবশ্যই জানা উচিত:
আইডিএল থেকে পাইথন-স্ক্রিপ্ট কার্যকর করা হলে কিছু আইও-কমান্ড সম্পূর্ণ ভিন্ন আচরণ করে বলে মনে হয় (যেহেতু এখানে কোনও টার্মিনাল উইন্ডো নেই)।
যেমন। msvcrt.getch অ-ব্লক করা এবং সর্বদা $ ff প্রদান করে। এটি ইতিমধ্যে অনেক আগে রিপোর্ট করা হয়েছে (উদাহরণস্বরূপ https://bugs.python.org/issue9290 দেখুন ) - এবং এটি স্থির হিসাবে চিহ্নিত হয়েছে, কোনওভাবে সমস্যাটি পাইথন / আইডিএল এর বর্তমান সংস্করণগুলিতে বজায় রয়েছে বলে মনে হচ্ছে।
সুতরাং উপরে পোস্ট করা কোডগুলির মধ্যে যদি কোনওটি আপনার পক্ষে কাজ করে না, তবে স্ক্রিপ্টটি ম্যানুয়ালি চালানোর চেষ্টা করুন, এবং আইডিএল থেকে নয় ।
যদি আপনি দেখতে চান যে তারা কোনও সঠিক কী টিপেছে কিনা (যেমন 'বি' বলুন) এটি করুন:
while True:
choice = raw_input("> ")
if choice == 'b' :
print "You win"
input("yay")
break
ওএস.সিস্টেমটি সর্বদা শকে আহ্বান করে বলে মনে হয়, যা পড়ার জন্য s এবং n বিকল্পগুলি স্বীকৃতি দেয় না। তবে পঠিত কমান্ড বাশকে দেওয়া যেতে পারে:
os.system("""bash -c 'read -s -n 1 -p "Press any key to continue..."'""")