'অন্যথায়' এর সঠিক বাক্য গঠন কী?


284

আমি একজন নতুন পাইথন প্রোগ্রামার যিনি ২.6.৪ থেকে ৩.১.১-তে লাফিয়ে চলেছেন। আমি 'অন্যথায়' বিবৃতিটি ব্যবহার করার চেষ্টা না করা পর্যন্ত সবকিছু ঠিক হয়ে গেছে। দোভাষী আমাকে 'যদি' ইন 'এর পরে' অন্যথায় 'এর পরে একটি সিনট্যাক্স ত্রুটি দেয় কারণটির জন্য আমি খুঁজে বের করতে পারি না বলে মনে হয়।

def function(a):
    if a == '1':
        print ('1a')
    else if a == '2'
        print ('2a')
    else print ('3a')

function(input('input:'))

আমি সম্ভবত খুব সাধারণ কিছু মিস করছি; তবে, আমি নিজে থেকে উত্তরটি খুঁজে পেতে সক্ষম হইনি।


3
আমি মনে করি না এটি 2.6.4 এ কাজ করে।
wRAR

আসলে, পাইথন সিনট্যাক্স এবং শব্দার্থবিজ্ঞানের এই উপাদানটি এই সংস্করণগুলির মধ্যে পরিবর্তিত হয়নি। সম্ভবত কখনও না।
মাইক গ্রাহাম

পাইথনে / অন্যথায় যদি আপনি একটি ভাল টিউটোরিয়াল দিয়ে শুরু করতে পারেন: dreamsyssoft.com/python-scriptting-tutorial/ifelse-tutorial.php
ট্রাইটন ম্যান

উত্তর:


444

পাইথনে "অন্যথায় যদি" ​​বানান হয় তবে "এলিফ"।
এছাড়াও, আপনার elifএবং এর পরে একটি কোলন প্রয়োজন else

একটি সাধারণ প্রশ্নের সহজ উত্তর। আমার প্রথম একই সমস্যা হয়েছিল, যখন আমি প্রথম শুরু করেছি (কয়েক সপ্তাহের মধ্যে)।

সুতরাং আপনার কোডটি পড়া উচিত:

def function(a):
    if a == '1':
        print('1a')
    elif a == '2':
        print('2a')
    else:
        print('3a')

function(input('input:'))

11
কোনও উদ্বেগ নেই, আমাদের সবাইকে কিছু না কিছু শিখতে হবে। আমি অদ্ভুত দেখতে পাই যে পাইথন পাঠযোগ্যতার উপরে এমন একটি এলফিস রাখে এবং তারপরে অন্যটির পরিবর্তে এলকিফ ব্যবহার করে। আমি পাইথন এপিআই ম্যানুয়ালটি সর্বদা উন্মুক্ত রাখার পরামর্শ দিচ্ছি: ডকস.পিথন.আর.আর.১.১ গুরুত্বপূর্ণ লিঙ্কগুলি টিউটোরিয়াল: ডকস.পাইথন.আর.৩.১ / টিউটোরিয়াল / ইন্ডেক্স.চ.টি.এম. ভাষা রেফারেন্স: ডকস.পিথন.আর.এন.এফ / রেফারেন্স /index.html লাইব্রেরি রেফারেন্স: docs.python.org/3.1/library/index.html
লিন্ডন হোয়াইট

1
পার্ল একই কীওয়ার্ডটি ব্যবহার করে এবং এর যুক্তিটি হ'ল দুর্ঘটনা রোধ করা যেখানে আপনি আগের কোনও বিবৃতি লেখা শেষ করতে ভুলে যান এবং বিবৃতি যদি আপনি অন্য লেখা শুরু করেন writing দৃশ্যত সি কোড লেখার সময় এটি একটি সাধারণ সমস্যা ছিল।
ন্যাট গ্লেন

1
@NateGlenn পার্ল আসলে ব্যবহারসমূহ elsif, আমি অনুমান পাইথন যে হতে হয় এক চরিত্র আরও দক্ষ। "এলিফ" এর উৎপত্তি সি প্রিপ্রোসেসরের সাথে হয়েছিল, যা #elifপাইথন এএএএফসিটির অনেক আগে ব্যবহার হয়েছিল। স্পষ্টতই, সেই প্রসঙ্গে একটি একক-টোকেন নির্দেশনা মূল্যবান, কারণ #else if <code>বনাম পার্সিংয়ের #else <code that could theoretically even be an if statement>ফলে এমন একটি সিনট্যাক্স জটিল হয়ে উঠবে যেটি বগু-সরল হতে পারে।
30:48


13
def function(a):
    if a == '1':
        print ('1a')
    elif a == '2':
        print ('2a')
    else:
        print ('3a')

10

প্রাচীন কাল থেকেই if/else ifপাইথনে সঠিক বাক্য গঠন elif। যাইহোক, আপনি খুব বেশি if/else.eg থাকলে অভিধান ব্যবহার করতে পারেন

d={"1":"1a","2":"2a"}
if not a in d: print("3a")
else: print (d[a])

এমএসডব্লিউর জন্য, অভিধান ব্যবহার করে কার্য সম্পাদন করার উদাহরণ।

def print_one(arg=None):
    print "one"

def print_two(num):
    print "two %s" % num

execfunctions = { 1 : (print_one, ['**arg'] ) , 2 : (print_two , ['**arg'] )}
try:
    execfunctions[1][0]()
except KeyError,e:
    print "Invalid option: ",e

try:
    execfunctions[2][0]("test")
except KeyError,e:
    print "Invalid option: ",e
else:
    sys.exit()

1
আপনি পারেন, তবে দয়া করে এটি করবেন না। অভিধানের জন্য একটি ভাল প্রতিস্থাপন নয় elif
এসলট

@ এস.লোট, ওপির কেস সহজ। যদি তাকে ক এর অনেকগুলি মান পরীক্ষা করতে হয়, তবে একটি অভিধান নিকটতর। আপনি এটি ব্যবহার না করার অভ্যাস তৈরি করতে পারেন, তবে আমি এটি ব্যবহার করে চলেছি এবং / অন্যথায় অনেকের কোডিংয়ের চেয়ে আমি এই পদ্ধতির পছন্দ করি। হেক, আমি এমনকি ফাংশন সম্পাদন করতে অভিধান ব্যবহার করি।
ghostdog74

1
@ ঘোস্টডগ: আমি জানি যে আপনি ফাংশনগুলি সম্পাদন করতে অভিধান ব্যবহার করতে পারেন তবে ধারণাটি আমাকে ভয়ঙ্কর করে তুলছে গুনী গোটোস বা টিসিএল স্ট্রিংগুলিকে একসাথে পেস্ট করা এবং execসেগুলি যুক্ত করার মতো। এই ভাল অনুশীলন? আপনি একটি উদাহরণ দিতে পারেন?
এমএসডব্লিউ

@ এমএসডব্লিউ: এটি খুব ভাল অনুশীলন। উদাহরণ: আপনি কিছু সাধারণ স্ক্র্যাপিং অনুশীলনের জন্য নয় একটি এক্সএমএল স্ট্রিমটি পড়ছেন তবে এমন এক যেখানে আপনাকে বিভিন্ন উপাদান ট্যাগের জন্য পৃথক প্রসেসিং করা দরকার যেমন একটি এক্সেল 2007 স্প্রেডশিট ফাইলটি একাধিক এক্সএমএল নথিগুলির একটি জিপ, কিছু কিছু জটিল। প্রতিটি ট্যাগের জন্য আপনার আলাদা পদ্ধতি রয়েছে। আপনি একটি অভিধানের মাধ্যমে প্রেরণ। ভয় পাওয়ার কিছু নেই। হ্যান্ডলিংয়ের পদ্ধতিটি যদি <foo>হয় do_foo, অ্যাপটি শুরু হওয়ার সাথে সাথে আপনি ফ্লাইতে ডিকটি তৈরি করতে পারেন।
জন মাচিন

1
নোট করুন যে অভিধানটির একটি .getপদ্ধতি রয়েছে যা আপনাকে একটি ডিফল্ট মান নির্দিষ্ট করতে দেয়। আপনার প্রথম উদাহরণটি লিখিত হতে পারেprint d.get(a, "3a")
কোডেপ

4

আপনার ফাংশনটির সামান্য রিফ্যাক্টরিং এখানে দেওয়া হয়েছে (এটি "অন্য" বা "এলিফ" ব্যবহার করে না):

def function(a):
    if a not in (1, 2):
        a = 3
    print(str(a) + "a")

@ ঘোস্টডোগ :৪: পাইথন 3 এর জন্য "মুদ্রণ" এর জন্য প্রথম বন্ধনী প্রয়োজন।


অজগর 3 পাইথন 2 এর মুদ্রণ বিবৃতিটি একটি ফাংশন যেমন প্রয়োজনীয় বন্ধনীগুলির সাথে প্রতিস্থাপন করেছে এবং আপনি যদি যাচ্ছেন তবে আপনি কেবল sys.stdout.write ব্যবহার করতে পারেন
ড্যান ডি

2
হওয়া উচিত ('1', '2'),
অপটি

2
def function(a):
    if a == '1':
        print ('1a')
    else if a == '2'
        print ('2a')
    else print ('3a')

এটিকে সংশোধন করা উচিত:

def function(a):
    if a == '1':
        print('1a')
    elif a == '2':
        print('2a')
    else:
        print('3a')

যেমন আপনি দেখতে পাচ্ছেন, অন্যথায় যদি এলিফতে পরিবর্তন করা উচিত তবে '2' এর পরে কোলন থাকা উচিত এবং অন্যথায় অন্য বিবৃতি দেওয়ার পরে একটি নতুন লাইন থাকা উচিত এবং মুদ্রণ এবং প্রথম বন্ধনীগুলির মধ্যে স্থানটি বন্ধ করা উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.