اليوم، سأحكي قصة عن خطأ النسخ واللصق وكيف تقترن سلسلة بفاصلة زائدة وتصبح Tuple() في برنامج Python الخاص بي. والغريب أنني لم أكن على علم بهذا المفهوم قبل ارتكاب هذا الخطأ.
لذا، لنبدأ بالتعلم السريع عن السلسلة والصفوف في بايثون.
التعريف: سلسلة من الأحرف المستخدمة لتخزين النص ومعالجته.
بناء الجملة: محاط بعلامات اقتباس مفردة ' '، أو علامات اقتباس مزدوجة " "، أو علامات اقتباس ثلاثية ''' '''/""" """.
الثبات: لا يمكن تغيير السلاسل بعد إنشائها.
# Example mystring = "Hello, World!" print(type(mystring)) #Output:mystring2 =str() print(type(mystring2)) #Output:
التعريف: سلسلة من القيم غير قابلة للتغيير.
تركيب الجملة: محددة بين قوسين ( )، مفصولة بفواصل.
الثبات: بمجرد إنشائها، لا يمكن تغيير العناصر.
# Example mytuple = (1,2) print(type(mytuple)) #Output:mytuple2 =tuple() print(type(mytuple2)) #Output:
الآن، نحن نعرف عن السلسلة والصفوف وكيفية الحصول على متغير من النوع سلسلة أو صف باستخدام إما التعيين المباشر أو باستخدام نهج الفصل باستخدام المنشئ. لكن قصتي مختلفة :).
لا تحتاج عبارة بايثون إلى فاصلة منقوطة (؛) أو فاصلة (،) أو أي رمز إغلاق آخر (يتم استخدام التباعد للتعامل مع الكتلة)، فكيف يمكنك إنهاء فاصلة زائدة بسلسلة مثل "أجيت كومار"، لأنه غالبًا ما تقوم بنسخ عنصر السلسلة من قائمة القاموس وغالبًا ما ينتهي الأمر بفاصلة زائدة. هذا ما حدث لي ثم أصبحت القصة مثيرة للاهتمام.
لذا، دعونا أولاً نعطي مثالاً على قصتي.
mymistake = "Ajit Kumar", print(type(mymistake)) #Output :
الآن، هناك أمران يجب ملاحظتهما:
1) لن يلقي مترجم بايثون أي خطأ بسبب الفاصلة الزائدة مع السلسلة "mymistake"، وإلا فلن يذهب الخطأ إلى أبعد من ذلك.
2) أصبح نوع المتغير "tuple" من الهدف الأصلي المتمثل في إنشاء خطأ في متغير السلسلة.
لقد كتبت هنا ويبدو الأمر سهلاً وبسيطًا للغاية، ولكن الأمر استغرق ساعة لتصحيح هذا الخطأ، لأنني كنت أقوم بتمرير السلسلة كوسيطة إلى طريقة وكانت الأخطاء غريبة وأواصل العمل على الطريقة ومحاولة فهم رسالة خطأ. على سبيل المثال، كانت الرسالة مثل، متغير "الاسم" لا يحتوي على طريقة أقل ().
إذا استخدمت فاصلة بدون أقواس، فإن بايثون تتعامل معها على أنها صف.
مثال: mymistake = "Ajit Kumar"، ينشئ صفًا ("Ajit Kumar"،).
لذا، إذا كنت تريد إنشاء صف يحتوي على عنصر/عنصر فقط، فيجب أن تكون حذرًا للغاية. يوضح المثال التالي أنه، في المثال الأول، حتى العنصر موجود ضمن زوج من الأقواس (1)، فإن بايثون يعامل ذلك على أنه عدد صحيح وليس صفًا.
singleitem = (1) print(type(singleitem)) #Output:
لذلك، لإنشاء صف يحتوي على عنصر واحد، يجب عليك استخدام فاصلة زائدة، كما يلي:
singleitemtuple = (1,) print(singleitemtuple) #output: (1,) print(type(singleitemtuple)) #output:
وأعتقد أن هذا هو السبب في أنه عندما تحتوي السلسلة على فاصلة زائدة، فإن بايثون يأخذ ذلك على أنه صف وينشئ المتغير على شكل صف وليس كسلسلة.
ومع ذلك، فقد ذكرت وثائق بايثون ذلك بوضوح وكان خطأي أو إهمالي أنني لم ألاحظ ذلك وكنت أستخدم دائمًا () لإنشاء صف حتى لعنصر واحد بفاصلة تدريب. مصدر
على أي حال، هذا أعطاني بعض التعلم الجديد واختصارًا لإنشاء صف يحتوي على عنصر واحد، أو المزيد من العناصر دون استخدام (). نعم، لقد حاولت استخدام "الفاصلة اللاحقة" مع المزيد من العناصر لإنشاء صف وقد نجح الأمر. مثال:
mylearning = "Ajit Kumar","April","python", print(mylearning) #output: ('Ajit Kumar', 'April', 'python') print(type(mymistake)) #output:
لقد كان هناك الكثير من التعلم في عطلة نهاية الأسبوع. آمل أن يكون مفيدًا لك. ضع مناقشتك واقتراحك في التعليق. أحب أن أسمع عن اختصارات بايثون والميزات الجاهزة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3