List comprehensions


#1

היי ינון עשיתי את תרגיל 2 ( עדיין חלקי) ואני מקבל הודעה כשאני משתמש ב list comprehensions בפעולה השניה
כשאני משתמש בלולאה רגילה הכל עובד , לא מצליח להבין מה השגיאה
להלן הקוד
the averg nunber is 6.0
<generator object at 0x0000023C9E973C48>
10.0

C:\Users\user>


#2


#3

הי @grayzer

הבעיה בשורה שלישית:

largenum = (float(arg_1) for arg_1 in sys.argv if arg_1 > average)

אתה צריך להשתמש שם בסוגריים מרובעים במקום עגולים כלומר:

largenum = [float(arg_1) for arg_1 in sys.argv if arg_1 > average]

בעיקרון בתוך ה sum אתה גם יכול להוסיף סוגריים מרובעים (כי בשביל List Comprehension משתמשים בסוגריים מרובעים), אבל זה לא הכרחי כי sum יודע לעבוד גם עם Generator Comprehension. בשביל להבין את ההבדל בין השניים יותר טוב תצטרך לראות את הפרק על Generators אבל אולי כדאי לחכות עם זה קצת כי זה נושא יחסית מתקדם:

https://www.tocode.co.il/bundles/advanced-python3/lessons/generators


#4

היי עדיין יש שגיאה קצת אחרת
זן שורת הקוד largenum = [float(arg_1) for arg_1 in sys.argv if arg_1[1:] > float(average)]
הוספתי גם את החיתוך מאיבר 1 עד הסוף
השגיאה מתקבלת למרות שהמרתי את arg_1 ל float
largenum = [float(arg_1) for arg_1 in sys.argv if arg_1[1:] > float(average)]
TypeError: ‘>’ not supported between instances of ‘str’ and ‘float’


#5

היי הצלחתי ככה
[largenum = [arg for arg in sys.argv[1:] if float(arg) > averag]
את ההמרה ל FLOAT עשיתי אחרי ה IF וככה זה עובד
מה הסיבה שלא עבד כשההמרה הייתה בהתחלה?


#6

הי @grayzer

הבדיקה:

arg_1[1:] > float(average)

לא קשורה להמרות קודמות שאולי בוצעו, ובעצם היא לא חוקית כי בבדיקה זו המשתנה arg_1 הוא מחרוזת