টি এল; ডিআর
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)
আপনার স্ক্রিপ্টের শুরুতে লিখেন ?