পাইথন 3 এ `কাঁচা_পিন্ড ()` এবং `ইনপুট () between এর মধ্যে পার্থক্য কী?


362

পাইথন 3 raw_input()এবং এর input()মধ্যে পার্থক্য কী ?


3
পাইথন 2 এবং পাইথন 3 উভয়ই সামঞ্জস্যপূর্ণভাবে ইনপুট নেয় এমন কোনও প্রোগ্রাম আপনি কীভাবে তৈরি করবেন?
সলোমন উকো

2
এটি করতে আপনি নামের ত্রুটিগুলিকে সেট inputকরতে raw_inputএবং উপেক্ষা করার চেষ্টা করবেন ।
সলোমন উকো

3
অজগর 2 এবং 3 সামঞ্জস্যের জন্য 'ছয়' লাইব্রেরিটি সন্ধান করুন।
জ্যাক Homan 21

উত্তর:


418

পার্থক্যটি হ'ল raw_input()পাইথন ৩.x এ বিদ্যমান নেই, যখন রয়েছে input()। আসলে, পুরানোটির নতুন raw_input()নামকরণ হয়েছে input(), এবং পুরানোটি input()চলে গেছে, তবে সহজেই ব্যবহার করে সিমুলেশন করা যায় eval(input())। (মনে রাখবেন এটি eval()অশুভ।


93
"এর মধ্যে পার্থক্য কি raw_input...?" - "পার্থক্যটি হ'ল এখানে নেই raw_input।" ... বেশ মারাত্মক পার্থক্য, আমি বলব!
ivan_pozdeev

9
পাইথন 2-তে আমি অনুমান করি যে তারা ধারণা করেছিল যে প্রোগ্রামাররা প্রকৃতপক্ষে একটি কমান্ড হিসাবে ব্যবহার করতে চেয়েছিল ব্যবহারকারী ইনপুট, যেহেতু প্রাথমিকভাবে (আমার ধারণা) ব্যবহারকারীর কাছ থেকে ইনপুট অনুরোধ করা কেবল এটির জন্যই হতে পারে। কিন্তু যখন তারা বুঝতে পেরেছিল যে প্রোগ্রামাররাও "কাঁচা" ইনপুট পেতে চাইতে পারে, তারা "কাঁচা_পিন্ড" নামে আরও একটি ফাংশন ডিজাইন করেছিল। পাইথন 3 এ তারা লক্ষ্য করেছে যে নির্বোধটি কী এবং কেবলমাত্র একটি সাধারণ ফাংশন উপার্জন করে মূল ইনপুট ডিফল্টের সম্পাদনা মুছে ফেলে।
জে.সি. রোকমন্ডে

1
Repl.it, Py3.5.1 চলমান কীওয়ার্ড হিসাবে কাঁচা_পিন্ড () রয়েছে।
OldBunny2800

2
এটি বলা দরকার যে eval(এবং exec) সাধারণত এড়ানো উচিত কারণ তারা সুরক্ষার ঝুঁকি হতে পারে। বিশদগুলির জন্য, দয়া করে দেখুন এভাল সত্যই অভিজ্ঞ প্রবীণ নেড ব্যাচেল্ডারের দ্বারা বিপজ্জনক । এবং অবশ্যই সেই পরামর্শটি পুরানো পাইথন 2 এর ক্ষেত্রেও প্রযোজ্য input
প্রধানমন্ত্রী 2 রিং

1
@ পিএম 2 রিং আমি উত্তরে একটি সতর্কতা যুক্ত করেছি। অবশ্যই উভয়ের জন্য বৈধ ব্যবহারের কেস রয়েছে eval()এবং এটি exec()ব্যবহার eval()করার সিদ্ধান্ত নেওয়ার আগে আপনাকে প্রথমে কেন ব্যবহার করা উচিত নয় তা বুঝতে হবে understand
সোভেন মারনাচ

192

পাইথন 2 এ , raw_input()একটি স্ট্রিং দেয় এবং input()পাইথন এক্সপ্রেশন হিসাবে ইনপুট চালানোর চেষ্টা করে।

যেহেতু স্ট্রিং পাওয়া প্রায়শই আপনি যা চান তা তাই পাইথন 3 এটি দিয়ে input()। যেমনটি সোভেন বলেছেন, আপনি যদি কখনও পুরানো আচরণ চান, eval(input())কাজ করে।


7
আপনার যুক্ত করা উচিত যে পাইথন 3 নেই raw_input()
মার্টিন থোমা

পাইথন এক্সপ্রেশন হিসাবে চলমান ইনপুটটির কী ব্যবহার?
অক্ষয় বিজয় জৈন

1
@ অক্ষয় বিজয় জয়েন, সম্ভবত এটি সংখ্যা প্রবেশের উদ্দেশ্যে করা হয়েছিল। তবে এটি সম্পূর্ণ অনিরাপদ।
মারসফট

112

পাইথন 2:

  • raw_input() ব্যবহারকারী টাইপ করেছেন ঠিক সেটিকে গ্রহণ করে এবং স্ট্রিং হিসাবে এটি ফিরিয়ে দেয়।

  • input()প্রথমে নেয় raw_input()এবং তারপরে eval()এটিও সম্পাদন করে ।

মূল পার্থক্যটি হ'ল input()যেখানে সিন্টিক্যালি সঠিকভাবে পাইথন স্টেটমেন্টটি প্রত্যাশা raw_input()করে।

পাইথন 3:

  • raw_input()নামকরণ করা হয়েছিল input()তাই এখন input()সঠিক স্ট্রিং প্রদান করে।
  • পুরানো input()সরানো হয়েছিল।

আপনি যদি পুরানটি ব্যবহার করতে চান input(), যার অর্থ আপনাকে পাইথন স্টেটমেন্ট হিসাবে কোনও ইউজার ইনপুটকে মূল্যায়ন করতে হবে, আপনাকে এটি ব্যবহার করে ম্যানুয়ালি করতে হবে eval(input())


26

পাইথন 3-তে, raw_input()বিদ্যমান নেই যা ইতিমধ্যে সোভেন উল্লেখ করেছিলেন exist

পাইথন 2 এ, input()ফাংশনটি আপনার ইনপুটটিকে মূল্যায়ন করে।

উদাহরণ:

name = input("what is your name ?")
what is your name ?harsha

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    name = input("what is your name ?")
  File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined

উপরের উদাহরণে পাইথন ২.x হর্ষকে স্ট্রিংয়ের পরিবর্তে পরিবর্তনশীল হিসাবে মূল্যায়ন করার চেষ্টা করছে। এটি এড়াতে, আমরা আমাদের ইনপুটটির মতো "হর্ষ" এর মতো ডাবল উদ্ধৃতি ব্যবহার করতে পারি:

>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha

কাঁচা নিবেশ()

কাঁচা_পিন্ড () `ফাংশনটি মূল্যায়ন করে না, আপনি যা প্রবেশ করেন তা কেবল এটি পড়বে।

উদাহরণ:

name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'

উদাহরণ:

 name = eval(raw_input("what is your name?"))
what is your name?harsha

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    name = eval(raw_input("what is your name?"))
  File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined

উপরের উদাহরণ হিসাবে, আমি কেবল evalফাংশনটির সাথে ব্যবহারকারীর ইনপুটটি মূল্যায়ন করার চেষ্টা করছিলাম ।


7

পাইথন 2 ব্যবহারকারীদের জন্য প্রত্যেকের দেওয়া ব্যাখ্যাটিতে আমি আরও কিছু বিশদ যুক্ত করতে চাই । raw_input()যা এখন অবধি আপনি জানেন যে ব্যবহারকারী কোনও স্ট্রিং হিসাবে প্রবেশ করে এমন ডেটা যাচাই করে। এর অর্থ হল অজগর আবার প্রবেশ করা ডেটা এমনকি বোঝার চেষ্টা করে না। এটি যা বিবেচনা করবে তা হ'ল প্রবেশ করা ডেটা স্ট্রিং হবে, এটি আসল স্ট্রিং বা ইনট বা অন্য কোনও বিষয় whether

অন্যদিকে input()ব্যবহারকারীর দ্বারা প্রবেশ করা ডেটা বোঝার চেষ্টা করে। সুতরাং ইনপুটটি helloworldএমনকি ত্রুটিটি ' helloworld is undefined' হিসাবে দেখায় ।

উপসংহারে, পাইথন 2 এর জন্য একটি স্ট্রিং প্রবেশ করানোর জন্য আপনাকেও ' helloworld' এর মতো এটি প্রবেশ করতে হবে যা স্ট্রিংগুলি ব্যবহার করার জন্য পাইথনের ব্যবহৃত সাধারণ কাঠামো।


3

আপনি যদি তা নিশ্চিত করতে চান যে আপনার কোডটি পাইথন 2 এবং পাইথন 3 দিয়ে চলছে, আপনার স্ক্রিপ্টে ফাংশন ইনপুট () ব্যবহার করুন এবং এটি আপনার স্ক্রিপ্টের শুরুতে যুক্ত করুন:

from sys import version_info
if version_info.major == 3:
    pass
elif version_info.major == 2:
    try:
        input = raw_input
    except NameError:
        pass
else:
    print ("Unknown python version - input function not safe")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.