
# WHILE loop
# הדפסת כל המספרים מ 1 עד 5
# i=0                #מונה=0
# while i<5:        #כל עוד המונה קטן מ 10-תבצע
#     i=i+1          #הוסף 1
#     print(i)       #פלט

# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# הלולאה ביצעה רק מחזור אחד
# i=0                #מונה=0
# while i<10:        #כל עוד המונה קטן מ10 -תבצע
#      i=i+1         #הוסף 1
#      print(i)      #פלט
#      break         #הלולאה הספיקה להדפיס רק סבב יחיד


# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

# i=0                  #מונה=0
# while i<10:          #כל עוד המונה קטן מ 10 -תבצע
#     i=i+1            #הוסף 1
#     if i%2==0:       #אם השארית שווה לאפס,כלומר המספר זוגי,
#         continue     #אל תדפיס ותמשיך לשלב הבא בלולאה - לדלג
#     print(i)         #פלט

# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

#                              7.1.4
# התכנית מקבלת 2 ערכים ומחזיר את כל ריבועי המספרים בין הגבולות שניתנו

# import math                        #ייבוא ספרייה
# def squared_numbers(start,stop):   #הגדרת פונקציה עם 2 ערכים שלמים
#     list1=[]                       #הגדרת רשימה

#     while start<=stop:             #כל עוד ההתחלה קטנה או שווה לסוף
#         x=int(pow(start,2))        #תא איקס יקבל את המספר בריבוע
#         start+=1                   #הגדלת ההתחלה ב1
#         list1.append(x)            #עידכון הרשימה-הכנסת הערך האחרון בריבוע לרשימה
#     return list1                   #החזר את הרשימה המעודכנת

# def main():                        #הגדרת הפונקציה מיין
#     squared_numbers(-3,3)          #קריאה לפונקציה והשמת ערכים
#     print(squared_numbers(-3,3))   #אם אני רוצה לראות את הפלט

# if __name__ == "__main__":         #סיומת שמורה לשימוש בפונקציה מיין
#     main()

# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# FOR loop
#

# list=["y4","ya4","ya7","yb8"]              #הגדרת רשימה
# New_list=[]                                #הגדרת רשימה
# for kita in list:                          #עבור כיתה בתוך הרשימה
#     New_list.append(kita)                  #דחוף את האובייקט ברשימה לסופה
# print(New_list)                            #לשים לב להבדל במיקום הפקודה פרינט
#                                            #התכנית תדפיס פעם אחת את הרשימה

# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# list=["y4","ya4","ya7","yb8"]          #הגדרת רשימה
# New_list=[]                            #הגדרת רשימה
# for kita in list:                      #עבור כיתה בתוך הרשימה
#     New_list.append(kita)              #דחוף את האובייקט ברשימה לסופה
#     print(New_list)                    #לשים לב להבדל במיקום הפקודה פרינט
# התכנית תדפיס בכל מחזור רשימה מעודכנת יותר עד שתסתיים הלולאה

# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

# 7.2.1 - Shahar
# הפונקציה מקבלת רשימה ומספר.היא מדפיסה את האובייקט רק אם הוא גדול מהמספר
# def is_greater(my_list,n):         #הגדרת הפונקציה עם רשימה ומספר
#     New_list=[]                    #רשימה ריקה
#     for num in my_list:            #התחלת הריצה על הרשימה
#         if num>n:                  #אם האובייקט גדול מהמספר
#             New_list.append(num)   #תעדכן את הרשימה החדשה
#         else:                      #אחרת
#             continue               #תמשיך
#     return New_list                #החזר את הרשימה המעודכנת הסופית

# def main():                            #הגדרת הפונקציה מיין
#     is_greater([7,0,1,3,5],2)          #קריאה לפונקציה והשמת ערכים
#     print(is_greater([7,0,1,3,5],2))   #אם אני רוצה לראות את הפלט

# if __name__ == "__main__":             #סיומת שמורה לשימוש בפונקציה מיין
#     main()

# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

# 7.2.2

# def numbers_letters_count(my_str):     #הגדרת פונקציה שמקבלת מחרוזת

#     num_of_chr=0                       #איפוס מונה לתווים שאינם מספרים
#     num_of_digits=0                    #איפוס לתווים שהם מספרים

#     for chr in my_str:                 #עבור משתנה בתוך המחרוזת שנקלטת - תבצע:את
#         if chr.isnumeric():            #אם המשתנה הוא מספר
#             num_of_digits+=1           #הוסף 1 למונה המספרים
#         else:                          #אחרת
#             num_of_chr+=1              #הוסף 1 למונה התווים שאינם מספרים
#     list1=(num_of_digits,num_of_chr)   #התא ליסט1 מקבל את 2 הערכים
#     list2=list(list1)                  #שינוי הטיפוס לרשימה
#     return(list2)                      #החזר את הרשימה

# def main():                                       #הגדרת הפונקציה מיין
#     numbers_letters_count("1,2,  ")          #קריאה לפונקציה והשמת ערכים
#     print(numbers_letters_count("1,2,  "))   #אם אני רוצה לראות את הפלט

# if __name__ == "__main__":                        #סיומת שמורה לשימוש בפונקציה מיין
#       main()


# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


# גירסה משופרת לתרגיל 7.2.2 - דרור

# def numbers_letters_count(my_str):     #הגדרת פונקציה שמקבלת מחרוזת
#     list1=[0,0]                        # התא ליסט1 מקבל ערכי אפס עבור רשימה
#     for chr in my_str:                 #עבור משתנה בתוך המחרוזת שנקלטת - תבצע:את
#         if chr.isnumeric():            #אם המשתנה הוא מספר
#             list1[0]+=1                #הוסף 1 למונה המספרים שהוא המקום הראשון ברשימה שתוחזר
#         else:                          #אחרת
#             list1[1]+=1                #הוסף 1 למונה התווים שאינם מספרים,שהוא המקום השני ברשימה שתוחזר
#     return(list1)                      #החזר את הרשימה

# def main():                                  #הגדרת הפונקציה מיין
#     numbers_letters_count("1,2,  ")          #קריאה לפונקציה והשמת ערכים
#     print(numbers_letters_count("1,2,  "))   #אם אני רוצה לראות את הפלט

# if __name__ == "__main__":                   #סיומת שמורה לשימוש בפונקציה מיין]
#     main()


# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# הדגמה כיצד מתפקדת הפונקציה מיין
# def add(x):     #הגדרת פונקציה
#     x+=1        #מוסיפה 1 לתא איקס
#     return x    #מחזירה את ערך איקס

# def multi(y):   #הגדרת פונקציה
#     z=2*y
#     return z    #מחזירה את ערך זד

# def main():
#     #print(add(2))        #מריצה את הפונקציה אד לאחר השמת ערך
#     #print(multi(3))      #מריצה את הפונקציה מולטי לאחר השמת ערך
#     print(multi(add(5)))  # שילוב נחמד של פונקציה בתוך אד בתוך פונקציה מולטי
# main()


# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# עובד טוב
# def seven_boom(end_number):
#     number1=str(end_number)
#     x=str("7")
#     #for n in number1:
#     if x in number1:
#             print("boom")
#     elif int(number1)%7==0:
#             print("boom")
#     else:
#             print("b")
# seven_boom("0")


# שיפור1
# def seven_boom(end_number):
#     num=str(end_number)
#     x="7"
#     if x in num:
#             print("boom")
#     elif int(num)%7==0:
#             print("boom")
#     else:
#             print("not")
# seven_boom(171)


# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# תכנית שמדגימה שימוש בפונקציית מיין ולפעילות בינה לבין פונקציה  שמבצעת משימה חלקית
# התכנית בודקת אם מספר שהתקבל הוא כפולה של 7

# הפונקציה מזהה כפולות 7

# def divide_to_7(end_number):     #הגדרת הפונקציה
#     if int(end_number)%7 == 0:   #הפיכת טיפוס מחרוזת למספר ובדיקת השארית בחלוקה ל 7
#         return True              #

# def seven_boom(end_number):
#     list=[]
#     for y in range(0,end_number+1):
#         if divide_to_7(y):
#             list.append("boom")
#         else:
#             list.append(y)
#     return list
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

# #                                            7.2.4
# הפונקציה מזהה כפולות #7
# def divide_to_7(end_number):    #הגדרת הפונקציה
#   if int(end_number)%7 == 0:    #הפיכת המחרוזת למספר ובדיקה אם הוא מתחלק ל 7 ללא שארית
#       return True               #החזרת אמת

# #הפונקציה מזהה את הסיפרה 7 -אם קיימת
# def presence_7(end_number):       #הגדרת הפונקציה
#     if "7" in str(end_number):    #בדיקה אם 7 נמצא המחרוזת
#         return True               #החזרת אמת

# #פונקציה ראשית
# def seven_boom(end_number):                             #הגדרת הפונקציה שתבצע את המשימה
#     list=[]                                             #איפוס רשימה שאליה תיכנס רשימת המספרים
#     for number in range(0,end_number+1):                #עבור מספר בטווח בין אפס למספר הסופי
#         if divide_to_7(number) or presence_7(number):   #אם מתקיימים 2 התנאים של המשחק - 2 הפונקציות שלעיל
#             list.append("BOOM")                         #עדכן את הרשימה בום
#         else:                                           #אחרת
#             list.append(number)                         #תשבץ את המספר
#     return list                                         #החזרת הרשימה

# print(seven_boom(40))                                   #קריאה לפונקציה והשמת ערך


# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

#                                               &&&      replace המתודה    &&&

# התכנית מקבלת מחרוזת ומחליפה תו מסויים באחר
# txt1 = "aaaBBBcccDDD"                #קולטת מחרוזת
# txt2 = txt1.replace("B", "")         #מחליפה את התו בי גדול בכלום,כלומר -מוחקת את בי גדול
# txt3=txt2                            #המחרוזת,לאחר מחיקת בי גדול נכנסת לתא חדש
# txt4 = txt3.replace("D", "")         #מחליפה את די גדול בכלום-כלומר מוחקת את די גדול
# print(txt4)                          #הדפסת המחרוזת המקורית ללא האותיות הגדולות
# print(len(txt4))                     @מניית התווים במחרוזת החדשה

# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

# התכנית מקבלת מחרוזת ומחליפה תו מסויים באחר

# txt1="abcd"                   #קולטת מחרוזת
# txt2=txt1.replace("a","M")    #מחליפה את איי באם גדולה
# txt3=txt2.replace("b","O")    #מחליפה את בי באו גדולה
# txt4=txt3.replace("c","T")    #מחליפה את סי בטי גדולה
# txt5=txt4.replace("d","I")    #מחליפה את די באיי גדולה
# print(txt5)                   #הדפסת המחרוזת החדשה


# התכנית מקבלת מחרוזת ומחליפה אותה במחרוזת אחרת

# txt1="abcd"
# txt2=txt1.replace("abcd","MOTI")
# print(txt2)


# התכנית מקבלת מחרוזת ומחליפה תו מסויים באחר .שידרוג המחרוזת בכל שלב

# txt1="abcd"                   #קולטת מחרוזת
# txt1=txt1.replace("a","M")    #מחליפה את איי באם גדולה
# txt1=txt1.replace("b","O")    #מחליפה את בי באו גדולה
# txt1=txt1.replace("c","T")    #מחליפה את סי בטי גדולה
# txt1=txt1.replace("d","I")    #מחליפה את די באיי גדולה
# print(txt1)


# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

#
# 7.2.5
# הפונקציה מחזירה את אורך המחרוזת
"""
def len_str(my_str):
    print(len(my_str))
len_str("123456")
"""


# עובד טוב
# def zihuy(my_str):
#     list=[]
#     i=0
#     length=len(my_str)
#     while i<=length-2:
#         if my_str[i]==my_str[i+1]:
#             print("yes")
#         else:
#             print("no")
#         i+=1
# print(zihuy("qqllww"))


# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# ראשית
"""
def sequence_del(my_str):
    for x in range(mt_str)
    if my_str[0]==my_str[1]:
        print("yes")
    else:
        print("no")

sequence_del("nuhhgg")
"""


# שיעור  עם דרור
# הפונקציה מקבלת מחרוזת ומוחקת את האותיות שמופיעות ברצף ומשאירה רק אחת מכל רצף
# 7.2.5
# def sequence_del(my_str):              #הגדרת הפונקציה
#     if my_str=="":                     #מצב קיצון-אם המחרוזת ריקה
#         return my_str                  #החזרת המחרוזת הריקה
#     else:                              #אחרת
#         str=""                         #מחרוזת ריקה
#         str+=my_str[0]                 #עידכון המחרוזת בתו הראשון
#         i=0                            #מונה
#         length=len(my_str)             #בדיקת אורך המחרוזת
#         while i<=length-2:             #כל עוד המנה קטן או שווה ל - אורך פחות 2
#             if my_str[i]==my_str[i+1]: #בדיקה אם קיימים שני תווים סמוכים שזהים זה לזה
#                 i+=1                   #הוסף 1 למונה
#             else:                      #אחרת
#                 str+=my_str[i+1]       #עדכן את המחרוזת
#                 i+=1                   #הוסף 1 למונה
#         return str                     #החזרת המחרוזת המעודכנת
# print(sequence_del("abbcccdddd"))      #קריאה לפונקציה והשמת המחרוזת


# 7.2.6
 #הפונקציה קולטת ומדפיסה את רשימת מוצרים שמוקלדת במיין
# def M_1(items_list):                                        #הפונקציה קולטת את רשימת מוצרים שמוקלדת במיין
#     print("your items are : ", items_list)

# # הפונקציה קולטת ומדפיסה את כמות המוצרים
# def M_2(items_list):                                        #הפונקציה קולטת את רשימת מוצרים שמוקלדת במיין
#     print("there are ", len(items_list), " items in your list")

# # הפונקציה קולטת את המוצרים ומאפשרת למשתמש לבדוק אם קיים מוצר כלשהו ברשימה
# def M_3(items_list):                                        #הפונקציה קולטת את רשימת מוצרים שמוקלדת במיין
#     ques1 = input("Is the Item is in the List ?")
#     if ques1 in items_list:
#         print("Yes,", ques1, "is in the List")
#     else:
#         print("No,", ques1, "isn't in the List")

# # הפונקציה סופרת כמה פעמים המוצר קיים
# def M_4(items_list):                                         #הפונקציה קולטת את רשימת מוצרים שמוקלדת במיין
#     hofaot = 0
#     mikum = 0
#     ques2 = input("How Many Times the Item Appears in the List ?")
#     for x in items_list:
#         if ques2 == items_list[mikum]:
#             hofaot += 1
#         mikum += 1
#     print(ques2, " appears ", hofaot,  " times")

# # הפונקציה מוחקת מוצר מהרשימה לפי בקשת המשתמש
# def M_5(items_list):                                           #הפונקציה קולטת את רשימת מוצרים שמוקלדת במיין
#     ques3 = input("What Item do you Want to Delete ? ")
#     mikum = 0
#     for x in items_list:
#         if ques3 == items_list[mikum]:
#             items_list.pop(mikum)
#             break
#         else:
#             mikum += 1

# # הפונקציה מוסיפה פריט לרשימה לפי בקשת המשתמש
# def M_6(items_list):                                    #הפונקציה קולטת את רשימת מוצרים שמוקלדת במיין
#     ques4 = input("What Item do you Want to Add ? ")    #המשתמש מקליד מוצר להוספה לרשימה
#     items_list.append(ques4)                            #המוצר מתווסף

# # הפונקציה מדפיסה את כל המוצרים שאינם חוקיים
# # מוצר אינו חוקי אם אורכו קטן מ-3 או שהוא כולל תווים שאינם אותיות
# def M_7(items_list):                                    #הפונקציה קולטת את רשימת מוצרים שמוקלדת במיין

#     for x in items_list:                            #
#         length_item = len(x)                        #
#         if length_item >= 3 and x.isalpha():        #
#             continue                                #
#         else:                                       #
#             print(x)                                #

# # הפונקציה מוחקת כפילויות
# def M_8(items_list):#הפונקציה קולטת את רשימת מוצרים שמוקלדת במיין

#     new_list = []               #יצירת רשימה ריקה אליה יוכנסו האיברים ללא כפילויות
#     for x in items_list:        #עבור כל איבר ברשימה
#         if x not in new_list:   #אם האיבר לא נמצא ברשימה
#             new_list.append(x)  #תעדכן את הרשימה החדשה בו
#     # print(new_list)


# def all_together():                                             #פונקציית מיין
#     items=input("please type what do you want to buy: ")        #משפט פתיחה לשימוש במספר פונקציות
#     items_list=items.split(',')                                 # הפיכת המחרוזת שמתקבלת לרשימה של מחרוזות מופרדות בפסיק
#     press = input("press your choice 1-9 :")                    #בחירת אופציות שונות
#     while press != "9":                                         #כל עוד לא נבחר המספר 9 המשך
#         if press == "1":                                        #אם נבחרה האופציה 1
#             M_1(items_list)                                     #M_1 בצע את פונקציה
#         elif press == "2":                                      #אם נבחרה האופציה 1
#             M_2(items_list)                                     #M_2 בצע את פונקציה
#         elif press == "3":                                      #אם נבחרה האופציה 1
#             M_3(items_list)                                     #M_3 בצע את פונקציה
#         elif press == "4":                                      #אם נבחרה האופציה 1
#             M_4(items_list)                                     #M_4 בצע את פונקציה
#         elif press == "5":                                      #אם נבחרה האופציה 1
#             M_5(items_list)                                     #M_5 בצע את פונקציה
#         elif press == "6":                                      #אם נבחרה האופציה 1
#             M_6(items_list)                                     #M_6 בצע את פונקציה
#         elif press == "7":                                      #אם נבחרה האופציה 1
#             M_7(items_list)                                     #M_7 בצע את פונקציה
#         elif press == "8":                                      #אם נבחרה האופציה 1
#             M_8(items_list)                                     #M_8 בצע את פונקציה

#         press = input("press your choice 1-9 :")                #המשך הלולאות עד שיילחץ המספר 9 ליציאה

# if __name__ == "__main__":                                      # סיומת שמורה לשימוש בפונקציה שמריצה]
#     all_together()                                              #קריאה לפונקציה



#התכנית עובדת-לבדוק עם דרור
#7.2.7
# def arrow(my_char, max_length):     #הגדרת הפונקציה בשני פרמטרים:הסימן ואורך השורה האמצעית

#     x=1                             #ערך התחלתי לשורה הראשונה
#     while x<=max_length:            #כל עוד הערך ההתחלתי קטן או שווה לאורך השורה האמצעית
#         print(my_char*x)            #הדפס את התו כפול המונה
#         x+=1                        #הגדלת המונה
#                                     #ההדפסה הגיעה לשורת האמצע,מכאן כמות התווים צריכה לקטון
#     x=max_length-1                  #ערך התחלתי לשורה הראשונה מתחת לשורה האמצעית
#     while x>=1:                     # כל עוד הערך ההתחלתי גדול או שווה לאורך השורה החדשה
#         print(my_char*x)            #הדפס את התו כפול המונה
#         x-=1                        #הקטנת המונה

# arrow("*",0)                    #קריאה לפונקציה והשמת ערכים



# #ניסיון לפצל ל2 פונקציות-אחת שמדילה ואחת שמקטינה ולשלבן במיין-לבדוק עם דרור
# def big_arrow(my_char,max_length):     #הגדרת הפונקציה בשני פרמטרים:הסימן ואורך השורה האמצעית

#     x=1                             #ערך התחלתי לשורה הראשונה
#     while x<=max_length:            #כל עוד הערך ההתחלתי קטן או שווה לאורך השורה האמצעית
#         print(my_char*x)            #הדפס את התו כפול המונה
#         x+=1                        #הגדלת המונה

#                                     #ההדפסה הגיעה לשורת האמצע,מכאן כמות התווים צריכה לקטון
# def small_arrow(my_char,max_length):
#     x=max_length-1                  #ערך התחלתי לשורה הראשונה מתחת לשורה האמצעית
#     while x>=1:                     # כל עוד הערך ההתחלתי גדול או שווה לאורך השורה החדשה
#         print(my_char*x)            #הדפס את התו כפול המונה
#         x-=1                        #הקטנת המונה

# def all_stars():
#     my_char=input("your char :")
#     max_length=int(input("the length :"))
#     big_arrow(my_char,max_length)
#     small_arrow(my_char,max_length)

# if __name__ == "__main__":             # סיומת שמורה לשימוש בפונקציה שמריצה
#     all_stars()






#תכנית שלא עובדת באתר - לשאול למה לא עובד אצלם

def arrow(my_char, max_length):
    x=1
    while x<=max_length:
        print(my_char*x)
        x+=1
    x=max_length-1
    while x>=1:
        print(my_char*x)
        x-=1
arrow("*",5)