קורס Python 3 שיעור תרגיל תחביר בסיסי

הי,

שים לב שעדכנתי את ההודעה שלך כדי שהקוד יראה נחמד יותר. לחץ על העיפרון כדי לראות איך בשביל ההודעות הבאות.

הפיתרון עובד רק כמה הערות לגבי הכתיב:

  1. הרווחים במקום הלא נכון - למשל בין int לסוגריים לא צריך להיות רווח, אבל מסביב לשווה כן צריך. בגדול בכל המקרים לא שמים רווח בין שם פונקציה לסוגר שפותח את רשימת הפרמטרים, ותמיד שמים רווח סביב האופרטור.

  2. למה בדקת אם השארית קטנה או שווה ל-0? באיזה מקרים היא תהיה קטנה מאפס?

  3. בפייתון עדיף להעביר תנאי בוליאני ל if ולא להשוות ל True. במקרה שלך find מחזיר מספר אז זה לא היה אפשרי, אבל אם במקומו נשתמש ב in דברים יראו יותר נחמד:

if '7' in str(x):

באופן כללי עבודה יפה ותמשיך לשים פה פיתרונות גם לאחרים

היי @ynonp ו @raviv2004

להלן התשובה:

while True:
    print("Hello User, please put a number")
    number = int(input())
    if number % 7 == 0 or '7' in str(number) :
        print("boom")
    else :
        print("The number if not not divided by 7 and not contains the number 7")

היי @ynonp

להלן תשובה לשאלה 5 :

print("Hello User, please set 3 numbers")
number1 = int(input())
number2 = int(input())
number3 = int(input())
a = [number1,number2,number3]

print(max(a))

גיא נראה מעולה. שים לב ש input יודע לקבל את שורת הפרומפט אז לפעמים כותבים:

number = int(input("Hello please put a number"))

ולגבי המקסימום - אני הייתי מוותר על הגדרת מערך עם שם (כי השם a ממילא לא אומר כלום) וכותב פשוט:

print(max([number1, number2, number3]))

ועוד שתי הערות טכניות-

  1. אתה יכול כאן בפורום לשנות את שם המשתמש מ 11128 למשהו יותר ידידותי

  2. כשאתה כותב קוד אתה יכול לכתוב אותו במה שנראה כמו בלוק קוד צבעוני אם תכתוב בשורה חדשה שלוש פעמים את הסימן `. אתה יכול ללחוץ על העיפרון לעריכה של אחת ההודעות שלך ותראה איך עשיתי את זה על הקוד שלך.

תרגילים 1 ו-2 בהמשך לדמו עם הקלט של שם המשתמש:

name = input('Who are  you?\n')
print(f"Hello! {name}. Nice to meet you.")

age = input(f'{name}, please enter your age:\n')
age_in_months = int(age) * 12
print(f'{name}, your age in months is at least: {age_in_months}\n')

months_old = input(f'{name}, please enter your age in months:\n')
age_by_months = int(months_old) / 12
print('{:s}, your age according to given months is: {:.0f}.\n'.format(name, age_by_months))

וריאציה לתרגיל 4 בה הוא מבוצע 7 פעמים, כשנוספה בדיקה לקלט (כך שיורכב רק מספרות):

print('Enter 7 numbers, if they are divided by or contain 7, they will be replaced by "Boom!"\n')
user_input = False
for i in range(7):
    while not user_input:
        user_input = input(f'{i+1}. Please enter a number\n')
        if not user_input.isdigit():
            print('Not a number')
            user_input = False
            continue

    if int(user_input) % 7 == 0 or '7' in user_input:
        print('Boom!\n')
    else:
        print(f'{user_input}\n')

    user_input = False

תרגיל 5 עם שימוש בביטוי רגולרי לקבלת קלט מאפשר גם מספרים שליליים:

import re

numbers = []
print('Please enter 3 numbers')
enter_numbers_label = ['first', 'second', 'third']
for i in range(3):
    user_input = False
    while not user_input:
        user_input = input(f'Please enter {enter_numbers_label[i]} number:\n')
        if not re.search('^-?\d+$', user_input):
            print('Not a valid number.')
            user_input = False

    numbers.append(int(user_input))

print('Maximum is: ', max(numbers))

תרגיל 6 עם שתי צורות פתרון - יצירת הסידרה החשבונית כדי לסכום אותה ושימוש בנוסחה לחישוב ישיר:

import re


def get_int_input(prompt='Please enter integer:\n'):
    user_input = False
    while not user_input:
        user_input = input(prompt)
        if not re.search('^-?\d+$', user_input):
            print('Not a valid number.')
            user_input = False

    return int(user_input)


first_member = get_int_input('Please enter the first member of the arithmetic progression:\n')
difference = get_int_input('Please enter the difference:\n')
num_of_members = get_int_input('Please enter the number of members:\n')

members = []
for i in range(num_of_members):
    this_member = first_member + (i * difference)
    members.append(this_member)

print(members)
print('Sum of AP is: ', sum(members))
print('Arithmetic sum of AP is: ', (num_of_members * (2 * first_member + (num_of_members - 1) * difference)) / 2)
לייק 1

הי @izem

נראה טוב. אישית אני לא ממליץ להשתמש ב isdigit או ביטויים רגולאריים כדי לבדוק אם משהו הוא מספר בגלל שקל לטעות. למשל 12.0 שהוא מספר ממש אחלה מציג הודעות שגיאה. בהמשך הקורס תגיע ללמוד על Exceptions ובהקשר הזה כדאי לקרוא את הפוסט הזה:

שמשתמש ב Exceptions כדי לפתור את הבעיה הזאת

אני רגיל לבדוק קלט מהמשתמש, אז חיפשתי משהוא שיוכל להתאים לבדיקת מספרים בפייטון ומצאתי את isdigit, שסה"כ התאים למה שהנחתי שהיא הדרישה בתרגיל (קבלת מספר “סטנדרטי”).
בתרגיל המשך חשבתי גם על האפשרות של קבלת מספרים שליליים (אך עדיין שלמים) ופניתי לכלי שאני מרגיש נוח איתו - ביטויים רגולאריים. אני יכול ליצור ביטוי שיסתדר גם עם מספרים שעשויים לכלול נקודה עשרונית, אבל זה לא הקלט שחשבתי שיש לאפשר למשתמש בתרגילים האלו.
אם אתה אומר ש"הדרך הפייטונית" היא להשתמש ב-Exceptions, אשתדל להשתמש בהן יותר בהקשרים האלו, למרות שכרגע הן מרגישות לי פחות מתאימות לוולידציה.

לייק 1

בגדול - שימוש ב Exceptions בשביל זה חוסך בדיקה מיותרת. במקום לבדוק פעם אחת את הביטוי הרגולארי שלך ואז אחרי זה שפייתון יבדוק בעצמו ויזרוק Exception אם יש טעות, אתה מסתפק בזה שפייתון יבדוק (כי הוא בכל מקרה יבדוק) ותופס את ה Exception אם היה

ינון שלום,
אני מניח שאת התרגילים יש לפתור עפ"י מה שנלמד עד כה…
אני רואה פתרונות עם תכולות של קוד שלא למדנו עדיין.

  1. האם הציפייה שתתבצע למידה עצמאית של מצגות נוספות מעבר למצגת 5 על מנת לפתור את התרגילים?
  2. האם הפקודות המפורטת בפוסט יילמדו בהמשך?
  3. בהמשך אשלח את הפתרונות לצורך בדיקתך

תודה

הי @Lior

אפשר לפתור את התרגילים רק עם החומר שהוצג בסרטים עד כה, ואפשר ורצוי גם לחפש ברשת רעיונות נוספים ולהשתמש בהם. באופן כללי אני מאוד בעד למידה עצמית מעבר למה שיש בקורס.

כמה שאתה לומד מיותר מקורות וביותר דרכים ככה החומר נשמר בראש טוב יותר

הי ותודה על התשובה המהירה.
מצרף את הפתרונות שלי … לעיונך והערותיך…
1.

"""
This exercise ask the person to Enter his age in years and print his age in months
"""

print("This Program will Calculate Your Age in Months.")
x=int(input("Please Enter Your Age in Years:"))
y=x*12
print("your Age is:", y,"Months")
"""
This exercise ask the person to Enter his age in Months and print his age in Years
"""
print("This Program will Calculate Your Age in Years.")
x=int(input("Please Enter Your Age in Months:"))
y=x/12
print("your Age is:", y,"Years Old")
"""
This Program Ask To Enter a Number, and if The Number Divided by 7, "BOOM" will be printed
"""
x=int(input("Please Enter a Number to Check if dividing Exacly by 7 :  "))
y=int(x/7)

if y*7==x:
    print("BOOM !!!", "THE NUMBER", (x),"DIVIDING EXACLY BY 7")
"""
This Program Ask To Enter a Number, and if The Number Divided by 7, or Contains The Number "7", "BOOM" will be printed
"""
x: int=int(input("Please Enter a Number to Check if dividing Exacly by 7 :  "))
y=int(x/7)

if y*7==x:
    print("BOOM !!!", "THE NUMBER", (x),"DIVIDING EXACLY BY 7")

if str(x).__contains__("7"):
    print("BOOM !!! THE NUMBER CONSIST THE DIGIT 7")
"""
This Program Check The Biggest Between 3 Numbers
"""

x = int(input( "Please Insert First Number"))
y = int(input("Please Insert Second Number"))
z = int(input("Please Insert Third Number"))
if x>y and x>z:
    print(f"The Biggest Number Between {x}, {y}, {z} IS:", x)
if y>x and y>z:
    print(f"The Biggest Number Between {x}, {y}, {z} IS:", y)
if z>x and z>y:
    print(f"The Biggest Number Between {x}, {y}, {z} IS:", z)
"""
The Program Calculate The SUM of Arithmetic sequence.
You Need To Provide a Few Parameters of the Arithmetic sequence:
1. First value of the Sequence [A1]
2. Constant Differential {D]
3. The Number Of Syntax at The Sequence [N]
"""
a1 = int(input("ENTER THE VALUE OF THE FIRST SEGMENT AT THE ARITHMETIC SEQUENCE"))
d = int(input("ENTER THE VALUE OF THE DIFFERENTIAL OF THE ARITHMETIC SEQUENCE"))
n = int(input("ENTER THE NUMBER OF THE SEGMENTS AT THE ARITHMETIC SEQUENCE"))
s = ((((n-1)*d)+2*a1)*n)/2
print(f"THE SUM OF THE ARITHMETIC SEQUENS IS: ", {s})

תודה

הי ליאור לפני הכל בשביל להדביק קוד בפורום צריך להשצתמש בסימן גרש הפוך שלוש פעמים. אני מתקן את ההודעה שלך . לחץ בבקשה על העיפרון כדי לראות את העריכה שלי ואיך זה נראה כשמדביקים קוד כדי ללמוד לפעם הבאה

לגבי הקוד נראה טוב אהבתי את כל התיעוד וההסברים, כמה דברים קטנים שהייתי עושה אחרת:

  1. רווחים - אני כותב קוד יותר מרווח וזה גם מקובל בעולם של פייתון, כלומר במקום לכתוב y*7==x עדיף לכתוב y * 7 == x. באופן כללי יש מדריך שנקרא PEP8 אפשר למצוא אותו בקישור כאן:
    https://www.python.org/dev/peps/pep-0008/
    שמסביר איך מומלץ לכתוב קוד פייתון מבחינת ארגון הקוד

  2. פונקציות עם שם שיש בו __ בשני הצדדים הן בדרך כלל משהו שלא נהוג לקרוא לו ישירות אלא דרך קיצור-דרך. למשל תמיד נכתוב len(x) במקום x.__len__(). באותו אופן במקום להפעיל ישירות את __contains__ נעדיף להשתמש ב:

if "7" in str(x)
x=int(input('enter number: '))
num=x%7
if num<=0:
    print('boom')
x=str(x)
print(x)
y=x.find('7')
print(f'the location of 7 is at : {y}')
if y>=0:
    print('boom')
else:
    print('no boom')

להלן הקוד לששת התרגילים:
**1
x=int(input('enter your age: '))
x=x*12
print('your age is: ',x)

**2
x=int(input('enter your age in months: '))
x=x/12
print('your age is: ',round(x,2))

**3
x=int(input('enter number: '))
if x%7==0:
print(‘Boom’)
else:
print(‘No Boom’)

**4
x=input('enter number: ')
if ‘7’ in x:
print(‘Boom’)
else:
print(‘No 7 in this number’)
x=int(x)
if x%7==0:
print(‘Boom’)
else:
print(‘The number is not %7’)

**5
x=input('enter 3 numbers seperated with space: ‘)
y=[]
x=x.split(’ ')
for i in x:
i=int(i)
y.append(i)
y.sort()
print(y)

*6
a=int(input('enter value for a1: '))
d=int(input('enter value for d: '))
n=int(input('enter value for n: '))
Sn=(n
(2*a+(n-1)*d))/2
print(int(Sn))

שלום
ניסיתי לכתוב את תרגיל 5

X=int (input("please select a number:"))
Y=int (input("please select a number:"))
Z=int (input("please select a number:"))
if ("x>y>z"):
    print ("x")
    if ("y>x>z"):
        print ("y")
        if ("z>x>y"):
            print ("z")

וזה לא כול כך עובד יש למישהו כיוון מה צריך לעשות ?

הי אוהד

בפייתון מסביב לתנאים לא צריך לכתוב מרכאות, רק מסביב לדברים שאתה רוצה להדפיס. בנוסף לא צריך לשים רווח אחרי הפקודה print

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

היי ינון
עשיתי את השינויים וזה מה שיצא

הי נדמה לי שהתבלבלת בין מרכאות לסוגריים. תנאי בפייתון נראה כך:

x = 10
y = 15
z = 30
if x < y < z:
    print("yay")