Ali Ahmed55 نشر 15 فبراير أرسل تقرير نشر 15 فبراير السلام عليكم ده مسائل من موقع codwars Create a function that always returns True/true for every item in a given list. However, if an element is the word 'flick', switch to always returning the opposite boolean value. وده الحل بناعي , بس بيضهر خطاء علي الموقع codewars boo = 'True' for row in range(len(arr)): if 'flick' in arr[row]: boo = 'False' arr[row] = boo else: arr[row] = boo print(arr) 3 اقتباس
0 Mustafa Suleiman نشر 15 فبراير أرسل تقرير نشر 15 فبراير المطلوب منك هو كتابة دالة تُرجع دائمًا True لأي عنصر في قائمة معينة، ولديك العنصر هو كلمة "flick"، أي يجب على الدالة تبديل السلوك لترجع دائمًا القيمة المنطقية المعاكسة. ولديك مشكلتان: 1- التكرار اللانهائي، حيث عندما تواجه حلقة for عنصرًا "flick" ، يتم تعيين boo إلى "False"، ثم يتم تعيين العنصر نفسه إلى boo. لكن بما أن boo الآن "False" ، فسيتم إعادة تعيين boo إلى "True" في التكرار التالي، سيستمر هذا التناوب إلى أجل غير مسمى ، مما يؤدي إلى حلقة لانهائية. 2- عدم معالجة عناصر غير السلسلة، افترض الكود أن جميع العناصر في القائمة هي سلاسل، فإذا واجهت عنصرًا غير سلسلة (مثل رقم أو قائمة فرعية) ، فسيتسبب ذلك في حدوث خطأ TypeError. لذا سيصبح الكود كالتالي وأضفت تعليقات لتفهم ما يحدث: def always_true(arr): """ تعديل القائمة المعطاة `arr` لترجع دائمًا True عند فحصها لمعرفة صحتها. إذا كان عنصر في `arr` هو كلمة "flick" ، فإن الدالة تقلب السلوك لترجع دائمًا القيمة المنطقية المعاكسة. ومع ذلك ، لا تعدل القائمة الأصلية مباشرة لتجنب التأثيرات الجانبية المحتملة. Args: arr: القائمة التي تريد تعديلها. Returns: None. تعدل الدالة القائمة المُدخلة مباشرة. Raises: TypeError: إذا لم يكن عنصر في `arr` سلسلة. """ truth_state = True for i in range(len(arr)): if arr[i] == 'flick': truth_state = not truth_state # تبديل حالة الصدق arr[i] = 'flicked' # تمييز العنصر لتجنب التكرار اللانهائي arr[i] = truth_state return None # غير ضروري ، لكن يمكن الاحتفاظ به للتناسق # مثال على الاستخدام arr = ['a', 'b', 'flick', 'c', 'flick', 'd'] always_true(arr) print(arr) # إخراج: ['True', 'True', 'flicked', 'True', 'flicked', 'True'] # مثال آخر arr2 = [0, 1, 'flick', True, False] always_true(arr2) print(arr2) # إخراج: [True, True, 'flicked', True, False] 1 اقتباس
0 محمد عاطف17 نشر 15 فبراير أرسل تقرير نشر 15 فبراير ان السؤال المطلوب انه اذا كان العنصر يساوى flick فيجب ان تغير القيمة الحالة التى تقوم بارجاعها . يخبرك انه فى بداية البرنامج يجب ان تقوم بارجاع true واذا ظهرت كلمة flick يجب ان تبدل true ب false اذا ظهرت كلمة flick مرة اخرى يجب انت تبدل false ب true مرة اخرى . ما تقوم به انت هو انك تبدل true ب false مرة واحدة فقط واذا ظهرت كلمة flick مرة ثانية لا تقوم بتبديل false ب true boo = True for row in range(len(arr)): if 'flick' in arr[row]: boo = not boo arr[row] = boo else: arr[row] = boo print(arr) لذلك نقوم باستخدام هذا السطر boo = not boo وهذا السطر يقوم بتبديل قيمة boo الحالية فان كانت boo تساوى True سيقوم بتبديلها ب False و العكس اذا كانت ب False فسيقوم بتبديلها ب True 1 اقتباس
0 Ali Ahmed55 نشر 15 فبراير الكاتب أرسل تقرير نشر 15 فبراير بتاريخ 5 دقائق مضت قال Mustafa Suleiman: truth_state = not truth_state # تبديل حالة الصدق هي كلمه Not بتعمل اي بتاريخ 1 دقيقة مضت قال محمد عاطف11: ان السؤال المطلوب انه اذا كان العنصر يساوى flick فيجب ان تغير القيمة الحالة التى تقوم بارجاعها . يخبرك انه فى بداية البرنامج يجب ان تقوم بارجاع true واذا ظهرت كلمة flick يجب ان تبدل true ب false اذا ظهرت كلمة flick مرة اخرى يجب انت تبدل false ب true مرة اخرى . ما تقوم به انت هو انك تبدل true ب false مرة واحدة فقط واذا ظهرت كلمة flick مرة ثانية لا تقوم بتبديل false ب true boo = True for row in range(len(arr)): if 'flick' in arr[row]: boo = not boo arr[row] = boo else: arr[row] = boo print(arr) لذلك نقوم باستخدام هذا السطر boo = not boo وهذا السطر يقوم بتبديل قيمة boo الحالية فان كانت boo تساوى True سيقوم بتبديلها ب False و العكس اذا كانت ب False فسيقوم بتبديلها ب True اه يعني كلمله not بتبدل صح كده اقتباس
0 محمد عاطف17 نشر 15 فبراير أرسل تقرير نشر 15 فبراير بتاريخ الآن قال Ail Ahmed: هي كلمه Not بتعمل اي اه يعني كلمله not بتبدل صح كده نعم بالفعل كلمة not تقوم بتبديل القيمة الحالية من True الى False والعكس 1 اقتباس
0 Mustafa Suleiman نشر 15 فبراير أرسل تقرير نشر 15 فبراير بتاريخ 1 دقيقة مضت قال Ail Ahmed: هي كلمه Not بتعمل اي إذا كان التعبير صحيحًا، فإن Not تجعله خاطئًا. إذا كان التعبير خاطئًا، فإن Not تجعله صحيحًا. أي عكس القيمة المنطقية لتعبيرات Boolean. 1 اقتباس
0 Taha Khaled2 نشر 15 فبراير أرسل تقرير نشر 15 فبراير لقد قمت بحل هذه السؤال من قبل علي الموقع و المساله بتطلب منك كتابة دالة تعيد القيمة True لكل عنصر في قائمة معينة. ولكن، لو كان أحد العناصر هو الكلمة "flick"، فستقوم الدالة باعادة القيمة المعاكسة (False) . من المفترض الحل يكون بهذه الطريقه def always_true(xs): flick_seen = False for row in range(len(xs)): if xs[row] == "flick": flick_seen = True if flick_seen: xs[row] = "False" else: xs[row] = "True" return xs # اختبار الدالة arr = ["a", "b", "c", "flick", "d", "e"] print(always_true(arr)) 1 اقتباس
0 Ali Ahmed55 نشر 15 فبراير الكاتب أرسل تقرير نشر 15 فبراير شكرااا جدا والله علي المعلوما ده شكرااا اوي بتاريخ الآن قال Taha Khalid: لقد قمت بحل هذه السؤال من قبل علي الموقع و المساله بتطلب منك كتابة دالة تعيد القيمة True لكل عنصر في قائمة معينة. ولكن، لو كان أحد العناصر هو الكلمة "flick"، فستقوم الدالة باعادة القيمة المعاكسة (False) . من المفترض الحل يكون بهذه الطريقه def always_true(xs): flick_seen = False for row in range(len(xs)): if xs[row] == "flick": flick_seen = True if flick_seen: xs[row] = "False" else: xs[row] = "True" return xs # اختبار الدالة arr = ["a", "b", "c", "flick", "d", "e"] print(always_true(arr)) تمام , شكراا جدا لحصرتك انا بكتب الكود ده فا بيظهر خظاء علي الموقع مش عارف ليه مغ ان الكود صح def flick_switch(lst): boo = 'True' for i in range(len(lst)): if lst[i] == 'flick': boo = not boo lst[i] = boo else: lst[i] = boo return lst arr = ['codewars' , 'flick' , 'code' , 'wars'] print(flick_switch(arr)) 2 اقتباس
السؤال
Ali Ahmed55
السلام عليكم
ده مسائل من موقع codwars
Create a function that always returns True/true for every item in a given list.
However, if an element is the word 'flick', switch to always returning the opposite boolean value.
وده الحل بناعي , بس بيضهر خطاء علي الموقع codewars
7 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.