בקשת מידע | קורס פייתון
-
@פלדה כתב בבקשת מידע | קורס פייתון:
אתה יודע לקרוא שגיאות???
אגב, פייתון נהיה ממש ידידותי בהודעות השגיאה, וככל שגרסאות פייתון מתקדמות יותר יוצאות לשוק זה הולך ונהיה נחמד.
למשל הפעם הוא כתב לך פשוט כך:
השם "operator" לא נמצא. אולי שכחת לייבא אותו?שווה להשתמש בתרגום, ועם הזמן ללמוד את האנגלית, זה פשוט חוסך המון.
-
@איסתרק-השלישי
מישהו יכול להסביר ל למה זה מה שקרה ?
לכאורה זה היה אמור להדפיס את המילה הכי ארוכה, לא? -
@איסתרק-השלישי
עבד. תודה.
מה זה עשה בעצם? -
@sivan22 זה מענין כי אצלי ברירת המחדל כן הייתה החזרת המחרוזת הארוכה ביותר.
@פלדה כתב בבקשת מידע | קורס פייתון:
מה זה עשה בעצם?
key פירושו מפתח, הפונקציה max תחזיר את הערך הגבוה לפי המפתח שהוזן. ניתן להגדיר כמפתח כל פונקציה שמחזירה ערך מסויים על כל איבר ברשימה, במקרה שלנו len - פונקציה שמחזירה את אורך המחרוזת. ולכן max תחזיר את המחרוזת הארוכה ביותר ברשימה. אצלי זה היה מוגדר כברירת מחדל, כנ"ל, מענין מאוד למה אצלך לא.
-
@ישראל-1-0 @איסתרק-השלישי
אוקיי חבר'ה, זו המשימה שלי:
יש לי כבסיס את הקטע קוד הבא שכתבתי -def is_valid_input(letter_guessed): ... if len(letter_guessed) != 1: ... if(letter_guessed).isalpha(): ... print ("fales") ... else: ... print ("fales") ... else: ... if(letter_guessed).isalpha(): ... print ("true") ... else: ... print ("fales")
בעזרת איזו פקודה אפשר להגדיר שכל ערך תקין יוכנס לרשימה, והערך הבא שיוכנס - אם הוכנס כבר יוחזר הערך הבוליאני fales?
אל תגלו לי רק תגידו מה הפקודות.
אגב, אם יש למישהו הערות על הקטע קוד הנ"ל, אשמח לשמוע.. -
@פלדה הערה על הקוד: אם שונה מאחד אין עוד טעם לבדוק אם זו אות, הרי זה ודאי שגיאה.
הקוד המתוקן:
def is_valid_input(letter_guessed): ... if len(letter_guessed) != 1: ... print ("fales") ... else: ... if(letter_guessed).isalpha(): ... print ("true") ... else: ... print ("fales")
-
@sivan22
נסיתי לכתוב (כפתרון לתרגיל) את קטע הקוד הבא:>>> old_letters_guessed = [] >>> letter_guessed = input("נחש תו") >>> def is_valid_input(letter_guessed): ... if len(letter_guessed) != 1: ... print ("X") ... "->".join(sorted(old_letters_guessed)) ... else: ... if(letter_guessed).isalpha(): ... print ("true") ... old_letters_guessed += [letter_guessed] ... else: ... print ("X") ... "->".join(sorted(old_letters_guessed))
וכשקראתי לפונקציה -
>>> is_valid_input("t") true Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 8, in is_valid_input UnboundLocalError: cannot access local variable 'old_letters_guessed' where it is not associated with a value
אם הבנתי נכון, הוא לא הצליח לגשת לרשימה.למה?
הייתי צריך להגדיר אותה ככה?old_letters_guessed = ([""])
-
@פלדה הסיבה שהוא לא הצליח לגשת לרשימה זה בגלל שקראת בתוך הפונקציה למשתנה שהוגדר מחוץ לפונקציה, הקוד צריך להיראות כך:
>>> old_letters_guessed = [] >>> letter_guessed = input("נחש תו") >>> def is_valid_input(letter_guessed, old_letters_guessed): ... if len(letter_guessed) != 1: ... print ("X") ... "->".join(sorted(old_letters_guessed)) ... else: ... if(letter_guessed).isalpha(): ... print ("true") ... old_letters_guessed += [letter_guessed] ... else: ... print ("X") ... "->".join(sorted(old_letters_guessed))
ואז הקריאה לפונקציה:
>>> is_valid_input("t", old_letters_guessed)
אגב, זה חלק מדרישות המשימה המקוריות.
-
@sivan22 כתב בבקשת מידע | קורס פייתון:
הקוד צריך להיראות כך:
> > >>> old_letters_guessed = [] > >>> letter_guessed = input("נחש תו") > >>> def is_valid_input(letter_guessed, old_letters_guessed): > ... if len(letter_guessed) != 1: > ... print ("X") > ... "->".join(sorted(old_letters_guessed)) > ... else: > ... if(letter_guessed).isalpha(): > ... print ("true") > ... old_letters_guessed += [letter_guessed] > ... else: > ... print ("X") > ... "->".join(sorted(old_letters_guessed))
שונה מהקוד שאני כתבתי?
-
@פלדה כמובן, יחי ההבדל הקטן!
עקרון מאד חשוב בתיכנות הוא "מרחב השמות", כלומר התחום בו אני יכול לקרוא למשתנה מסוים. בתוך פונקציה בעקרון אפשר לקרוא רק לערכים שנשלחו לפונקציה, או לערכים שנוצרו בתוכה, ואתה קראת לערך old_leterd_guessed שהוגדר מחוץ לפונקציה. לכן שלחתי אותו לפונקציה ואז קראתי לערך שנשלח ולא לערך שבחוץ. ודוק.
-
def numbers_letters_count(my_str): ... numbers = [] ... others = [] ... for char in my_str: ... if char.isdigit(): ... numbers.append(char) ... print (len(numbers)) ... else: ... others.append(char) ... print (len(others)) ... >>> print(numbers_letters_count("Python 3.6.3"))
ובכן, הייתי מצפה שהפלט יהיה -
3 9
אבל הפלט הוא -
>>> print(numbers_letters_count("Python 3.6.3")) 1 2 3 4 5 6 7 1 8 2 9 3 None