هل هناك طريقة لتحويل المسافة البادئة في كود بايثون إلى تقويم ؟

StackOverflow https://stackoverflow.com/questions/118643

سؤال

أنا أعمى تماما مبرمج الذين يرغبون في تعلم بايثون.للأسف حقيقة أن كتل التعليمات البرمجية تمثل مع مستويات مختلفة من المسافة البادئة هو العقبة الرئيسية.كنت أتساءل إذا كان هناك أي الأدوات المتاحة التي من شأنها أن تسمح لي أن كتابة التعليمات البرمجية باستخدام الأقواس أو كتلة التعليمات البرمجية محدد ومن ثم تحويل هذا الشكل في صحيح بادئة تمثيل مترجم بايثون يمكن استخدامها ؟

هل كانت مفيدة؟

المحلول

هناك حل للمشكلة التي يتم توزيعها مع بيثون نفسها. pindent.py, إنه يقع في الأدوات\دليل البرامج النصية في نظام التشغيل windows تثبيت (بلدي الطريق إلى ذلك هو C:\Python25 ools\Scripts) يبدو عليك الاستيلاء عليها من svn.python.org إذا كنت تعمل على لينكس أو ماك.

وتضيف التعليقات عندما كتل مغلقة ، أو يمكن بشكل صحيح indent رمز التعليقات إذا وضعت في.هنا مثال من التعليمات البرمجية أنتج من قبل pindent مع الأمر:

pindent.py -c myfile.py

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
       # end if
   else:
       print 'oops!'
   # end if
# end def foobar

حيث الأصلي myfile.py كان:

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
   else:
       print 'oops!'

يمكنك أيضا استخدام pindent.py -r لإدراج الصحيح المسافة البادئة استنادا إلى التعليقات (قراءة رأس pindent.py لمزيد من التفاصيل) ، وهذا يجب أن تسمح لك رمز في بيثون دون الحاجة إلى القلق حول المسافة البادئة.

على سبيل المثال, تشغيل pindent.py -r myfile.py سيتم تحويل التعليمات البرمجية التالية في myfile.py في نفس صحيح بادئة (وعلق أيضا) الكود كما أنتجت من قبل pindent.py -c المثال أعلاه:

def foobar(a, b):
if a == b:
a = a+1
elif a < b:
b = b-1
if b > a: a = a-1
# end if
else:
print 'oops!'
# end if
# end def foobar

سأكون مهتما لمعرفة ما حل كنت في نهاية المطاف استخدام, إذا كنت بحاجة إلى أي مزيد من المساعدة ، يرجى التعليق على هذا الموضوع و سأحاول المساعدة.

نصائح أخرى

أنا شخصيا أشك في أن هناك حاليا هو في هذه اللحظة ، كما الكثير من الثعبان من هواة أحب حقيقة أن الثعبان هو هذا الطريق ، بيضاء محدد.

لم يسبق لي أن فكرت أن إمكانية وصول مشكلة مع ذلك.ربما انه شيء على طرح مثل تقرير الشوائب الثعبان ؟

افترض أنه يمكنك استخدام قارئ الشاشة هنا لكن الإخراج ؟ حتى علامات التبويب يبدو "غير مرئي" بالنسبة لك ؟ مع برايل الإخراج ، قد يكون أسهل في القراءة ، ولكن أستطيع أن أفهم بالضبط كيف هذا يمكن أن يكون مربكا.

في الواقع, هذا هو مثيرة جدا للاهتمام بالنسبة لي.أود أن أعرف ما يكفي لتكون قادرة على كتابة التطبيق الذي سوف نفعل ذلك لك.

أعتقد أنه بالتأكيد شيء أنا وضعت في تقرير الشوائب ، إلا إذا كنت قد فعلت ذلك بنفسك ، أو تريد.

تحرير:أيضا ، وأشار قبل جون Millikin هناك أيضا PyBraces الذي قد يكون حلا قابلا للتطبيق ، و قد يكون من الممكن أن يكون اخترق معا تعتمد على مهارات الترميز الخاص بك لتكون بالضبط ما كنت بحاجة (وآمل أن إذا كان هذا هو الحال, الإفراج عنها من أجل الآخرين مثل نفسك على استخدام)

تحرير 2:لقد ذكرت هذا أن الثعبان تعقب علة

على الرغم من أنني لست أعمى ، لقد سمعت أشياء جيدة عن Emacspeak.لقد كان الوضع بيثون منذ الإصدار 8.0 في عام 1998 (يبدو أنهم حتى الافراج عن 28.0!).بالتأكيد تستحق التدقيق بها.

يجب أن تكون قادرا على تكوين محرر التحدث علامات التبويب المساحات -- وأنا أعلم أنه من الممكن أن عرض بيضاء في معظم المحررين ، لذلك يجب أن يكون هناك خيار إمكانية الوصول إلى مكان الكلام عليهم.

إذا تعذر ذلك ، هناك pybraces, التي كانت مكتوبة كما مزحة ولكن في الواقع قد تكون مفيدة لك مع قليل من العمل.

إذا كنت على ويندوز أنا نوصي بشدة أن تأخذ نظرة على EdSharp من:http://empowermentzone.com/EdSharp.htm وهو يدعم كل من Windows الرائدة screenreaders ، فإنه يمكن تكوين التحدث المسافة البادئة مستويات رمز ، أو أنها قد بنيت في أداة تسمى PyBrace التي يمكن أن تحول من بناء جملة الأقواس إذا كنت تريد أن تفعل ذلك بدلا من ذلك, وهو يدعم جميع أنواع الميزات الأخرى المبرمجين قد حان لنتوقع في النص المحررين.لقد تم استخدامه لمدة سنة ، كل من PHP إلى تفعيل جافا سكريبت HTML إلى الثعبان ، وأنا أحب ذلك.

أنا أقدر مشكلتك ولكن أعتقد أنك تحدد التنفيذ بدلا من مشكلة تحتاج إلى حل.بدلا من تحويلها إلى الأقواس حول كيفية العمل على طريقة قارئ الشاشة أن أقول لك المسافة البادئة المستوى ؟

على سبيل المثال ، بعض الناس عملت على همة التلوين اللغوي لتمثيل الثعبان المسافة البادئة المستويات.ربما تعديل الجملة التلوين يمكن أن تنتج شيئا قارئ الشاشة أن تقرأ ؟

كل هذه "لا" أنواع الإجابات مزعج حقا.بالطبع يمكنك.

انها الإختراق, ولكن يمكنك أن تفعل ذلك.

http://timhatch.com/projects/pybraces/

يستخدم ترميز مخصصة لتحويل الأقواس بادئة الكتل قبل تسليمه إلى مترجم.


بوصفها جانبا, و شخص جديد الثعبان - لا تقبل المنطق وراء ولا حتى مما يسمح الأقواس/عام كتلة المحددات ...وبصرف النظر عن أن يجري تفضيل الثعبان المشروعات الإنمائية.الأقواس على الأقل لن أكل عن طريق الخطأ إذا كنت تفعل بعض المعالجة التلقائية من التعليمات البرمجية الخاصة بك أو العمل في المحرر أنه لا يفهم أن المساحة البيضاء هو المهم.إذا كنت توليد التعليمات البرمجية تلقائيا, فإنه مفيد ليس من الضروري أن تتبع indent المستويات.إذا كنت ترغب في استخدام الثعبان للقيام بيرل سقو بطانة واحدة, كنت تلقائيا بالشلل.إذا أي شيء آخر, فقط كضمان.ما إذا كان لديك 1000 خط برنامج بيثون يحصل كل من علامات التبويب يؤكل ؟ وأنت تسير للذهاب خط سطرا و معرفة أين الطعج ينبغي أن يكون ؟

يسأل عن ذلك سوف تحصل دائما على اللسان في خده رد مثل "فقط لا من __ المستقبل __ الاستيراد الأقواس'", "تكوين IDE الخاص بك بشكل صحيح": "إنه من الأفضل على أي حال حتى تعتاد على ذلك" ...

أرى من وجهة نظرهم, ولكن مهلا, إذا أردت أن تضع فاصلة منقوطة بعد كل سطر واحد.لذلك أنا لا أفهم لماذا الجميع يصر عن الأقواس شيء.إذا كنت بحاجة إلى اللغة الخاصة بك إلى القوة المسافة البادئة بشكل صحيح, أنت لا تفعل ذلك الحق في المقام الأول.

فقط 2c - أنا ذاهب إلى استخدام الأقواس على أي حال.

البحث الوصول الثعبان IDE, وجدت هذا وقررت الإجابة.تحت ويندوز مع الفكين:

  1. انتقل إلى إعدادات مركز عن طريق الضغط JawsKey+6 (على رقم الصف فوق الحروف) في محرر النصوص المفضل لديك.إذا فكي المطالبات إلى إنشاء ملف تكوين جديد ، توافق.
  2. في حقل البحث اكتب "المسافة البادئة"
  3. سيكون هناك نتيجة واحدة فقط:"أقول indent الشخصيات".تشغيل هذا.
  4. استمتع!

الشيء الوحيد الذي أمر محبط بالنسبة لنا هو أننا لا نستطيع الاستمتاع أمثلة التعليمات البرمجية على مواقع (منذ indent يتحدث في المتصفحات ليست مريحة جدا — فإنه يولد زائدة الكلام).

سعيد الترميز من الثعبان آخر المبتدئين).

يمكنني استخدام الكسوف مع بيديف امتداد منذ IDE لدي الكثير من الخبرة مع.أنا أيضا أقدر الذكية المسافة البادئة فإنه يوفر الترميز إذا البيانات, الحلقات, الخ.يجب تكوين pindent.py سيناريو خارجي الأداة التي لا يمكن تشغيلها على تركز حاليا بيثون وحدة الذي يجعل حياتي أسهل حتى أستطيع أن أرى ما هو مغلق حيث مع الحاجة إلى التحقق من المسافة البادئة.

هناك العديد من الإجابات التي تشرح كيفية القيام بذلك.ولكن أنصح عدم اتخاذ هذا الطريق.في حين يمكن استخدام البرنامج النصي التحويل ، من شأنه أن يجعل من الصعب العمل على فريق المشروع.

بلدي التوصية إلى تكوين قارئ الشاشة ليعلن علامات التبويب.هذا ليس مزعج كما يبدو ، لأنه سوف أقول فقط "المسافة البادئة 5" بدلا من "علامة التبويب علامة التبويب علامة التبويب".وعلاوة على ذلك, المسافة البادئة فقط قراءة كلما تغيرت ، لذلك يمكن أن تذهب من خلال كتلة كاملة من التعليمات البرمجية دون سماع مستوى المسافة البادئة.في هذه الطريقة السمع الثلمة لا أكثر مطول من سماع الأقواس.

وأنا لا أعرف أي نظام تشغيل أو قارئ الشاشة يمكنك استخدام للأسف لا يمكن أن تعطي نفس الخطوات لتحقيق ذلك.

Edsger الخاص ديكسترا تستخدم إذا ~ فاي و هل ~ od في كتابه "حراسة الأوامر اللغة" ، يبدو أن تنشأ من Algol68.كانت هناك أيضا بعض الأمثلة على الثعبان حراسة الكتل المستخدمة في RosettaCode.org.

fi = od = yrt = end = lambda object: None;
class MyClass(object):
    def myfunction(self, arg1, arg2):
        for i in range(arg1) :# do
            if i > 5 :# then
                print i
            fi
        od # or end(i) #
    end(myfunction)
end(MyClass)

بيضاء المهترئ كود بايثون يمكن أن يكون بشكل لا لبس فيه unmangled و reindented إذا كان أحد يستخدم حراسة كتل إذا/هل/od ومحاولة/yrt مع الفاصلة المنقوطة ";" على بيانات منفصلة.ممتازة لا لبس فيها مجلة القوائم أو قص/لصق من صفحات الويب.

وينبغي أن يكون من السهل بما فيه الكفاية لكتابة قصيرة برنامج بيثون لإدراج/إزالة الحرس كتل الفاصلة المنقوطة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top