لماذا البيان إذا كان "a" أو "e" أو "i" أو "o" أو "u" في String: يتم تنفيذه حتى في حالة عدم وجود أحرف العلة في السلسلة؟ [مكرر]

-3

رمز بلدي:

VowelsInString = False
String = 'bbbb000'
if 'a' or 'e' or 'i' or 'o' or 'u' in String:
  VowelsInString = True
elif 'a' or 'e' or 'i' or 'o' or 'u' not in String:
  VowelsInSting = False

لذلك ، كنت أتوقع أنه عند تشغيل هذا ، سيتم تخطي عبارة if وستبقى VowelsInString خاطئة ، ولكن عند تشغيل الرمز ، تكون قيمة VowelsInString هي True.

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

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

4 الاجابة

1
افضل جواب

'a' or 'e' or 'i' or 'o' or 'u' in String:

تقيم على أنها

('a') or ('e') or ('i') or ('o') or ('u' in String) .

بما أن الحرف "a" حقيقي في لغة python ، فإن ذلك يتم تقييمه True .

يمكنك الكتابة

if 'a' in String or 'e' in String ...

أو

def has_vowel(String):
    for s in String:
        if s in 'aeiou':
            return True

او ربما

if any(s in String for s in 'aeiou'):

أو (الائتمان لـ Onyambu):

import re
...
re.search('[aeiou]',string)
:مؤلف
0

'a' or 'e' or 'i' or 'o' or 'u' in String دائما صحيحا. ما قصدت فعله هو:

if 'a' in String or 'e' in String or ...:

أو باستخدام any :

if any(c in String for c in 'aeiou'):
:مؤلف
0

يبدو أنك تقوم بتقييم الشخصية نفسها على أنها منطقية.

يتم الكشف عن 'a' على أنه صحيح وعودة صحيح.

جرب شيئًا مثل:

if any(i in '<string>' for i in ('a','b','c')):

انظر: كيفية التحقق من سلسلة أحرف معينة؟

:مؤلف
0

شروطك هي حشو:

if 'a':
    print("I am always going to print")
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام