টি এল; ডিআর
inputপাইথন ২.7 এ ফাংশন, পাইথন এক্সপ্রেশন হিসাবে আপনার প্রবেশের যা কিছু তা মূল্যায়ন করে। আপনি যদি কেবল স্ট্রিংগুলি পড়তে চান তবে raw_inputপাইথন ২.7 এ ফাংশনটি ব্যবহার করুন , যা পঠনের স্ট্রিংগুলির মূল্যায়ন করবে না।
আপনি যদি পাইথন ৩.x ব্যবহার raw_inputকরছেন তবে নামকরণ করা হয়েছে input। পাইথন 3.0.০ রিলিজ নোটের উদ্ধৃতি ,
raw_input()নামকরণ করা হয়েছিল input()। অর্থাত, নতুন input()ফাংশনটি একটি লাইন পড়ে sys.stdinএবং এটি পিছনে থাকা নতুন লাইনের সাথে ফেলা হয়। এটি উত্থাপন করে EOFErrorযদি ইনপুট অকালে শেষ করে দেওয়া হয়। এর পুরানো আচরণ পেতে input(), ব্যবহার করুনeval(input())
পাইথন ২.7 এ দুটি ফাংশন রয়েছে যা ব্যবহারকারীর ইনপুট গ্রহণ করতে ব্যবহৃত হতে পারে। একটি inputএবং অন্যটি হ'ল raw_input। আপনি নীচের হিসাবে তাদের মধ্যে সম্পর্ক সম্পর্কে ভাবতে পারেন
input = eval(raw_input)
এটি আরও ভালভাবে বুঝতে নিম্নলিখিত কোডের অংশটি বিবেচনা করুন
>>> dude = "thefourtheye"
>>> input_variable = input("Enter your name: ")
Enter your name: dude
>>> input_variable
'thefourtheye'
inputব্যবহারকারীর কাছ থেকে একটি স্ট্রিং গ্রহণ করে এবং বর্তমান পাইথন প্রসঙ্গে স্ট্রিংটিকে মূল্যায়ন করে। আমি যখন dudeইনপুট হিসাবে টাইপ করি তখন এটি আবিষ্কার করে যে dudeএটি মানটির সাথে আবদ্ধ thefourtheyeএবং তাই মূল্যায়নের ফলাফলটি হয়ে যায় thefourtheyeএবং এটি নির্ধারিত হয় input_variable।
যদি আমি অন্য কোনও কিছু প্রবেশ করি যা বর্তমান অজগর প্রসঙ্গে নেই তবে এটি ব্যর্থ হবে NameError।
>>> input("Enter your name: ")
Enter your name: dummy
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'dummy' is not defined
পাইথন ২.7 এর সাথে সুরক্ষা বিবেচনা input:
যেহেতু যে কোনও ব্যবহারকারীর প্রকারের মূল্যায়ন করা হয়, এটি সুরক্ষা সম্পর্কিত সমস্যাগুলিও চাপায়। উদাহরণস্বরূপ, আপনি যদি ইতিমধ্যে osআপনার প্রোগ্রামটিতে মডিউলটি লোড করে থাকেন import osএবং তারপরে ব্যবহারকারী টাইপ করে
os.remove("/etc/hosts")
এটি অজগর দ্বারা একটি ফাংশন কল এক্সপ্রেশন হিসাবে মূল্যায়ন করা হবে এবং এটি কার্যকর করা হবে। আপনি যদি উন্নত সুবিধাসহ পাইথনটি চালাচ্ছেন তবে /etc/hostsফাইলটি মুছে ফেলা হবে। দেখুন, এটি কতটা বিপজ্জনক হতে পারে?
এটি প্রদর্শনের জন্য, আসুন inputআবার ফাংশনটি কার্যকর করার চেষ্টা করি ।
>>> dude = "thefourtheye"
>>> input("Enter your name: ")
Enter your name: input("Enter your name again: ")
Enter your name again: dude
এখন, যখন input("Enter your name: ")মৃত্যুদন্ড কার্যকর করা হয়, এটি ব্যবহারকারী ইনপুটটির জন্য অপেক্ষা করে এবং ব্যবহারকারী ইনপুটটি একটি বৈধ পাইথন ফাংশন অনুরোধ এবং তাই এটিও প্রার্থনা করা হয়। এজন্য আমরা Enter your name again:আবার প্রম্পট দেখতে পাচ্ছি ।
সুতরাং, আপনি raw_inputএই মত ফাংশন দিয়ে ভাল হয়
input_variable = raw_input("Enter your name: ")
আপনার যদি ফলাফলটিকে অন্য কোনও ধরণের রূপান্তর করতে হয় তবে আপনি ফিরে আসা স্ট্রিংটি রূপান্তর করতে উপযুক্ত ফাংশন ব্যবহার করতে পারেন raw_input। উদাহরণস্বরূপ, ইন্টিজার যেমন ইনপুট পড়া ব্যবহার করতে intফাংশন, দেখানো মত এই উত্তর ।
পাইথন ৩.x এ ব্যবহারকারীর ইনপুট পেতে একটি মাত্র ফাংশন রয়েছে এবং তাকে বলা হয় input, যা পাইথন ২.7 এর সমান raw_input।
inputএইভাবে আচরণ করার আশা করব , তবে কেবল ২.7-এ। আপনিpython --versionকমান্ড প্রম্পট থেকে চালালে এটি কী বলে ? বিকল্পভাবে, আপনি যদিimport sys; print(sys.version)আপনার স্ক্রিপ্টের শুরুতে লিখেন ?