בתרגיל רשום שצריך לבצע פונקציה לבדיקת תקינות קלט. " כעת כתבו פונקציה המקבלת את הלוח ואת האות שמייצגת את השחקן ( ‘X’ או ‘O’ ). כמו כן, הפונקציה תקלוט מהמשתמש שני מספרים."
מצד אחד רשום שהיא צריכה לקבל 3 ארגונומטיים, אבל בהערות של איפה שצריך לרשום את הפתרון רשום:
make_turn(player_char,board) כתבו את הפונקציה שלכם כאן
(כלומר רק 2)
היא צריכה לקבל 3 אני מניח… כן ?
תודה,
חגי
Felixmn
אין טעות.
מה שרשום בחתימה של הפונקציה אלה הם הפרמטרים. החלק של: הפונקציה תקלוט מהמשתמש שני מספרים."
קורה בגוף הפונקציה עצמה וממשיך כל עוד המשתמש לא הכניס קלט חוקי.
ז"א איך שאני מבין את זה, בגוף הפונ’ אתה מבצע פעולת קלט מהמשתמש ולא מעביר לפונקציה את הקלט דרך הפרמטרים.
itamaraviv
בדיוק מה ש @Felixmn אמר
Felixmn
היי @itamaraviv
אם אתה כבר פה, אשמח לנצל את המעמד
רשום בחלק על make_turn :
“כאשר נגלה בשלב מוקדם יותר שהלוח לא ניתן יותר למילוי - המשחק יסתיים” , האם זה משהו שהפונ’ הזו אמורה לתת עליו חיווי או משהו שנבדוק בפונ’ ראשית של המשחק?
כי נראה שמטרתה של make_turn זה רק לבצע מהלך ולבדוק תקינות שלו.
טוב בעצם בזמן כתיבת שורות אלו, נראה שזה כן משהו שצריך להיבדק על ידה, אבל זה קצת פחות מובן בהתחלה.
שאלה 2: האם make_turn צריכה להחזיר לוח חדש עם הפעולה שבוצעה של המשתמש בכוונה לעדכן את אותו הלוח, באופן דומה שנאמר לנו בחוברת 5 שדווקא לא כדאי לעדכן רשימות כך?
תודה רבה
itamaraviv
הפונקציה לא אמורה לתת חיווי, היא אמורה לקלוט קלט מהשחקן ולדאוג להצבה חוקית של המהלך, זה הכל.
שאלה 2:
אתה יכול לבצע את הפעולה ולהחזיר לוח חדש. רק שים לב שמדובר על רשימה של רשימות, צריך לבצע העתקה נכונה.
איתמר
לייק 1
Hagay2k7
היי,
אני כבר עשיתי אותה בצורה הזו:
def make_turn(player_char,board,user_sign):
כלומר מהתוכנית הראשית נשלח הסימן X או O. המשחק עובד לפי הנדרש…
אפשר בבקשה להקל בנושא הזה ולקבל את זה ככה ?
זה יהיה קצת סרט לשנות את זה וכבר סיימתי את כל החוברות…
תודה,
חגי
itamaraviv
מה זה user_sign ומה זה player_char? זה לא אותו דבר?
Hagay2k7
היי,
user_sign - זה X או O
player_char - זה המיקום בלוח שבו הוא רוצה להציב את X או O. לדוגמא 1 0
Hagay2k7
@itamaraviv @Yam
אשמח לדעת אם לאור השאלות שלי למעלה, יש אישור להגיש את התרגיל עם הפונקציה שמקבלת 3 ערכים…
תודה רבה.
itamaraviv
לא. תקלוט את הערכים בתוך make_turn.
zurikarat
היי לצוות הקורס היקר, בזכותכם הצלחתי לכתוב סוף סוף את משחק איקס עיגול שכ"כ רציתי לעשות, תודה רבה רבה לכם!!!
לייק 1
dangold53
היי,
האם שורת הקוד הבאה:
board[0][2] == board[1][2] == board[2][2] == “X” or “O”
תתממש רק כשכל התאים שווים זה לזה, או גם כשלצורך העניין board[1][2] == board[2][2] והם אינם שווים לboard[0][2]?
תודה
Yam
לא, התייחסנו אל זה בהרחבה בווידאו של אופרטורים לוגיים
ha.amear
לגבי make_turn - האם אני אמור לבדוק אם המחרוזת מכילה תווים שאינם מספרים? האם מותר מינוס? האם מותר מחרוזת ריקה? אני יכול למנוע את כל השאלות האלה אם הייתי קולט קודם שורה, אח"כ עמודה.
שאלתי: האם לגיטימי לבקש מהמשתמש לקלוט בשתי שאילתות, ולא בשאילתא אחת?
לייק 1
Dusinka
אני אישית קלטתי את המחרוזת ובדקתי לאחר מכן האם היא מכילה תווים שהם לא מספרים, או יוצאת מהגבולות המותרים(מינוסים ומספרים מעל 2) ופשוט הרצתי שוב את הקלט מהמשתמש ברגע שקיבלתי מחרוזת שאני לא יכול להשתמש בה וכך נמנעתי משגיאות
לייק 1
ha.amear
פתרון טוב. אלא שבדוגמא שמוצגת ליד התרגיל, רואים הקלדה של מינוס שתיים (2-) , והתשובה המוחזרת היא שמדובר בעמודה שגויה. איזו דרך יש לעשות זאת רק עם הפונקציות שלמדנו?
Dusinka
בדיוק כמו שאמרתי, אתה מקבל רק את מה שחוקי מבחינתם ואם לא חוקי למשל מינוס 2 אתה מבקש את הקלט שוב. מאוד דומה לתרגילים אחרים שקיבלנו בהם קלט שוב במקרה שתנאי כלשהו מתקיים (נגיד שלא עברנו שלושה ניסיונות)
ובשביל ההודעה אתה יכול להפריד בין התנאים של העמודה ושל השורה