אהלן
אני לא בטוח אם אני מפספס את הנקודה הזאת במחברת, אבל אני רוצה שהפעולה init בקוד שאני בונה תעשה קודם כל השמה לרשימה:
self.options = options
ולאחר מכן השמה עבור כל איבר ברשימה:
for option in options:
self.option = 0
הבעיה שבמקום שתהיה לי השמה ל- option עבור כל אופציה שנמצאת ברשימה שאני מקבל, אני פשוט מקבל תכונה שנקראת self.option ולכן כשאני מגיע לקוד השני במקום לספור self.yellow ו- self.blue הקוד שלי מחשב self.option עבור כל האופציות שהוא עובר עליהן ברשימה.
אם זה קיים במחברת אשמח שתכוונו אותי כי כנראה שפספסתי ואני לא מוצא.
תודה
aviadamar
למדנו בשבוע שעבר לעשות רשימות בצורה של השמה.
(נראה לי זה הכי הרבה שאני יכול לומר בלי לגלות לך את התשובה )
devorack
מה אתה מצפה שיקרה כשאתה כותב:
self.options = options
אני מציעה לקחת נייר וממש לכתוב כל אחד מהפריטים
חוץ מזה, רק בשביל השלב הזה, כל מקום שכתוב self.options תכתוב במקום options(self) זה לא בדיוק מדויק, אבל נראה לי שיש לך איזה ציפייה ש options כפעולה תשנה את שמה, וזה לא הולך לקרות
DrorBiton
עם self.options = options אין לי בעיה, הוא נותן לי רשימה כאשר self.options = הרשימה שהתקבלה כקלט.
הבעיה שלי עם הלולאת for וכאן הבלבול שלי, כיוון שממה שאני מבין אין דרך לעשות השמה לכל option.
לדוג:
options = [‘a’, ‘b’, ‘c’]
for option in options:
self.option = 0
ומזה לקבל:
self.a = 0
self.b = 0
self.c = 0
אני מבין עכשיו שזה לא אפשרי כיוון שהאותיות a, b, c הן סטרינגים ואני לא יכול לשייך self.string
ולכן אם עכשיו ההסבר שלי טיפה יותר ברור, אני מחפש דרך שעבור כל אופציה מתוך האופציות לבחירה אני אוכל להגדיר לה שהיא שווה ל0
כדי שבסוף אוכל לקבל את המצב:
self.a = 0
self.b = 0
self.c = 0
כדי שבהמשך אוכל להשתמש באתה הדרך לפונקציה המוחקת, לדוג’:
מחק את ‘b’
מה שנשאר:
self.options = [‘a’, ‘c’]
self.a = 0
self.c = 0
ושאם אנסה לבקש את self.b אקבל שגיאה כיוון שהוא נמחק
aviadamar
למה לא ללכת בכיוון של מה שרשמתי לך למעלה ?
devorack
לדעתי הבעיה היא כי אתה מנסה לשנות את שם הפעולה (או התכונה). תחשוב על option בדוגמא שלך כפונקציה - שם הפונקציה לא משתנה, רק הפרמטרים יכולים להשתנות. אתה כן יכול לקרוא כל פעם ל self אחר - זה החלק של הביטוי שמייצג את האובייקט שלך, לא את הפעולה על האובייקט option(self)
devorack
אבל אם אתה רוצה לקשר בין משתנה (או שם) מרשימה אחת לערך כלשהוא, למדנו על מבנה נתונים שעושה בדיוק את זה
DrorBiton
אני עדיין לא הבנתי לגמרי את הכוונה שלך אבל ממה שעולה לי לראש התכוונת למילון ובעצם להפוך אותם למשתנה אחד כך ש self.options יצא כך:
{‘a’ = 0, ‘b’ = 0, ‘c’ = 0}
ומכאן לשנות את הקוד שיעבוד לפי מה שאנחנו כבר מכירים, עבור הפעולה vote להוסיף 1 לערך המתאים במילון, למחוק ולהוסיף נהיה יותר פשוט.
ואם צדקתי בכוונה שלך כנראה שאני סתם נהנה לסבך את עצמי.
orirenick
אם אתה עדיין בקטע של לסבך אתה גם תמיד יכול לשמור רשימה נפרדת שמכילה int מייצג עבור כל אופציה, ובהתאמה לעדכן כל פעם שמבצעים הצבעה/הוספת אופיצה/הורדת אופציה
הראש שלי מתחיל לעבוד שעות נוספות כדי לסבך במיוחד, אולי אנסה גם לממש את זה מאוחר יותר סתם לתרגול
כדי לסבך באמת: פשוט עבור כל הצבעה תכתוב לקובץ עם שם תואם לאופציה, וכשתרצה לבדוק את כמות ההצבעות תקרא מה רשום בקבצים.