אהלן.
הגעתי לשיעור 24 בקורס פייתון 2.7
בערך משיעור 20 התחלתי להסתבך יותר עם החומר.
אם אפשר לקבל קישור או תרגילים נוספים לנושאים עד שיעור 24
זה מאוד יעזור לי אני נתקעתי עם הקורס וקשה לי להתקדם.
בשמחה - רוצה שננסה להתקדם יחד? אני אשים כאן תרגיל ותדביק את הפיתרון ולפי זה אראה איזה עוד תרגילים יתאימו ונמשיך את המשחק עד שיימאס?
הנה הראשון:
כתבו פונקציה שמקבלת מערך של מילים וסופרת בכמה מהמילים יש אותיות שמופיעות פעמיים ובכמה מהמילים יש אותיות שמופיעות שלוש פעמים בדיוק. בסוף יש להחזיר את התוצאה בתור Tuple. הפעלה לדוגמא עשויה להיראות כך:
words = ['abcdef', 'bababc', 'abbcde', 'abcccd', 'aabcdd', 'abcdee', 'ababab']
res = count_double_or_triple_letters(words)
# prints 4
print "In ", res[0], "words there's a letter that repeats twice"
# prints 3
print "In ", res[1], "words there's a letter that repeats three times"
אהלן אחי תודה על העזרה!
כמו שאמרתי התחלתי להסתבך בפרקים האחרונים אז לא ידעתי איך באמת לעשות את זה.
עשיתי את התרגיל עם מי שאני יודע.
from collections import Counter
def words():
x = 0
while x != 6:
word = ['abcdef', 'bababc', 'abbcde', 'abcccd', 'aabcdd', 'abcdee', 'ababab']
arr = word[x]
dict = Counter(arr)
print
print word[x]
print dict.items()
x += 1
y = 0
while y != len(dict.items()):
lolo = (dict.items()[y])[1]
if lolo == 3:
print 'in "%s" we have 3 letters the same' % word[x]
if lolo == 2:
print 'in "%s" we have 2 letters the same' % word[x]
y += 1
words()
מקווה שהקוד נשלח היטבת לא הצלחתי לצרף קבצים
הי אלירן,
הפונקציה עובדת אבל בוא נתקדם עם זה כדי שיגיע לפיתרון נכון של התרגיל - יש שני דברים שפיספסת וזה קבלת הפרמטרים בפונקציה והחזרת הערכים
כשאתה מגדיר את המילים בתוך הפונקציה תהיה לנו בעיה להפעיל אותה על רשימות מילים אחרות. נסה בתור התחלה להעביר את הרשימה החוצה ולהעביר אותה כפרמטר.
אחרי זה כשאתה מדפיס את הערכים בתוך גוף הפונקציה אתה מונע מאנשים להשתמש בה אחרת (אולי מישהו רוצה לסכום את שתי התוצאות, או לראות את המכפלה שלהן). נסה ״להחזיר״ את הערכים ולהעביר את שורות ההדפסה לקוד החיצוני שקורא לפונקציה
לזה התכוונת?
from collections import Counter
def words(*args):
x = 0
while x != 6:
arr = args[x]
dict = Counter(arr)
print
print args[x]
print dict.items()
x += 1
y = 0
while y != len(dict.items()):
lolo = (dict.items()[y])[1]
if lolo == 3:
print 'in "%s" we have 3 letters the same' % args[x]
if lolo == 2:
print 'in "%s" we have 2 letters the same' % args[x]
y += 1
print words('abcdef', 'bababc', 'abbcde', 'abcccd', 'aabcdd', 'abcdee', 'ababab')
אני לא בטוח לגבי החזרת הערכים.
כיוון טוב, עכשיו נסה להתאים את הפונקציה לקריאות הבאות מבחוץ (לכל אחד מהסעיפים תעדכן את הפונקציה ותדביק את התוצאה לכאן):
# 1. Return results
count_two, count_three = words('abcdef', 'bababc', 'abbcde', 'abcccd', 'aabcdd', 'abcdee', 'ababab')
print "There are {} words with double letter and {} words with triple letter".format(count_two, count_three)
# 2. Receive an array
count_two, count_three = words(['abcdef', 'bababc', 'abbcde', 'abcccd', 'aabcdd', 'abcdee', 'ababab'])
print "There are {} words with double letter and {} words with triple letter".format(count_two, count_three)
# 3. Return an array
words_with_double_letter = words(['abcdef', 'bababc', 'abbcde', 'abcccd', 'aabcdd', 'abcdee', 'ababab'])
print "The following words have a letter that appears twice: ", words_with_double_letter
ועכשיו תעדכן את הפונקציה כך שתקבל בנוסף לרשימת המילים מספר (נקרא לו n) ותחזיר את כל המילים שיש בהן אות שמופיעה n פעמים (בדוגמא הקודמת זה כאילו העברנו את המספר 2):
# 4. Receive an array AND a counter
words_with_double_letter = words(['abcdef', 'bababc', 'abbcde', 'abcccd', 'aabcdd', 'abcdee', 'ababab'], 2)
print "The following words have a letter that appears twice: ", words_with_double_letter
הרעיון שאנחנו יכולים לשחק עם הפרמטרים שפונקציה מקבלת ועם הערכים שהיא מחזירה כדי לכתוב פונקציות ש״ישחקו״ יפה יותר בתוך התוכנית. הבחירה איזה פרמטרים לקבל, מה הסוג שלהם ומה להחזיר היא שעוזרת לנו להפעיל את הפונקציה מבחוץ בצורה שאנחנו רוצים
הי,
ובאותו נושא דף תרגילים נוסף שכתבתי לחיזוק העבודה עם פונקציות ופרמטרים:
בהצלחה