وبلاگ فربد | Farbod Blog

توی این وبلاگ راجع به پروژه هام صحبت می کنم

مرتب کردن معدل ها از csv

  • ۶۱۶۲

سلام دوستان :)

 

امروز میخواستم پروژه مرتب کردن معدل ها از فایل csv رو نشون بدم

شرح این پروژه اینه:

در این پروژه شما باید برنامه ایی بنویسید که نمرات افراد مختلف را از یک فایل csv بخواند ومحاسبات زیر را روی نمرات انجام داده و مقادیر حاصل را در یک فایل ذخیره کند

در این پروژه شما ۵ task مختلف را باید پیاده سازی کنید.

 

1-معدل هر فرد را محاسبه کند و همراه با نام هر فرد ذخیره کند، ترتیب خروجی اسامی باید دقیقا مساوی ترتیب فایل ورودی باشد. 

2-معدل ها را به ترتیب صعودی همراه با نام هر فرد ذخیره کند.

3-سه معدل برتر را با نام هر فرد ذخیره کند.

4-سه معدل پایین را بدون نام هر فرد ذخیره کند.

5-میانگین معدل ها را محاسبه و ذخیره کند.

 

 

خب اینم از شرح پروژه

فقط یک نکته ای هست که پایتون نمیتونه ترتیب ورود اطلاعات به دیکشنری رو به یاد بیاره

برای همین میتونیم از OrderedDict در کتابخانه collections استفاده کنیم D:

برای میانگین گرفتن هم میتونیم از متد mean در کتابخانه statistics استفاده کنیم

اول از همه ماژول هامون رو ایمپورت می کنیم

import csv
from statistics import mean
from collections import OrderedDict

 

بعد باید یک تابع درست کنیم برای اینکه فایلمون رو باز کنه و از نمره ها میانگین بگیره.

def calculate_averages(input_file_name, output_file_name):
    averages = OrderedDict()
    with open(input_file_name) as csv_file:
        csvfile = csv.reader(csv_file, delimiter=',')
        for row in csvfile:
            scores = []
            for i in range(1, len(row)):
                scores.append (float(row[i]))
            avg = mean(scores)
            averages [row[0]] = avg
            
    with open (output_file_name, 'w') as out:
        count = 0
        for person in averages:
            count += 1
            if count == 1:
                out.write(person+ ","+ str(averages[person]))
            else:
                out.write("\n"+ person+ ","+ str(averages[person]))

خب اول یک OrderedDict درست می کنیم و فایل csv مون رو باز میکنیم اینجا یک حلقه داریم که میاد مقادیر رو میخونه و میانگینشون رو میگیره و توی یک لیست ذخیره میکنه بعدش یک فایل csv می سازیم و نام ها و میانگین نمرات هر نفر رو توش ذخیره میکنیم

 

بعدش یک تابع تعریف میکنیم که معدل ها رو از بزرگ به کوچیک توی فایلمون ذخیره کنه اینم شبیه همون بالاییه.

lambda همون تابع موقته :)

def calculate_sorted_averages(input_file_name, output_file_name):
    averages = {}
    with open(input_file_name) as csv_file:
        csvfile = csv.reader(csv_file, delimiter=',')
        for row in csvfile:
            scores = []
            for i in range(1, len(row)):
                scores.append (float(row[i]))
            avg = mean(scores)
            averages [row[0]] = avg

    averages_ord = OrderedDict (sorted (averages.items(), key=lambda x:(x[1], x[0])))

    with open (output_file_name, 'w') as out:
        count = 0
        for person in averages_ord:
            count += 1
            if count == 1:
                out.write(person+ ","+ str(averages_ord[person]))
            else:
                out.write("\n"+ person+ ","+ str(averages_ord[person]))

 

خب حالا باید سه نفر برتر رو از توی لیست پیدا کنیم

def calculate_three_best(input_file_name, output_file_name):
    averages = {}
    with open(input_file_name) as csv_file:
        csvfile = csv.reader(csv_file, delimiter=',')
        for row in csvfile:
            scores = []
            for i in range(1, len(row)):
                scores.append (float(row[i]))
            avg = mean(scores)
            averages [row[0]] = avg

    averages_ord = OrderedDict (sorted (averages.items(), key=lambda x:(-x[1], x[0])))
    
    with open (output_file_name, 'w') as out:
        best = []
        for i in range (3):
            best_avg = averages_ord.popitem (last=False)
            best.append (best_avg)

        out.write (best[0][0]+","+str(best[0][1])+"\n")
        out.write (best[1][0]+","+str(best[1][1])+"\n")
        out.write (best[2][0]+","+str(best[2][1]))

 

بعدش باید سه نفر آخر رو پیدا کنیم

def calculate_three_worst(input_file_name, output_file_name):
    averages = {}
    with open(input_file_name) as csv_file:
        csvfile = csv.reader(csv_file, delimiter=',')
        for row in csvfile:
            scores = []
            for i in range(1, len(row)):
                scores.append (float(row[i]))
            avg = mean(scores)
            averages [row[0]] = avg

    averages_ord = OrderedDict (sorted (averages.items(), key=lambda x:(x[1], x[0])))
    
    with open (output_file_name, 'w') as out:
        worst = []
        for i in range (3):
            worst_avg = averages_ord.popitem (last=False)
            worst.append (worst_avg)
            
        out.write (str(worst[0][1])+"\n")
        out.write (str(worst[1][1])+"\n")
        out.write (str(worst[2][1]))

 

در نهایت هم باید میانگین تمام نمرات رو حساب کنیم

def calculate_average_of_averages(input_file_name, output_file_name):
    averages = {}
    with open(input_file_name) as csv_file:
        csvfile = csv.reader(csv_file, delimiter=',')
        for row in csvfile:
            scores = []
            for i in range(1, len(row)):
                scores.append (float(row[i]))
            avg = mean(scores)
            averages [row[0]] = avg

    averages_ord = OrderedDict (sorted (averages.items(), key=lambda x:(x[1], x[0])))

    SUM = 0
    count = 0
    for average in averages_ord:
        count += 1
        SUM += float(averages_ord[average])

    avg_avg = SUM/count
    with open (output_file_name, 'w') as out:
        out.write(str(avg_avg))

 

 

این هم کد کامل

import csv
from statistics import mean
from collections import OrderedDict

def calculate_averages(input_file_name, output_file_name):
    averages = OrderedDict()
    with open(input_file_name) as csv_file:
        csvfile = csv.reader(csv_file, delimiter=',')
        for row in csvfile:
            scores = []
            for i in range(1, len(row)):
                scores.append (float(row[i]))
            avg = mean(scores)
            averages [row[0]] = avg
            
    with open (output_file_name, 'w') as out:
        count = 0
        for person in averages:
            count += 1
            if count == 1:
                out.write(person+ ","+ str(averages[person]))
            else:
                out.write("\n"+ person+ ","+ str(averages[person]))
            
        


def calculate_sorted_averages(input_file_name, output_file_name):
    averages = {}
    with open(input_file_name) as csv_file:
        csvfile = csv.reader(csv_file, delimiter=',')
        for row in csvfile:
            scores = []
            for i in range(1, len(row)):
                scores.append (float(row[i]))
            avg = mean(scores)
            averages [row[0]] = avg

    averages_ord = OrderedDict (sorted (averages.items(), key=lambda x:(x[1], x[0])))

    with open (output_file_name, 'w') as out:
        count = 0
        for person in averages_ord:
            count += 1
            if count == 1:
                out.write(person+ ","+ str(averages_ord[person]))
            else:
                out.write("\n"+ person+ ","+ str(averages_ord[person]))
    
        


def calculate_three_best(input_file_name, output_file_name):
    averages = {}
    with open(input_file_name) as csv_file:
        csvfile = csv.reader(csv_file, delimiter=',')
        for row in csvfile:
            scores = []
            for i in range(1, len(row)):
                scores.append (float(row[i]))
            avg = mean(scores)
            averages [row[0]] = avg

    averages_ord = OrderedDict (sorted (averages.items(), key=lambda x:(-x[1], x[0])))
    
    with open (output_file_name, 'w') as out:
        best = []
        for i in range (3):
            best_avg = averages_ord.popitem (last=False)
            best.append (best_avg)

        out.write (best[0][0]+","+str(best[0][1])+"\n")
        out.write (best[1][0]+","+str(best[1][1])+"\n")
        out.write (best[2][0]+","+str(best[2][1]))


def calculate_three_worst(input_file_name, output_file_name):
    averages = {}
    with open(input_file_name) as csv_file:
        csvfile = csv.reader(csv_file, delimiter=',')
        for row in csvfile:
            scores = []
            for i in range(1, len(row)):
                scores.append (float(row[i]))
            avg = mean(scores)
            averages [row[0]] = avg

    averages_ord = OrderedDict (sorted (averages.items(), key=lambda x:(x[1], x[0])))
    
    with open (output_file_name, 'w') as out:
        worst = []
        for i in range (3):
            worst_avg = averages_ord.popitem (last=False)
            worst.append (worst_avg)
            
        out.write (str(worst[0][1])+"\n")
        out.write (str(worst[1][1])+"\n")
        out.write (str(worst[2][1]))


def calculate_average_of_averages(input_file_name, output_file_name):
    averages = {}
    with open(input_file_name) as csv_file:
        csvfile = csv.reader(csv_file, delimiter=',')
        for row in csvfile:
            scores = []
            for i in range(1, len(row)):
                scores.append (float(row[i]))
            avg = mean(scores)
            averages [row[0]] = avg

    averages_ord = OrderedDict (sorted (averages.items(), key=lambda x:(x[1], x[0])))

    SUM = 0
    count = 0
    for average in averages_ord:
        count += 1
        SUM += float(averages_ord[average])

    avg_avg = SUM/count
    with open (output_file_name, 'w') as out:
        out.write(str(avg_avg))

 

ویرایش:

بخاطر درخواست های زیاد دوستان برای ارسال فایل زیپ، میتونین فایل زیپ رو از همینجا دانلود کنین:

دانلود

امیدوارم براتون مفید بوده باشه D:


  • سلام وقتتون بخیر
    ممنون بابت زمانی که گذاشتید
    من فایل اصلاحیه رو دانلود کردم و مستقیما اپلود کردم متاسفانه نمره ای که برام در نظر گرفته شد صفر بود لطفا راهنمایی بفرمایید چطوری این مشکل رو برطرف کنم ممنونم
    پاسخ:
    سلام دوست عزیز.
    من براتون یک فایل رو ایمیل کردم لطفا اون هم امتحان کنید.
    اما اگر فایل رو تغییری نداده باشید بعید میدونم مشکلی پیش اومده باشه.
    موفق باشید.
  • سلام دوست عزیز
    من کد شما در vscode کپی کردم و اجرا می کنم این پیغام میده هیچ فایل خروجی نمی سازد لطفا راهنمایی بفرمایید.
    [Running]
    python -u "d:\learnpython\tamrin\filecsv.py"
    [Done]
    exited with code=0 in 0.214 seconds
    پاسخ:
    سلام دوست عزیز وقتتون بخیر.
    لطفا کد رو همینطوری که هست ارسال بفرمایید مشکلی پیش نمیاد.
    اگر قصد دارید کد رو تست کنید، باید خودتون توی کد تغییراتی ایجاد کنید.
    اولا اینکه یک فایل csv به عنوان ورودی درست کنید؛ دوم اینکه محتوای مورد نظر رو داخل فایل قرار بدید؛ سوم اینکه تابعی که قصد دارید تست کنید در آخر کد فراخوانی کنید و ورودی های مناسب رو قرار بدید. پس از اجرا کردن کد، میتونید نتیجه رو در فایل خروجی ببینید.
    در آخر تاکید می‌کنم که لطفا در فایل هیچ تغییری ایجاد نکنید وگرنه سایت ازتون قبول نمیکنه.
    موفق باشید.
  • سلام وقتتون بخیر میشه کد اصلاحیه رو برام بفرستید. ممنونم🙏
    پاسخ:
    سلام دوست عزیز.
    فایل درخواستی برای شما ارسال شد.
    موفق باشید.
  • سلام وقتتون بخیر
    ممنون بابت زمانی که گذاشتید
    من فایل اصلاحیه رو دانلود کردم و مستقیما اپلود کردم متاسفانه نمره ای که برام در نظر گرفته شد صفر بود لطفا راهنمایی بفرمایید چطوری این مشکل رو برطرف کنم ممنونم
    پاسخ:
    سلام دوست عزیز.
    ممنون از شما که با ما همراه هستید.
    یک فایل برای شما ایمیل شد که میتونید اون رو ارسال کنید و نمره ۱۰۰ بشه.
    موفق باشید.
  • سلام وقتتون بخیر میشه کد اصلاحیه رو برام بفرستید. ممنونم🙏
    پاسخ:
    سلام دوست عزیز.
    فایل درخواستی شما براتون ارسال شد.
    موفق باشید.
  • سلام وقتتون بخیر امکانش هست کد اصلاح شده را برام ارسال کنید؟
    پاسخ:
    سلام دوست عزیز.
    کد برای شما ارسال شد.
    موفق باشید.
  • سلام و وقت بخیر
    لطف میکنید کد اصلاح شده رو برام بفرستید
    پاسخ:
    سلام دوست عزیز
    فایل براتون ارسال شد.
    موفق باشید.
  • مریم لطفی
    سلام وقتتون بخیر لطف میکنید کد اصلاح شده رو برام بفرستید
    پاسخ:
    سلام دوست عزیز
    فایل برای شما ارسال شد
    موفق باشید
  • salam vaghtetoon bekheir agar emkanesh hast file zip Eslam shade ro ersal konid mamnoon misham
    merc az in rah kar khoogbetoon
    پاسخ:
    سلام دوست عزیز.
    فایل برای شما ارسال شد.
    موفق باشید.

  • rahmatallah fakhri fakhrabadi
    سلام وقت بخیر
    ممنون از زحماتتون
    امکان هست کد رو برام بفرستید.
    پاسخ:
    سلام دوست عزیز.
    فایلو براتون ایمیل کردم.
    موفق باشید.
  • سلام ممنون میشم فایل اصلاح شده رو برام ایمیل کنید :)
    پاسخ:
    سلام دوست عزیز.
    فایل برای شما ایمیل شد.
    موفق باشید.
  • سلام وقت بخیر
    امکانش هست فایل اصلاح شده را ارسال کنید، ممنونم
    پاسخ:
    سلام دوست عزیز.
    فایل برای شما ارسال شد.
    موفق باشید.
  • سلام وخسته نباشید لطفا اگر میشه کد اصلاح شده رو برام بفرستید با تشکر
    پاسخ:
    سلام دوست عزیز.
    فایل برای شما ارسال شد.
    موفق باشید.
  • سلام
    لطفا فایل اصلاح شده رو برای من ارسال کنید
    ممنون
    پاسخ:
    سلام دوست عزیز.
    فایل برای شما ارسال شد.
    موفق باشید.
  • سلام وقت بخیر لطف میکنید فایل اصلاح شده رو برام ارسال کنید🙏
    پاسخ:
    سلام دوست عزیز
    فایل برای شما ارسال شد
    موفق باشید
  • کوروش کمیجانی
    سلام لطفاً فایل اصلاح شده رو برام ارسال کنید ممنون
    پاسخ:
    سلام دوست عزیز
    فایل برای شما ارسال شد
    موفق باشید
  • سلام وقت بخیر . امکانش هست فایل اصلاح شده رو برام ارسال کنید؟
    پاسخ:
    سلام دوست عزیز
    فایل برای شما ارسال شد
    موفق باشید
  • سلام
    لطف میکنید فایل اصلاح شدشو به ایمیلم بفرستید
    پاسخ:
    سلام دوست عزیز
    فایل برای شما ارسال شد
    موفق باشید
  • سلام وقت بخیر . امکانش هست فایل اصلاح شده رو برام ارسال کنید؟
    پاسخ:
    سلام دوست عزیز
    فایل برای شما ایمیل شد
    موفق باشید
  • سلام لطفا فایل اصلاح شده را برام ارسال میکنید
    پاسخ:
    سلام دوست عزیز
    فایل برای شما ایمیل شد
    موفق باشید
  • سلام ، وقت بخیر ، ضمن تشکر از زحمات شما و زمانی که برای کمک به بقیه صرف میکنید ، امکانش هست خواهش کنم فایل اصلاح شده رو برای بنده هم ایمیل کنید ؟
    پاسخ:
    سلام دوست عزیز
    ضمن تشکر از همراهی شما فایل براتون ارسال شد.
    موفق باشید
  • سلام
    لطف میکنید فایل اصلاح شدشو به ایمیلم بفرستید
    پاسخ:
    سلام دوست عزیز.
    فایل براتون ارسال شد.
    موفق باشید.
  • سلام
    امکانش هست فایل اصلاح شدشو به ایمیلم بفرستید
    پاسخ:
    سلام دوست عزیز.
    فایل برای شما ارسال شد.
    موفق باشید.
  • درود
    امکانش هست فایل اصلاح شدشو به ایمیلم بفرستید
    پاسخ:
    سلام دوست عزیز.
    فایل برای شما ایمیل شد.
    موفق باشید.
  • سلام و وقت بخیر
    ممنون از شما بابت کمکی که کردین
    فایل زیپی که برای دانلود گذاشتین رو دانلود کردم
    هیچ تغییری توش ایجاد نکردم و عینآ آپلودش کردم ولی نمره صفر شده.
    مشکل از کجاست؟

    پاسخ:
    سلام دوست عزیز.
    فایل اصلاح شده برای شما ایمیل شد.
    موفق باشید.
  • واقعا کامل و واضح بود ولی وقتی سابمیتش میکنم نمرشو نمی‌گیرم و نمی‌دونم دقیقا مشکل از کجاست تمام شرایطی هم که در توضیحات گفته شده بود رو رعایت کرده بودم :/
    پاسخ:
    سلام دوست عزیز.
    ممنون از همراهی و نظر شما.
    خیلی از دوستان به این مشکل خوردن ولی با رعایت تمام شرایط مشکلشون حل شد. من فایل zip آماده ارسال رو براتون ایمیل کردم اگر دقیقا همونو ارسال کنید کار میکنه.
    موفق باشید.
  • سلام.
    من فایل زیپی که گداشتید دانلود و بارگذاری کردم و نمره صفر در نظر گرفته شده. اشکال از کجاست؟
    ممنون میشم راهنمایی کنید.
    پاسخ:
    سلام دوست عزیز
    خیلی از دوستان این مشکل رو داشتن اما با بازبینی و اینکه مطمئن شدن که همه ی شرایط آپلود درست هست مشکلشون حل شد.
    لطفا اطمینان حاصل کنید که همه چی در حین آپلود درست هست.
    بازم اگر کار نکرد میتونید همینجا یا از طریق ایمیل صفحه تماس با من در ارتباط باشید.
    موفق باشید
  • سلام من هیچی متوجه نشدم لطفا برام کامل توضیح دهید یا یه ویدیو بزارید
    پاسخ:
    سلام دوست عزیز.
    ببینید برنامه شما پنج تا تابع داره. هر کدوم از اون تابع ها هم دو تا ورودی دارن. ورودی اول اسم فایلی که اطلاعات رو از اون میگیره هست. ورودی دوم هم فایلی که قراره توش نتایج رو ذخیره کنه هست. حالا شما برای ارسال نباید به برنامه دست بزنید. اما اگر میخواید برنامه رو اجرا کنید و تست کنید باید مراحل زیر رو به ترتیب انجام بدید و بعد از اون هم باید هر تغییری که داخل کد دادید رو پاک کنید یا اینکه فایل zip رو که انتهای پست پیوست شده رو استفاده کنید.
    1. یک فایل با فرمت csv درست کنید و اطلاعات ورودی برنامه رو داخلش قرار بدید. برای درست کردن فایل csv میتونید از برنامه excel یا notepad استفاده کنید. فقط باید مطمئن بشید که پسوند فایل حتما csv باشه.
    2. وارد برنامه بشید و تابعی که میخواید تست کنید رو انتخاب کنید.
    3. در آخر برنامه تابع رو فراخوانی کنید. در ورودی اول تابع اسم فایل csv که درست کردید رو قرار بدید و توی ورودی دوم هم اسم فایلی که قراره نتیجه رو توش ذخیره کنه. فایل ورودی دوم لازم نیست حتما درست شده باشه و توجه کنید که انتهای نام و مسیر فایل .csv رو قرار بدید.
    4. برنامه رو اجرا کنید.
    5. حالا میتونید توی همون مسیر فایل برنامه فایل خروجی رو باز کنید و نتایج رو داخل اون مشاهده کنید.
    اگر هر سوال دیگه ای داشتید میتونید توی بخش کامنت ها یا از طریق ایمیل صفحه تماس با من سوالاتتون رو مطرح کنید.
    موفق باشید.
  • سلام من کد ها رو وارد کردم اما هیچی برام چاپ نمیکنه
    پاسخ:
    سلام دوست عزیز.
    شما باید یک فایل csv به عنوان ورودی درست کنید و اطلاعات لازم رو داخلش قرار بدید. بعد از اون شما باید هر تابعی که مد نظرتون هست رو آخر برنامه فراخوانی کنید و در ورودی اول تابع اسم فایل ورودی که درست کردید و در ورودی دوم اسم فایلی که میخواید نتایج رو در اون ذخیره کنه وارد کنید. حالا میتونید با اجرا کردن برنامه، خروجی تابعی که فراخوانی کردید رو داخل فایل خروجی مشاهده کنید.
    توجه کنید که نیازی به تغییر در فایل برای ارسال وجود نداره و برای اطمینان کامل میتونید فایل پیوست در انتهای پست رو دانلود کنید و از اون بدون تغییر استفاده کنید.
    موفق باشید.
  • سلام من موقع فراخوندن فانکشن با ارور زیر مواجه میشم ممنون میشم راهنمایی کنید
    StatisticsError: mean requires at least one data point
    پاسخ:
    سلام دوست عزیز.
    احتمالا شما تابع رو اشتباه فراخونی کردید. لطفا دقیقا نحوه فراخوانی توابع رو یا همین جا و یا در ایمیل صفحه تماس با ما ارسال کنید تا من بتونم مشکل رو پیدا کنم.
    موفق باشید.
  • اگر نمره شما صفر میشود باید علاوه بر اینکه اسم فایل را به source.py تغییر دهید باید اخر این هم .zip اضافه کنید
  • خیلی خیلی ممنونم از شما
    پاسخ:
    سلام دوست عزیز
    ممنون از لطف و همراهی شما
    موفق باشید
  • من این تیکه از کد و نمیفهمم .
    avg = mean(scores)
    averages [row[0]] = avg

    with open (output_file_name, 'w') as out:
    count = 0
    for person in averages:
    count += 1
    if count == 1:
    out.write(person+ ","+ str(averages[person]))
    else:
    out.write("\n"+ person+ ","+ str(averages[person]))
    الا خب اوکی avg داره میانگین نشون میده
    خط بعدی یعنی چی ؟چرا ا،مده ؟؟
    و تو تیگه output اون avrages از کجا اومده ...
    پاسخ:
    سلام دوست عزیز
    این بخش از کد ها در یک حلقه قرار دارن که شمارنده اونها row هست که در واقع هر مقدار داخل فایل csv رو مشخص میکنه. بعد از اینکه مقدار ها رو به متغییر row اضافه کردیم مقدارش رو داخل متغییر avg میریزیم که از همه مقادیر میانگین بگیریم.
    در بخش output متغییر averages حاوی تمام میانگین هایی هست که در حلقه گرفتیم. بنابراین همه اندیس های آرایه averages رو در output قرار میدیم.
    اگر باز هم سوال داشتید، میتونید به وسیله ایمیل یا در بخش نظرات مطرح کنید.
    موفق باشید
  • با سلام و وقت بخیر
    متاسفانه کدها برای من هیچ جوابی نمیده
    لطفا امکانش هست فایل زیپ را به ایمیل من بفرستید
    سپاسگزارم
    پاسخ:
    سلام دوست عزیز
    مطمئن بشین که تمام شرایط رو رعایت کردین، کد کار میکنه.
    اما من باز هم براتون ایمیل کردم کد رو.
    موفق باشید
  • سلام فایل زیپ را بدون هیچ تغییری ارسال کردم ولی نمره صفر در نظر گرفت و واقعا تمرین سختی هست آیا لازم نیست که فایل .py را تغییر نام داد و اینکه آیا فایل ضمیمه ای هم لازم دارد؟؟
    پاسخ:
    سلام دوست عزیز
    برنامه تست شده و درست کار میکنه.
    مطمئن بشید که تمام شرایط رو رعایت کردید(از جمله اسم فایل و توابع).
    اگر بازم کار نکرد میتونید فایلی که براتون ایمیل کردم رو ارسال کنید.
    موفق باشید
  • درود
    منم یه اسکریپت نوشتم اما یه جای کار می‌لنگه و 3 تا ارور دارم که کلافم کرده.
    ممنون می‌شم فایل زیپ که آماده‌ی ارساله و دوستان گفتن نمره کامل داره رو بفرستین که با کد خودم کامل چک کنم.
    منتظرتون هستم.
    با تشکر فراوان.
    پاسخ:
    سلام دوست عزیز
    فایل زیپ رو براتون ایمیل کردم.
    اگر هر سوال دیگه ای داشتین میتونین توی ایمیل قرار داده شده توی صفحه تماس با من(farbodmblog@gmail.com) برام ارسال کنین تا پاسختون رو بدم.
    موفق باشید
  • سلام وقتتون بخیر میشه لطفا فایل زیپ رو برام ارسال کنید
    پاسخ:
    سلام دوست عزیز 
    فایل براتون ارسال شد
    موفق باشید
  • سلام وقتتون بخیر کدهارو کامل کپی کردم و ارسال کردم ولی نمره نگرفتم
    پاسخ:
    سلام دوست عزیز
    مطمئن بشید که تمام شرایط رو رعایت کردید و در کد تغییری ایجاد نکردید.
    فایل زیپ شده رو براتون ارسال کردم.
    اگر همون رو ارسال کنید نمره کامل میده.
    موفق باشید.
  • مبینا محمدی
    سلام
    من همین کارو کردم صفر داد میشه برام فایل زیپ شده رو بفرستید؟
    پاسخ:
    سلام دوست عزیز
    فایل زیپ شده براتون ارسال شد.
    موفق باشید
  • سلام خسته نباشید من فرستادم اما صفر دادن
    چکار کنم
    پاسخ:
    سلام دوست عزیز
    مطمئن بشید که تمام شرایط ارسال رو به درستی رعایت کردید و کوچکترین تغییری توی کد نداده باشید. با چک کردن دوباره فایل رو ارسال کنید. اگر باز هم صفر شد به من اطلاع بدید تا فایل zip آماده رو براتون ایمیل کنم.
    موفق باشید
  • سلام داداش میشه فایل زیپ شدشو واسم بفرستی؟
    پاسخ:
    سلام دوست عزیز
    فایل درخواستی شما در ایمیل وارد شده در فرم، ارسال شد.
    موفق باشید
  • سلام بی زحمت میشه راهنمایی کنید چطور می تونم این گد رو خروجی بگیرم
    پاسخ:
    سلام دوست عزیز
    برای ارسال کد نیازی به انجام کاری نیست و ارسال فایل زیپ شده کافیه
    اما برای خروجی گرفتن و امتحان کردن کد شما باید کدتون رو داخل یک IDE باز کنید و بعدش هر کدوم از تابع های رو که میخواید تست کنید رو آخر کد فراخوانی کنید و اسم فایل ورودی رو به صورت رشته در ورودی اول تابع و اسم فایل خروجی رو در ورودی دوم تابع رو به صورت رشته وارد کنید و بعد کد رو اجرا کنید
    خروجی رو داخل فایلی که توی ورودی دوم تابع وارد کردید میتونید ببینید
    موفق باشید
  • سلام من کد رو همونطور که بود ذخیره کردم فرستادم اما نمره 0 داد نمی دونم دقیقا مشکلم کجاس میشه بی زحمت فایل رو زیپ شده برام بفرستین
    پاسخ:
    سلام دوست عزیز
    فایل زیپ شده براتون ایمیل شد
    موفق باشید
  • سلام شرمنده دوباره مزاحم میشم میشه یه فایل زیپ یا رار ازش تهیه و آپلود کنید(با فایل csv و...) خیلی شرمندتونم به خدا خیلی نیاز دارم
    پاسخ:
    سلام دوست عزیز
    فایل زیپ براتون ایمیل شد
    موفق باشید
  • من اسم و فرمت فایل خودمو وارد می کنم و به صورت str هم وارد می کنم به این صورت :
    calculate_averages("grades.csv", "output.csv"):
    ولی این ارورهارو رو میده:
    was not closed ")"
    Expected parameter name
    Position-only argument separator not allowed as first parameter
    چه باید بکنم؟
    پاسخ:
    سلام دوست عزیز
    مشکل شما اینه که شما نباید وقتی تابع رو تعریف میکنید داخل پارامتر های تابع این رو وارد کنین. بلکه باید بعدا به صورت جداگانه آخر کدتون تابع رو فراخوانی کنین.
    برای ارسال کردن کد هم نیازی به انجام این کار نیست و خود کد قابل استفاده هست.
    موفق باشید
  • سلام داداش من این کد کاملی که دادید رو دقیقا باید چکار کنم؟
    ممنون میشم توضیح بدید
    پاسخ:
    سلام دوست عزیز.
    کد کامل، کد کل اسکریپت هست.
    شما برای استفاده کردن کد باید یک فایل پایتون داخل یک IDE مثلا vscode, pycharm, atom و... درست کنید و بعدش کد ها رو کپی و داخل فایل پیست کنید و بعد هم میتونید از برنامه استفاده کنید.
    موفق باشید.
  • خیلی ممنون از راهنماییتون.من تونستم برنامه رو امتحان کنم.
    پاسخ:
    سلام دوست عزیز
    خواهش می کنم
    خوشحالم از اینکه مشکلتون برطرف شد
  • آقا دستت طلا عالی بود از 100 ، 100 شد خیلی ممنون
    پاسخ:
    سلام دوست عزیز.
    خوشحالم که براتون مفید بوده.
    موفق باشید.
  • سلام
    من برای تست برنامه تو shell ئچار مشکل شدم
    من یک فایلcsv درست کردم که معدل ها رو توش دخیره کردم.
    تابع رو هم داخل یک فایل جدا گونه با فرمت py تو همون مسیر csv ذخیره کردم.برای اجرا تابع با اسم فایل csv که دخیره کرده بودم فراخوانی میکنم اما در نهایت با این error مواجه میشم. که میگه اسم فایل cvs تعریف نشده است.grade اسم فایل csv هست که لیست معدل ها رو توش دخیره کردم.
    Traceback (most recent call last):
    File "C:/Users/Reza/Desktop/shell.py", line 27, in
    calculate_averages(grade, output)
    NameError: name 'grade' is not defined

    پاسخ:
    سلام دوست عزیز
    در خصوص مشکلی که مطرح کردید ایراد کار اینه که شما باید داخل تابعی که فراخوانی کردین اسم فایل رو داخل یک string به همراه فرمت فایل وارد کنین مثلا به این صورت:

    calculate_averages("input.csv", "output.csv")

    موفق باشید.
  • سلام وقتتون بخیر
    ممکنه فراخوانی تسک اول را در shell بگید که چطوری میشه؟
    پاسخ:
    سلام دوست عزیز
    شما اول باید تابع مورد نظر برای هر تسکی که میخواین کپی کنین و در یک shell مثل shell خود پایتون یا ipython پیست کنین.
    بعد برای تست کردن، یک فایل درست کنین و مثلا اسمشو بذارین test_file.csv و داخلش معدل ها رو وارد کنین 
    حالا باید توی همون shell که قبلا تابع رو توش کپی کرده بودیم اسم تابع رو فراخوانی کنین و توی ورودی اول اسم فایلی که میخواین باز کنین(اینجا اسمش test_file.csv گذاشتیم) و در ورودی بعدی اسم فایلی که میخواین نتایج داخلش ذخیره بشه رو وارد کنین. (دقت کنین که نیازی به درست کردن این فایل نیست).
    موفق باشید
  • با سلام و تشکر از شما

    سوالم اینه که وقتی این کد رو زدیم چجوری تابع رو فراخوانی کنیم:

    {کد شما}

    result = []
    CSV11=[]

    calculate_average_of_averages(CSV11,result)

    CSV11 همون فایلی هست که توش اسامی و نمراتو سیو کردم.

    مشکل کجاست؟
    پاسخ:
    سلام دوست عزیز 
    اگر میخواین برای پروژه این کد رو ارسال کنین به هیچ عنوان نباید هیچگونه تغییری در برنامه ایجاد کنین.
    ولی اگر میخواین کد رو تست کنین میتونین تمام توابع رو توی python shell دونه دونه کپی کنین و بعد هر کدوم از توابع رو خواستین فراخوانی کنین و اسم فایل ورودی خروجی رو داخلش قرار بدین.(نباید در خود تابع تغییری ایجاد کنین)
    به عنوان مثال:
    (اسم فایلی که دوست دارین نتایج داخلش ذخیره بشه ,اسم فایل شما)calculate_average_of_averages
    موفق باشید
  • سلام به نظرتون مشکل کد زیر چیه؟ ظاهرا درسته وای نمره صفر میگیره.
    import csv
    import heapq
    from statistics import mean
    from operator import itemgetter

    def calculate_averages(input_file_name, output_file_name):
    with open("input_file_name", "r", encoding = "utf-8") as csvfile:
    reader = csv.reader(csvfile)
    with open("output_file_name", "w", encoding = "utf-8", newline = "") as outfile:
    writer = csv.writer(outfile)
    for row in reader:
    grade_mean = (float(grade) for grade in row[1:])
    writer.writerow([row[0], mean(grade_mean)])



    def calculate_sorted_averages(input_file_name, output_file_name):
    with open("input_file_name", "r", encoding = "utf-8") as csvfileincreasing:
    reader = csv.reader(csvfileincreasing)
    with open("output_file_name", "w", encoding = "utf-8", newline = "") as outfileincreasing:
    writer = csv.writer(outfileincreasing)
    list = []
    for row in reader:
    grade_mean = (float(grade) for grade in row[1:])
    list.append([row[0], mean(grade_mean)])

    list.sort(key=itemgetter(0))
    list.sort(key=itemgetter(1))
    for row in list:
    writer.writerow(row)


    def calculate_three_best(input_file_name, output_file_name):
    with open("input_file_name", "r", encoding = "utf-8") as csvfileincreasing:
    reader = csv.reader(csvfileincreasing)
    with open("output_file_name", "w", encoding = "utf-8", newline = "") as outfileToB:
    writer = csv.writer(outfileToB)
    list = []
    for row in reader:
    grade_mean = (float(grade) for grade in row[1:])
    list.append([mean(grade_mean), row[0]])
    list1 = heapq.nlargest(3, list)
    list1.sort(key = itemgetter(1))
    list1.sort(key = itemgetter(0), reverse = True)
    list2 = [tuple(reversed(t)) for t in list1]
    for row in list2:
    writer.writerow(row)



    def calculate_three_worst(input_file_name, output_file_name):
    with open("input_file_name", "r", encoding = "utf-8") as csvfileincreasing:
    reader = csv.reader(csvfileincreasing)
    with open("output_file_name", "w", encoding = "utf-8", newline = "") as outfileToW:
    writer = csv.writer(outfileToW)
    list = []
    for row in reader:
    grade_mean = (float(grade) for grade in row[1:])
    list.append([mean(grade_mean), row[0]])
    list1 = heapq.nsmallest(3, list)
    list3 =[]
    for i in range(len(list1)):
    list3.append(list1[i][0])
    for i in list3:
    writer.writerow([i])



    def calculate_average_of_averages(input_file_name, output_file_name):
    with open("input_file_name", "r", encoding = "utf-8") as csvfileincreasing:
    reader = csv.reader(csvfileincreasing)
    with open("output_file_name", "w", encoding = "utf-8", newline = "") as outfilemean:
    writer = csv.writer(outfilemean)
    list = []
    for row in reader:
    grade_mean = (float(grade) for grade in row[1:])
    list.append([mean(grade_mean), row[0]])
    list4 =[]
    for i in range(len(list)):
    list4.append(list[i][0])
    writer.writerow([mean(list4)])
    پاسخ:
    سلام دوست عزیز
    به نظر میرسه که فاصله گذاری ها رو رعایت نکردین و چیزی قابل تشخیص نیست.
    ولی ظاهرا کد ایرادی نداره، اگر میشه اروری که میده رو کامل بفرستین.
    اگر باز هم مشکل داشتین لطفا با رعایت فاصله گذاری کد رو برای من در ایمیلی که در صفحه تماس با من گذاشتم به صورت چپ نویس ایمیل کنید.
    ممنون از همراهی شما
    موفق باشید
  • سید محسن حسینی
    آقا دمت گرم ممنون
    دوستانی که نمره پایین گرفتن کل کد رو کپی نکنن فقط کد های زیر هر طابع رو کپی کنید چون اگه اسم طابع عوض شه 0 میده
    (بهتره که کپی نکنید و خودتون از روش نگاه کنید بعد بنویسید اینجوری بهتر یاد میگیرید)
    پاسخ:
    سلام دوست عزیز
    ممنون از همراهی شما
    موفق باشید
  • ممنونم از پاسخگوییتون
  • سلام. وقتتون بخیر
    من کد رو بدون تغییر، زیپ شده و با نام source.py آپلود میکنم ولی صفر میده! میشه لطفا راهنمایی کنین؟
    پاسخ:
    سلام دوست عزیز
    با توجه به درست و کامل بودن کد به احتمال زیاد شرایط ارسال رعایت نمیشوند لطفا به این مسئله توجه کنید.
    موفق باشید
  • عاااااااااااالی
    دقیق و کامل،یک دنیا ممنونم🙏🙏🙏
    پاسخ:
    سلام دوست عزیز
    ممنون از ابراز لطف و محبت شما
    موفق باشید
  • سلام , الا باید جای with open(input_file_name) عبارتی که توی پرانتز است ادرس csv خودمون ذو وارد کنیم درسته؟
    و باید یک فایل خالی درست کنیم و ادرسش رو در (with open (output_file_name وارد کنیم درسته؟
    کد که پس از انجام توی خوده برنامه ای که داری باهاش ران میکنی ران نمیشه داخل همون فایل باید دیده شه, اما موقعی که فایل رو اجرا میکنم فقط یک فایل تو خالیه لطفا توضیح بدین
    پاسخ:
    سلام دوست عزیز
    شما نباید به نام ورودی توابع دست بزنین و اگر میخواین تستش کنین تمام توابع رو توی python shell کپی کنین و اونا رو فراخوانی کنین و نام فایل های خودتون رو بهش بدین.
    در ضمن نیازی به درست کردن فایل خالی وجود نداره و برنامه خودش فایل رو درست میکنه
    در مورد سوال آخرتون هم این فایل نباید ران بشه و از روشی که الان(خط اول) توضیح دادم میتونین برنامه رو تست کنین
    موفق باشید
  • سلام من بدون هیچگونه تغیری و با فرمت خواسته شده فایل رو اپلود میکنم اما صفر میده میشه لطفااااااا کمک کنید
    پاسخ:
    سلام دوست عزیز
    احتمالا شما یکی از شرایط ارسال رو رعایت نکردین.
    همینطور که در پاسخ های قبلی هم گفتم با رعایت نکات زیر مشکلتون بر طرف میشه:

    به هیچ وجه اسم تابع ها را عوض نکنید و همه‌ی کدهایی که می خواهید بزنید را در همان def  ها پیاده‌سازی کنید (خارج از def ها کدی نگذارید فقط به جز import کردن کتابخانه ها که همان ابتدای فایل قرار دهید)(برای میانگین گرفتن فقط از متد mean استفاده کنید (این متد از کتابخانه‌ی statistics در فایل زیر import شده است. )) (هیچ کدام از مقدار ها رند نشوند ) (تمام کتابخانه هایی که قصد import کردنشان را دارید فقط یکبار در ابتدای فایل و خارج از def ها قرار دهید و در def ها import نکنید) و به ازای هر task تابع مربوطه را کامل کنید و سپس این فایل را حتما با نام  (source.py) و حتما به صورت zip دربیاورید (rar نباشد فقط zip ) و ارسال کنید. 

    در صورت رعایت نکردن هر کدام از نکات بالا متاسفانه  نمره شما توسط سیستم صفر خواهد شد .

    موفق باشید

  • سلام دست شما درد نکنه
    فقط کاشکی نحوه فراخوانی هر تسک رو جداگونه میذاشتی. من الان مشکلم سر آرگومان های هر تابع هست
    پاسخ:
    سلام دوست عزیز
    بهتره که نام آرگومان ها رو تغییر ندین چون داخل توابع از اونا استفاده شده و در صورت تغییر دادن برنامه به هم میریزه
    برای تست کردن برنامه هم میتونین توابع رو توی python shell کپی کنین و اونا رو فراخوانی کنین
    در صورتی که مشکلتون بر طرف نشده توضیحات کامل تری بدین تا مجددا راهنماییتون کنم
    موفق باشید
  • چرا ارور میده ون نمره صفر گرفتم
    پاسخ:
    سلام دوست عزیز
    احتملا شما یکی از شرایط ارسال رو رعایت نکردین(مثل عوض کردن اسامی توابع که نباید عوض بشن یا ایراد در فرمت فایل و...) که نمره صفر گرفتین چون تمامی پست ها قبل از انتشار بطور کامل چک میشوند و بطور دقیق و کامل ارسال میشوند.
    موفق باشید
  • سلام
    من چطور میتونم یک فایل csv رو که دارم با این کد ران کنم؟
    باید ادرس فایل رو قرار بدم یا اسم فایل رو فقط؟
    پاسخ:
    سلام دوست عزیز
    شما اول باید توابع رو داخل python shell کپی کنید و بعد از توابع استفاده کنید.(باید آدرس فایل رو وارد کنید نه اسم فایل رو)
    موفق باشید
  • سلام
    خیلی خوب و مفید بود برای من
    بقیه پست ها رو هم دیدم
    مطالب وبلاگتون عالین
    خیلی ممنون از زحماتتون
    پاسخ:
    سلام دوست عزیز
    ممنون از توجه و همراهی شما
  • داداش خیلی پیچوندیش
    پاسخ:
    سلام دوست عزیز
    توی این پروژه 5task مختلف تعریف شده:


    1-معدل هر فرد را محاسبه کند و همراه با نام هر فرد ذخیره کند، ترتیب خروجی اسامی باید دقیقا مساوی ترتیب فایل ورودی باشد. 

    2-معدل ها را به ترتیب صعودی همراه با نام هر فرد ذخیره کند.

    3-سه معدل برتر را با نام هر فرد ذخیره کند.

    4-سه معدل پایین را بدون نام هر فرد ذخیره کند.

    5-میانگین معدل ها را محاسبه و ذخیره کند.


    با توجه به این پنج task مراحل برنامه نویسی طبیعی می باشد

  • خیلی خوب بود
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی