ইন্ডেন্টেশন এরর: আনইন্ডেন্ট কোনও বহিরাগত ইনডেন্টেশন স্তরের সাথে মেলে না


584

আমি নীচের পাইথন কোডটি সংকলন করলে আমি পাই get

ইন্ডেন্টেশন এরর: আনইন্ডেন্ট কোনও বহিরাগত ইনডেন্টেশন স্তরের সাথে মেলে না


import sys

def Factorial(n): # Return factorial
    result = 1
    for i in range (1,n):
        result = result * i
    print "factorial is ",result
    return result

কেন?


7
এবং সম্ভবত (1, n + 1) রেঞ্জটি আরও ভাল হবে, যদি আপনি আপনার
গণনায়

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

14
আমি সাব্লাইম টেক্সট 3 ব্যবহার করছি I আমার একটি জ্যাঙ্গো প্রকল্প রয়েছে। আমি ত্রুটিটি ব্যবহার করে সংশোধন করেছিView > Indentation > Intent Using Spaces
অভিমন্যুআরায়ান

পাইচার্মে এই সমস্যাটি থাকলে, ট্যাবগুলিকে সামঞ্জস্য করতে এবং কনফিগগুলিতে ব্যবধান কাজ করে না। সমস্যাটি ছিল আমার কাছে একটি ~ / .editorconfig ফাইল ছিল যা পাইচার্ম কনফিগারেশনকে ওভাররাইড করে।
কেন মায়ার্স

আমি আইডিএল ব্যবহার করে ইন্ডেন্টেশন সম্পর্কিত সমস্যাগুলি খুঁজে পাওয়া আরও সহজ করে তোলে found এটি স্পষ্টভাবে ইনডেন্টেশন ত্রুটিগুলি খুঁজে পাবে যা বেশিরভাগ সম্পাদকরা খুঁজে পাবেন না।
ডেনিস গাথাগু

উত্তর:


668

অন্যান্য পোস্টার সম্ভবত সঠিক ... আপনার ট্যাবগুলির সাথে মেশানো ফাঁকা স্থান থাকতে পারে। কয়েকটি স্পেস দিয়ে সমস্ত ট্যাব প্রতিস্থাপন করতে অনুসন্ধান এবং প্রতিস্থাপনের চেষ্টা করুন।

এটা চেষ্টা কর:

import sys

def Factorial(n): # return factorial
    result = 1
    for i in range (1,n):
        result = result * i
    print "factorial is ",result
    return result

print Factorial(10)

2
হ্যাঁ, আমাকে শেষ দুটি লাইনে অভ্যন্তরীণ লুপ অংশের উপরে সত্যই স্থান দিতে হয়েছিল (কেবলমাত্র) in কেন নিশ্চিত নয় ...
cbrulak

3
আমার প্রথম লাইন, "ফলাফল = 0" (যা সংশোধন করার জন্য ধন্যবাদ 1 হওয়া উচিত) বাকি ট্যাবড করার সময়,
ফাঁকা ছিল

1
হ্যাঁ, এটি কৃপণ হতে পারে। আমি পাইথন সম্পাদনা করতে ইম্যাক্স ব্যবহার করি এবং পাই ফাইলে স্পেস দিয়ে ট্যাবগুলি সর্বদা প্রতিস্থাপন করার জন্য আমার এটি সেটআপ আছে যাতে আমার এই সমস্যা না হয়। নোটপ্যাড ++ এর মতোও বিকল্প থাকতে পারে।
কেভিন টিঘে

3
এটিএম একই সমস্যা পেয়েছেন :)। সাব্লাইমেক্সট স্পটগুলি বিন্দু হিসাবে দেখায়, এটি বেশ কার্যকর।
ক্রিস

সুতরাং ধরে রাখুন আপনি স্পেস বা ট্যাবগুলি দিয়ে ইন্ডেন্ট করতে পারেন। তোমার শুধু কনসেন্টেন্ট হওয়া দরকার? মাথা ঠাণ্ডা
ডেভিড

265

গুরুত্বপূর্ণ : শূন্যস্থানের পছন্দের পদ্ধতি আছে - দেখুন PEP008 আঁকাবাঁকা রেখা এবং ট্যাব অথবা শূন্যস্থানের? । (এর জন্য @ সিহাকে ধন্যবাদ।)

জন্য Sublime Textব্যবহারকারী:

Sublime Textইনডেন্টেশনের জন্য ট্যাব ব্যবহার করতে সেট করুন : View-> Indentation->Convert Indentation to Tabs

আনচেক করুন Indent Using Spacesউপরের একই সাব-মেনুতে বিকল্পটি । এটি অবিলম্বে এই সমস্যাটি সমাধান করবে।


1
এছাড়াও যখনই পাইথন ব্যবহার করছেন, নিশ্চিত হন যে আপনি যে কোনও আইডিই / পাঠ্য সম্পাদক ব্যবহার করেন
অ্যাক্টিভেটজেক

20
এটিএমে, প্যাকেজগুলি> হোয়াইটস্পেস> স্পেসগুলিকে ট্যাবগুলিতে রূপান্তর করুন এবং আপনি পাইথনের সিনট্যাক্স ত্রুটির মাথাব্যথা এড়াতে পারবেন!
loretoparisi

1
দেখতে PEP008 - শূন্যস্থানের পছন্দের পদ্ধতি হয় আঁকাবাঁকা রেখা এবং ট্যাব অথবা শূন্যস্থানের? । এটি এইভাবে রাউন্ডে করতে সুব্লাইম সেটআপও করা যেতে পারে।
সিহাহ

13
আপনি বলছেন স্পেসগুলি পছন্দসই পদ্ধতি তবে আপনার উত্তরটি লোকদের পরিবর্তে ট্যাব ব্যবহার করতে পরাশক্তি জিজ্ঞাসা করতে বলে! আমি দ্বিধান্বিত
Göta

@ নুনোকালাইম আচ্ছা দুর্ভাগ্যক্রমে, আমি প্রশ্নের উত্তর দেওয়ার পরে এটি ঘটেছে। আপনি যদি কোনও নতুন প্রকল্প শুরু করে থাকেন তবে দয়া করে স্থানগুলির পছন্দসই কৌশলটি ব্যবহার করুন। এই কারণেই আমি সাহসীভাবে একটি সম্পাদনা করেছি যাতে যে কোনও আগমনকারী অস্বীকার সম্পর্কে সচেতন হয়।
অ্যাক্টিভেটেজিক

137

ট্যাবস / স্পেসগুলির সাথে সহজে সমস্যাগুলি যাচাই করতে আপনি আসলে এটি করতে পারেন:

python -m tabnanny yourfile.py

অথবা আপনি অবশ্যই সঠিকভাবে আপনার সম্পাদক সেট আপ করতে পারেন :-)


1
আমি এটি কোনও ট্যাব / স্পেস ইন্ডেন্টেশন ত্রুটিযুক্ত কোনও ফাইলে চেষ্টা করেছি, তবে কোনও ভুল ট্যাব ফাইল সহ কোনও আউটপুট নেই। কোন ধারণা?
লুচাক্স

1
আমার স্পেসে সমস্যা ছিল এবং ত্রুটিটি বলেছিল এটি 191 লাইনে ছিল, তবে তাব্নানির জন্য ধন্যবাদ আমি দেখতে পেলাম যে আসল সমস্যাটি সেই লাইনে ছিল না, তবে উপরের লাইনে।
richar8086

ধন্যবাদ! কি দুর্দান্ত টিপ। ভিএস কোডে flake8 দ্বারা ত্রুটি চিহ্নিত করা হয়েছিল তবে সমস্যাটি কোথায় তা সনাক্ত করতে পারেনি - তাব্নান্নি একটি মাইক্রোসেকেন্ডে করেছিলেন।
স্টিভ

39

আপনি কি নিশ্চিত যে আপনি নিজের ইনডেন্টেশন সাদা জায়গাতে ট্যাব এবং স্পেসগুলি মিশ্রিত করছেন না? (এটি সেই ত্রুটির কারণ ঘটবে))

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


আমি বিভ্রান্ত উপরের উত্তরটি ফাঁকা পরিবর্তে ট্যাবগুলি ব্যবহার করার জন্য একটি পাঠ্য সম্পাদক বিকল্পকে স্যুইচ করতে বলে।
স্পুরা

3
@ বনানাকোড যতক্ষণ আপনি কেবলমাত্র ট্যাব বা কেবলমাত্র স্পেস ব্যবহার করেন ততক্ষণ প্রযুক্তিগতভাবে আপনি কোনটি বেছে নিন তা বিবেচ্য নয়। যদিও অজগরটির জন্য, স্পেসগুলি অগ্রাধিকার দেওয়া হয়, আমি যে লিঙ্কটি উল্লেখ করেছি তা দেখুন।
zdan

21

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


13

আপনি যদি পাইথনের আইডিএল সম্পাদক ব্যবহার করেন তবে এটি একইরকম ত্রুটি বার্তাগুলির মধ্যে একটি হিসাবে পরামর্শ হিসাবে আপনি করতে পারেন:

1) সমস্ত নির্বাচন করুন, যেমন Ctrl+A

2) ফর্ম্যাট -> আনটাবিফাই অঞ্চলটিতে যান

3) আপনার ইনডেন্টিংটি এখনও সঠিক কিনা ডাবল পরীক্ষা করে দেখুন, আপনার প্রোগ্রামটি সংরক্ষণ করুন এবং পুনরায় চালু করুন।

আমি পাইথনটি 2.5.4 ব্যবহার করছি


9

আপনি যদি ভিম ব্যবহার করছেন তবে এস্কেপ চাপুন এবং তারপরে টাইপ করুন

GG = জি

এই অটোতে সমস্ত কিছু প্রবেশ করে এবং আপনি যে কোনও স্থান ফেলেছেন তা সাফ করবে।


8

রেখাটি: যুক্ত করা result = result * iউচিত (এটি লুপের মূল অংশ)।

অথবা - আপনার কাছে মিশ্রিত স্থান এবং ট্যাব অক্ষর রয়েছে


আমাকে সম্পাদনাটি এসওতে পরিবর্তন করতে হয়েছিল, আজব। প্রশ্নটিতে আমার আপডেট হওয়া "সম্পাদনা" নোটটি দেখুন
সিব্রুলাক

ঠিক আছে, তাই আমি বিশ্বাস করি যে আমার উত্তরের দ্বিতীয় লাইনটি সঠিক - আপনার কাছে মিশ্রিত স্থান এবং ট্যাব অক্ষর রয়েছে (যথাক্রমে ASCII তে 32 এবং 8)
আবলান

5

উপর অ্যাটম

যাও

Packages > Whitespace > Convert Spaces to Tabs

তারপরে আবার আপনার ফাইল ইন্ডেন্টেশন পরীক্ষা করুন:

python -m tabnanny yourFile.py

অথবা

>python
>>> help("yourFile.py")

4

ইন্ডেন্টেশন সমস্যা বলে মনে হচ্ছে। পাইথনে আপনার কোঁকড়ানো বন্ধনীগুলির সাথে মিল করতে হবে না তবে আপনি তা করেন ইনডেন্টেশন স্তরের সাথে মিল ।

স্থান / ট্যাব সমস্যা রোধ করার সর্বোত্তম উপায় হ'ল আপনার পাঠ্য সম্পাদকের মধ্যে অদৃশ্য অক্ষরগুলি প্রদর্শন করা। এটি আপনাকে ইনডেন্টেশন সম্পর্কিত ত্রুটিগুলি প্রতিরোধ এবং / অথবা সমাধানের একটি দ্রুত উপায় দেবে।

এছাড়াও, কপিরাইট-পেস্ট করা কোড ইনজেকশন এই ধরণের সমস্যার সাধারণ উত্স।


4

যদি আপনি নোটপ্যাড ++ ব্যবহার করেন তবে \ t সন্ধান করতে প্রসারিত অনুসন্ধান মোডের সাথে একটি "প্রতিস্থাপন" করুন এবং চারটি স্পেস দিয়ে প্রতিস্থাপন করুন।


2

অ্যাটম ব্যবহারকারীদের জন্য, Packages ->whitspace -> remove trailing whitespaces এটি আমার পক্ষে কাজ করেছিল


2

শুধু একটি সংযোজন। নোটপ্যাড ++ এ উভয় ইন্ডেন্টেশন নিয়ে আমার একই সমস্যা ছিল।

  1. অব্যক্ত ইন্ডেন্টেশন
  2. আউটার ইনডেন্টেশন স্তর

    ----> অনুসন্ধান ট্যাবে যান ----> প্রতিস্থাপনে আলতো চাপুন ----> বর্ধিত রেডিও বোতামটি টিপুন নীচে ---> এখন space টিকে চারটি স্পেস দিয়ে প্রতিস্থাপন করুন

    ----> অনুসন্ধান ট্যাবে যান ----> প্রতিস্থাপনে আলতো চাপুন ----> নীচে প্রসারিত রেডিও বোতামটি টিপুন ---> এখন কিছু না দিয়ে replace n প্রতিস্থাপন করুন


2

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



1

এটি হতে পারে কারণ উপরে ফাংশনটি একইভাবে ইন্টেন্ট করা হয়নি। অর্থাত

class a:
    def blah:
      print("Hello world")
    def blah1:
      print("Hello world")

1

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


1

যেহেতু আমি বুঝতে পারছি সেখানে কোন উত্তর নির্দিষ্ট spyder, আমি এক যুক্ত করতে হবে: মূলত, সাবধানে আপনার তাকান ifবিবৃতি এবং নিশ্চিন্ত হন যে সমস্ত করা if, elifএবং elseএকই ব্যবধান হয় যে তারা তাই মত শুরুতে একই লাইনে আছেন আছে:

def your_choice(answer):
    if answer>5:
        print("You're overaged")
    elif answer<=5 and answer>1: 
            print("Welcome to the toddler's club!")
    else:
            print("No worries mate!")

1

আমি একটি ফাংশন সংজ্ঞায়িত করেছি, তবে এটির কার্যকারিতা মন্তব্যগুলি ছাড়া কোনও বিষয়বস্তু ছিল না ...

def foo(bar):
    # Some awesome temporary comment.
    # But there is actually nothing in the function!
    # D'Oh!

এটি চিৎকার করেছে:

  File "foobar.py", line 69

                                ^
IndentationError: expected an indented block

(দ্রষ্টব্য যে ^চিহ্নিত পয়েন্টটি রেখাটি ফাঁকা রয়েছে)

-

একাধিক সমাধান:

1: শুধু ফাংশন মন্তব্য

2: ফাংশন মন্তব্য যুক্ত করুন

def foo(bar):
    '' Some awesome comment. This comment could be just one space.''

3: লাইন যোগ করুন যা কিছুই করে না

def foo(bar):
    0

যাই হোক না কেন, এটি খালি ফাংশন কেন তা স্পষ্ট করে নিশ্চিত করে নিন - নিজের জন্য বা আপনার সহকর্মীদের জন্য যা আপনার কোড ব্যবহার করবে


পাস বিবৃতি উপযোগী হতে পারে সেখানে :)
KevinG

1

প্রথমত, কেবল আপনাকে মনে করিয়ে দেওয়ার জন্য একটি লজিকাল ত্রুটি রয়েছে যা আপনি আরও ভাল ফলাফল = 1 রাখেন বা অন্যথায় লুপটি চালানোর পরেও আপনার আউটপুট ফলাফল = 0 হবে।

দ্বিতীয়ত আপনি এটি লিখতে পারেন:

import sys

def Factorial(n): # Return factorial
  result = 0
  for i in range (1,n):
     result = result * i

  print "factorial is ",result
  return result

একটি লাইন ছেড়ে দিলে পাইথন শেলটি জানাবে যে ফর স্টেটমেন্টগুলি শেষ হয়েছে। অজগর শেলটি ব্যবহার করার অভিজ্ঞতা যদি আপনার থাকে তবে আপনি বুঝতে পারবেন কেন আমাদের একটি লাইন ছেড়ে চলে যেতে হবে।


1

এটির মূল্যের জন্য, আমার ডক্টরসিংটি খুব বেশি ইন্টেন্টেড ছিল এবং এটি একই ত্রুটিটিকেও ছুঁড়ে দেয়

class junk: 
     """docstring is indented too much""" 
    def fun(): return   

IndentationError: unindent does not match any outer indentation level


এটি আমার সমস্যাটি স্থির করেছে
ভোরদুপুর

0

এটি হ'ল দুটি ট্যাব এবং স্পেসের মিশ্রণ রয়েছে। আপনি হয় সমস্ত স্থান সরিয়ে ফেলতে পারেন এবং ট্যাবগুলি দিয়ে তাদের প্রতিস্থাপন করতে পারেন।

অথবা, এটি লেখার চেষ্টা করুন:

#!/usr/bin/python -tt

কোডের শুরুতে। এই লাইনটি ট্যাব এবং স্পেসগুলির মধ্যে যে কোনও পার্থক্য সমাধান করে।



0

আপনি যদি কমোডো সম্পাদক ব্যবহার করেন তবে অনুরূপ ত্রুটি বার্তাগুলির একটিতে এটির পরামর্শ হিসাবে আপনি এটি করতে পারেন:

1) সমস্ত নির্বাচন করুন, যেমন Ctrl + A

2) কোডে যান -> অঞ্চল অবরুদ্ধ করুন

3) আপনার ইনডেন্টিংটি এখনও সঠিক কিনা ডাবল পরীক্ষা করে দেখুন, আপনার প্রোগ্রামটি সংরক্ষণ করুন এবং পুনরায় চালু করুন।

আমি পাইথন ৩.৪.২ ব্যবহার করছি


0

যদি আপনি পাইথন বিকাশের জন্য সাব্লাইম পাঠ ব্যবহার করেন তবে আপনি অ্যানাকোন্ডা প্যাকেজটি ব্যবহার করে ত্রুটিটি এড়াতে পারেন Anএনাকোন্ডা ইনস্টল করার পরে,

  1. আপনার ফাইলটি দুর্দান্তভাবে খুলুন
  2. খোলা জায়গাগুলিতে ডান ক্লিক করুন
  3. অ্যানাকোন্ডা চয়ন করুন
  4. অটোফর্ম্যাট ক্লিক করুন
  5. সম্পন্ন বা CTRL + ALT + R টিপুন।

0

পাইথন প্লাগইন সহ ইন্টিলিজে, ডকুমেন্টটির পুনরায় ফর্ম্যাট করতে সিটিআরএল + শিফট + আল্ট ইনডেন্ট / ট্যাব / স্পেস সমস্যা স্থির করে


0

জন্য Spyder ব্যবহারকারী: আমি পাইথন 3.7.1 সঙ্গে Spyder 3.3.2 ব্যবহার করছি এবং আমার এই মীমাংসিত, ব্যবহার ট্যাবে খাঁজ সেটিং, নিম্নলিখিত পদক্ষেপগুলি সঙ্গে, ক্লিক করুন:

  • সরঞ্জাম।
  • পছন্দসমূহ।
  • এডিটর।
  • উন্নত সেটিংস।
  • ইনডেন্টেশন অক্ষর -> ট্যাব।

তারপরে আমি ট্যাব কী ব্যবহার করে "ইউনিটবিহীন" লাইনটি পুনরায় সেট করি।

কোনও কারণে, এই সেটিংটি ছাড়াই, আমি মাঝে মাঝে ভুতের ইনডেন্টেশন এরিওর পেয়েছিলাম ।


0

উদাহরণ স্বরূপ:

1. def convert_distance(miles):
2.   km = miles * 1.6
3.   return km

এই কোডটিতে আমার জন্য একই অবস্থা হয়েছিল। 2 এবং 3 লাইনের পূর্ববর্তী ইনডেন্ট স্পেসগুলি মুছুন এবং তারপরে হয় ট্যাব বা স্পেস ব্যবহার করুন। উভয় ব্যবহার করবেন না । পাইথনে কোড লেখার সময় যথাযথ ইনডেন্টেশন দিন। স্পাইডার গেটো সোর্স> ফিক্স ইনডেন্টেশন For একই ভিসি কোড এবং পাতলা টেক্সট বা অন্য কোনও সম্পাদক এ যায়। ইন্ডেন্টেশন ঠিক করুন।


-6

এটি মূলত সম্পাদকের কারণে ঘটে থাকে। স্পেসগুলিতে ট্যাব পরিবর্তন করার চেষ্টা করুন (4) best
এমনকি আমিও একই সমস্যার মুখোমুখি হয়েছি, পরে আমি দেখতে পেলাম যে একটি এনকোডিংয়ের সমস্যা রয়েছে i

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