পাইথন 3 এ আমি কাঁচা_পিন্ড কীভাবে ব্যবহার করব


553
import sys
print(sys.platform)
print(2**100)
raw_input()

আমি পাইথন ৩.১ ব্যবহার করছি raw_inputএবং ডস পপ-আপকে "হিমায়িত" করতে পারছি না । আমি যে বইটি পড়ছি তা পাইথন 2.5 এর জন্য এবং আমি পাইথন ৩.১ ব্যবহার করছি

এটি ঠিক করতে আমার কী করা উচিত?


1
এইচএম, আমি নেম এরির পাচ্ছি: যখন আমি আপনার কোডটি ব্যবহার করার চেষ্টা করছি তখন নাম 'কাঁচা_পুট' সংজ্ঞায়িত হয় না। আপনি কি একই না?
সাইলেন্টগোস্ট

পরীক্ষা করে দেখুন docs.python.org/library/2to3.html এবং docs.python.org/3.0/whatsnew/3.0.html
MatrixFrog

9
পাইথন 3-তে অনেক কিছু পরিবর্তন হয়েছে, সুতরাং আপনার 2.5 বইয়ের (যা আসলেই পুরানো) কোনও বই ব্যবহার করে মাস্টার করার চেষ্টা করা উচিত নয়।
নিকলাস বি।

5
কাঁচা_পিন্ড অজগর 3
ক্রাইস্তান সম্মানে

আমি Oauth2 লিঙ্কটি অনুসরণ করার সময় একটি HTTP 401 ত্রুটি পাওয়া
বিগ ইয়ান

উত্তর:


1011

পাইথন 3 দিয়ে শুরু করে raw_input()নামকরণ করা হয়েছিল input()

পাইথন 3.0 এ নতুন কী থেকে , বিল্টিনস বিভাগের দ্বিতীয় আইটেম।


56
মূলত একটি ফাংশন ইনপুট ছিল () যা বর্তমান ইওল (ইনপুট ()) এর মতো কিছু কাজ করে। পাইথন যখন সুরক্ষার বিষয়ে কম সচেতন ছিল তখন থেকে এটি একটি বাকী ছিল। পরিবর্তনটি ভাষাটিকে সরল করেছে। আরও গভীর ব্যাখ্যার জন্য "এটি আমদানি করুন" দেখুন। আপনি কি কোনও বিকশিত হয়ে মৃত ভাষা পছন্দ করবেন? আশেপাশে প্রচুর আছে।
meawoppl

9
আমি পাইথন শিখছি পাশাপাশি মধ্যে এক পার্থক্য খুঁজে পাওয়া যায়নি input()এবং raw_input()a = input()ব্যবহারকারীর ইনপুট নেবে এবং এটিকে সঠিক ধরণে রাখবে। উদাহরণস্বরূপ: যদি ব্যবহারকারী 5 টাইপ করে তবে মানটি aপূর্ণসংখ্যা 5 a = raw_input()হয় ব্যবহারকারী ইনপুটটি গ্রহণ করে স্ট্রিং হিসাবে রাখবে। উদাহরণস্বরূপ: যদি ব্যবহারকারী 5 টাইপ করে তবে মানটি aস্ট্রিং '5' এবং কোনও পূর্ণসংখ্যা নয়। ভেবেছিলাম এটি আমার মতো অজগরের নবাগতদের কাছে ভাল তথ্য হতে পারে।
বিষ্ণু নারানগ

10
@VishnuNarang হাঁ, যে পাইথন 2. কিন্তু পাইথন 3 সঠিক, এই আচরণ পরিবর্তন করে এবং ইনপুট কি raw_input 2. পাইথন করেছিল করে
balpha

4
@ বলফা: সবেমাত্র যাচাই করা হয়েছে। আপনি সঠিক. আমার অজগর রয়েছে ২.7 (এটি উল্লেখ করার জন্য উত্তরটি সম্পাদনা করতে পারি না ...)
বিষ্ণু নারং

3
@ মায়োপ্পল অজগর থেকে ২ থেকে ৩ চালানো বোঝা যাচ্ছিল breaking এর অর্থ এই নয় যে এটি হওয়া উচিত ছিল। কোনও ভাষা মারা না গিয়ে এবং ফাংশনের স্বাক্ষর পরিবর্তন না করে বিকশিত হতে পারে। আপনার যদি কোনও বিশ্বব্যাপী ক্রিয়া না থাকে তবে এটি সহায়তা করে। অন্যান্য ভাষাগুলি থেকে কিছুটা অন্তর্দৃষ্টি দিয়ে শুরু করুন। ইত্যাদি। ফাংশনগুলি সরানো টেবিলের বাইরেও নেই।
dlamblin

117

এটি পাইথন 3.x এবং 2.x এ কাজ করে:

# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))

4
আমি এই পদ্ধতির সাথে একটি স্কোপ ইস্যু পাচ্ছিলাম । global inputকলিং ফাংশনের শীর্ষে এটি দিয়ে স্থির করে দিন ।
কেভেলার 1818

1
এটি আমার কাছে কিছুটা পরিষ্কার বলে মনে হচ্ছে: import __builtin__; input = getattr(__builtin__, 'raw_input', input)
এমবারখানা

3
পাইথন 3 এর কোনও মডিউল নেই __builtin__
সিস টিমারম্যান

@ এমবারখাউ: এটি খুব বিশ্বব্যাপী। আপনি যদি এমন লাইব্রেরি কল করেন যা এটি প্রত্যাশা করে না? পাইথন 3 __builtin__এ নতুন নামকরণ করা builtinsহয়েছে উভয় __builtins__সিপিথনের মতোই উপলব্ধ ।
jfs

3
getattr(__builtins__, 'raw_input', input)পাইথন ২.7.২ এ আমদানি করা হলে ডিফল্টটি ফেরত দেয়।
সিস টিমারম্যান

45

এটির সমাধানের একটি নির্ভরযোগ্য উপায়

from six.moves import input

ছয়টি একটি মডিউল যা 2/3 সাধারণ কোড বেইজ পয়েন্টগুলির অনেকগুলি জুড়ে।


1
ভাল ধারণা ... এবং যদি আপনি তা করেন তবে আপনি নিজের স্ক্রিপ্টে from six.moves import input as raw_inputরাখতে পারেন raw_inputএবং উভয় পাইথন সংস্করণ ব্যবহার করে চালাতে পারেন ।
eddy85br

15

যেমনটি অন্যেরা ইঙ্গিত করেছে, raw_inputফাংশনটির নামটি inputপাইথন 3.0.০ এ পুনরায় নামকরণ করা হয়েছে , এবং আপনাকে আরও একটি যুগোপযোগী বই দ্বারা আরও ভালভাবে পরিবেশন করা হবে তবে আমি উল্লেখ করতে চাই যে আপনার স্ক্রিপ্টের আউটপুট দেখার আরও ভাল উপায় আছে ।

আপনার বর্ণনা থেকে, আমি মনে করি আপনি উইন্ডোজ ব্যবহার করছেন, আপনি একটি .pyফাইল সংরক্ষণ করেছেন এবং তারপরে আপনি এটিতে ডাবল-ক্লিক করছেন clicking আপনার প্রোগ্রামটি শেষ হওয়ার সাথে সাথে টার্মিনাল উইন্ডোটি বন্ধ হয়ে যায়, যাতে আপনি দেখতে পাচ্ছেন না যে আপনার প্রোগ্রামটির ফলাফল কী ছিল। এটি সমাধানের জন্য, আপনার বইটি ব্যবহারকারী raw_input/ inputপ্রেসগুলি প্রবেশ না হওয়া পর্যন্ত অপেক্ষা করার জন্য একটি / বিবৃতি যুক্ত করার পরামর্শ দেয় । যাইহোক, আপনি যেমনটি দেখেছেন, যদি কোনও কিছু ভুল হয়ে যায়, যেমন আপনার প্রোগ্রামে একটি ত্রুটি, সেই বিবৃতি কার্যকর করা হবে না এবং আপনি কী ভুল হয়েছে তা দেখতে সক্ষম না হয়ে উইন্ডোটি বন্ধ হয়ে যাবে। কমান্ড-প্রম্পট বা আইডিএল ব্যবহার করা আপনার পক্ষে আরও সহজ হতে পারে।

একটি কমান্ড-প্রম্পট ব্যবহার করুন

আপনি যখন পাইথন প্রোগ্রামযুক্ত ফোল্ডার উইন্ডোটি দেখছেন, তখন শিফটটি ধরে রাখুন এবং উইন্ডোর সাদা পটভূমির অঞ্চলে যে কোনও জায়গায় ডান-ক্লিক করুন। পপ আপ করা মেনুতে "এখানে কমান্ড উইন্ডো খুলুন" এন্ট্রি থাকা উচিত। (আমি মনে করি এটি উইন্ডোজ ভিস্তা এবং উইন্ডোজ on এ কাজ করে)) এটি একটি কমান্ড-প্রম্পট উইন্ডোটি খুলবে যা দেখতে এমন কিছু দেখাচ্ছে:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

    C:\Users\Weeble\My Python Program>_

আপনার প্রোগ্রামটি চালাতে, নিম্নলিখিতটি টাইপ করুন (আপনার স্ক্রিপ্টের নামটি প্রতিস্থাপন করুন):

    python myscript.py

... এবং এন্টার টিপুন। (যদি আপনি একটি ত্রুটি পেয়ে থাকেন যে "পাইথন" স্বীকৃত আদেশ নয়, দেখুন http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) আপনার প্রোগ্রামটি চলমান শেষ হয়ে গেলে, উইন্ডোটি সফলভাবে শেষ হয় কিনা, উইন্ডোটি খোলা থাকবে এবং কমান্ড-প্রম্পট আবার প্রদর্শিত হবে আপনার জন্য অন্য একটি কমান্ড টাইপ করার জন্য। আপনি যদি আবার আপনার প্রোগ্রামটি চালাতে চান তবে আপনি যে আগের কমান্ডটি লিখেছিলেন তা পুনরুদ্ধার করতে আপনি উপরের তীর টিপতে পারেন এবং প্রতিবার ফাইলের নাম টাইপ না করে আবার চালানোর জন্য এন্টার টিপতে পারেন।

আইডিএল ব্যবহার করুন

আইডিএল হ'ল একটি সাধারণ প্রোগ্রাম সম্পাদক যা পাইথনের সাথে ইনস্টল হয়। অন্যান্য বৈশিষ্ট্যগুলির মধ্যে এটি আপনার উইন্ডোতে আপনার প্রোগ্রামগুলি চালাতে পারে। আপনার .pyফাইলটিতে ডান ক্লিক করুন এবং "আইডিএল সম্পাদনা করুন" নির্বাচন করুন। আপনার প্রোগ্রামটি সম্পাদকটিতে উপস্থিত হলে, F5 টিপুন বা "রান" মেনু থেকে "রান মডিউল" নির্বাচন করুন। আপনার প্রোগ্রামটি এমন একটি উইন্ডোতে চলবে যা আপনার প্রোগ্রামটি শেষ হওয়ার পরে খোলা থাকে এবং এতে আপনি তৎক্ষণাৎ চালনার জন্য পাইথন কমান্ডগুলি প্রবেশ করতে পারেন।


আইডিএল উইন্ডোজ দিয়ে ইনস্টল করা হয়? আমার টার্মিনালে আইডিএল বা নিষ্ক্রিয় চলমান খালি আসে।
ভিজিওফ

1
উইন্ডোজে পাইথন দিয়ে আইডিএল ইনস্টল করা আছে। এটি স্টার্ট মেনুতে শর্টকাট এবং .py ফাইলগুলির জন্য একটি ফাইল অ্যাসোসিয়েশন হিসাবে উপস্থিত হয়, তবে আমি মনে করি না ডিফল্টরূপে আপনার পথে কোনও 'নিষ্ক্রিয়' কমান্ড যুক্ত রয়েছে। আপনি যদি কমান্ড-লাইন থেকে এটি শুরু করতে চান, আপনি চালাতে পারেনpythonw -m idlelib.idle
ওয়েবেল

এটি ব্যাখ্যা করে। আমি ওএস হিসাবে নয়, কেবল অর্থ উপার্জনের জন্য উইন্ডোজকে স্পর্শ করি। আমি তখন বলব যে আপনার "আইডিএল ব্যবহার করুন" বিভাগটি তখন পক্ষপাতদুষ্ট। আপনার বেছে নেওয়া উচিত, সম্ভবত উল্লেখ করা উচিত।
vgoff

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

ডস বিভিন্ন ঘনিষ্ঠভাবে সম্পর্কিত অপারেটিং সিস্টেমগুলির সংক্ষিপ্ত রূপ যা 1981 এবং 1995 এর মধ্যে বা প্রায় 2000 পর্যন্ত আংশিক ডস-ভিত্তিক মাইক্রোসফ্ট উইন্ডোজ সংস্করণ 95, 98 এবং মিলেনিয়াম সংস্করণ অন্তর্ভুক্ত করে।
vgoff

7

কোড চালানোর Undefined nameসময় টিমর্ম্যানের সমাধানটি দুর্দান্ত কাজ করে তবে পাইফ্লেকস বা অনুরূপ লিন্টার ব্যবহার করার সময় আপনি ত্রুটি পেতে না চাইলে পরিবর্তে নিম্নলিখিতটি ব্যবহার করতে পারেন:

try:
    import __builtin__
    input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
    pass

অঁ্যা, আমার এখনও pylint ত্রুটি প্রচুর পাচ্ছি: Redefining built-in 'input' (redefined-builtin), Unable to import '__builtin__' (import-error), Invalid constant name "input" (invalid-name)
বাবকেন বর্ধন্যান

কোড শৈলীর কথা ভেবে @BakkenVardanyan পাইলটটি অত্যন্ত কুখ্যাত। আমি আপনাকে সুপারিশ করব flake8বা pyflakesযাতে আপনার সমস্ত দিন অর্থহীন সতর্কতা সহ না নেয়।
jmagnusson

6

আমি এখানে আমার স্ক্রিপ্টগুলিতে রেখেছি এমন একটি কোডের টুকরো যা আমি পাই 2/3-অজ্ঞেয় পরিবেশে চালাতে চাই না:

# Thank you, python2-3 team, for making such a fantastic mess with
# input/raw_input :-)
real_raw_input = vars(__builtins__).get('raw_input',input)

এখন আপনি রিয়েল_আর_ইনপুট ব্যবহার করতে পারেন। এটি বেশ ব্যয়বহুল তবে সংক্ষিপ্ত এবং পাঠযোগ্য। কাঁচা ইনপুট ব্যবহার করা সাধারণত ব্যয়বহুল (ইনপুটটির অপেক্ষায়), তাই এটি গুরুত্বপূর্ণ নয়।

তত্ত্ব হিসাবে, আপনি এমনকি রিয়েল_আর_ইনপুটের পরিবর্তে কাঁচা_পিন্ড নির্ধারণ করতে পারেন তবে এমন মডিউল থাকতে পারে যা কাঁচা_পিন্ডের অস্তিত্ব পরীক্ষা করে এবং সেই অনুসারে আচরণ করে। এটি নিরাপদে থাকাই ভাল।


আমি এই যখন আমি এটা চেষ্টা: inputcons = Vars ( builtins ) .get ( 'raw_input', ইনপুট) TypeError: Vars () যুক্তি থাকতে হবে অভি অ্যাট্রিবিউট

0

সম্ভবত সেরা সমাধান নয়, তবে এখানে আসার আগে আমি অধ্যয়ন থেকে দ্রুত বিরতি না নিয়ে কাজ চালিয়ে যাওয়ার জন্য কেবল ফ্লাইতে এটি তৈরি করেছি।

def raw_input(x):
  input(x)

তারপরে যখন আমি raw_input('Enter your first name: ')স্ক্রিপ্টটিতে কাজ করছিলাম তখন এটি এটি ক্যাপচার করেinput()

এটি না করার কোনও কারণ থাকতে পারে, যে আমি এখনও পারিনি!


7
শুধু কেন নয় raw_input = input?
tonypdmtr 12'19
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.