אני עובד על התרגיל של איקס עיגול, ובניתי את פונקציות הבדיקה כך שיחזירו לי O או X או N (אם אין כלום). הן מחזירות לערך ששמו victory.
ואז, אני נתקל במשהו מאוד מוזר.
אני משתמש בבדיקה:
if vicrory == ‘X’ or ‘O’ :
do somthing
ומה שקורה הוא שגם במקרה שהערך הוא N התנאי נכנס.
הדבר הפסיק רק שעברתי לתנאי של
if vicrory != ‘N’ ’ :
למה? (זו גם חלק מהסיבה שעברתי להחזיר N ולא מחרוזת ריקה כי ממש לא הצלחתי להבין מה קורה בבדיקות שלי)
Felixmn
הסיבה לכך היא באיך שהגדרת את התנאי
if vicrory == ‘X’ or ‘O’
בעצם מה שקורה פה זה שיש לך בדיקה האם ויקטורי הוא איקס או האם יש לך תו O.
החלק אחרי ה- or שלך ישתערך לביטוי שהוא True תמיד. בעצם ה-if שלך תמיד מתקיים.
לכן אתה תמיד תיכנס לתוך התנאי הזה ותבצע את do something, גם כאשר הערך של ויקטורי הוא N.
4 לייקים
of313
גם אם אוסיף סוגריים (X or O) ?
Felixmn
בוא תגיד לי מה קורה כאשר הביטוי הוא: if vicrory == (‘X’ or ‘O’)
כיצד הוא נבדק, מה סדר הפעולות שמתרחש?
לייק 1
of313
אה נכון, זה אותו דבר - זה בודק שזה ערך בוליאני וזה תמיד יהיה נכון. תודה
איזה שטות…