אשמח להכוונה אם אפשר.
אני יודעת למצוא ולהדפיס את המסרים מקריאה בקובץ.
מצאתי דוגמאות לgenerator שמחלק קובץ לחתיכות. חתיכות בגודל קבוע.
אבל אני לא מבינה עדיין עד הסוף איך לעבוד עם זה:
האם עם קובץ “חתוך” אפשר לשמור מצביע למקום כדי ללכת אחורה מ"!" ביחס לתחילת הקובץ?
וגם: כמה קטנה יכולה להיות כל חתיכה שקוראים? עד כדי בייט בודד? (מן הסתם חלוקה כזו לא מאד יעילה)
יש אפשרות לחלק לחתיכות כך ש “!” ישמש כ separator, ורק אם הוא לא נמצא לאורך מקטע גדול מדי, אז חותכים לפי גודל?
Yam
נשמע שאת כן בכיוון הנכון. לא צריך ללכת אחורה, אפשר לשמור את מה שעברת עליו.
בתרגיל נותנים לך הנחות ואומרים איך המסר נראה בקווים כלליים – תשתמשי בזה
ha.amear
האם בפייתון יש דרך לדעת את גודל הקובץ לפני קריאתו? זאת בכדי לחלקו לכמה חלקים שווים ואז לקרוא כל פעם חלק? לא מצאתי בגוגל דרך כזו. תודה
Yam
כן צריך לחפש עוד קצת בגוגל
לייק 1
Yam
רק שים לב ש"לחלק אותו לחלקים שווים" זו משימה שלא בהכרח הגיונית – בד"כ נעדיף לשמור על גודל שפוי אחיד (מ־1 byte ועד כמה מגות). אין סיבה לנסות לפרק עכשיו מספרים ראשוניים כדי לקרוא קובץ
reimaoz
האם אפשר ללכת אחורה למרות שלא צריך…? ואם אני מוצא את כל המסרים ורק אותם אבל מדפיס בסדר הפוך מאיך שהם מופיעים בקובץ (שלוש שתיים אחת במקום אחת שתיים שלוש), האם זה פיתרון תקף?
בעצם אני יכול להיות פחות עצלן ולהדפיס בסדר המקורי אז אפשר להתעלם מהחלק השני של השאלה…
hadaskam
האם זה נכון לחלק את הקריאה לפי כל פעם שורה?
noa.izhaki
זה בסדר אם בעצם לא השתמשתי ב-generator? פתאום נפל לי האסימון שזה תרגיל במחמברת generators.
כלומר אין לי בכלל פונקציה בקוד, האם עצם זה שהקוד קורא קובץ בחלקים הופך אותו לגנרטור?
בנוסף, מה הכוונה ב"הקפידו שלא להשתמש בטכניקות שלא למדנו"? האם שימוש בפונקציה מובנת (שלא למדנו) נחשב כטכניקה?
לצורף העניין השתמשתי בפונקציה:
iter()
Yam
הפונקציה iter יוצרת איטרייטור, אך לא ג’נרייטור. זו לא טכניקה וזה בסדר
כן עדיף שתשתמשי בג’נרייטורים