۲۰ مطلب با کلمه‌ی کلیدی «آموزش پایتون» ثبت شده است

الگوریتم وارشال برای بدست آوردن بستار متعدی در زبان راست و پایتون

برای شخص بنده با خوندن کد پایتون خیلی راحت‌تر میتونم الگوریتم را بفهمم.اینجا به ترتیب کد راست و پایتون الگوریتم وارشال برای بدست آوردن بستار متعدی یک ماتریس باینری رابطه به همراه لینک کد در گیت‌هاب گیست قرار داده شده.ضمن اینکه زمان اجرا شدن این کد‌ها برای راست و پایتون در گیست مورد نظر به صورت کامنت قرار داده شده است.توجه کنید که در هر دو زبان با حلقه for این پیاده‌سازی انجام شده و در صورتی که با استفاده از map همین الگوریتم را پیاده کنید پرفرمنس احتمالا بهبود خواهد یافت.

هشدار! کد راست با اینکه به درستی کار می‌کند اما ممکن است به روش خود راست نوشته نشده باشد و در آن عادت‌های خوب برنامه‌نویسی رعایت نشده باشد!

// Code by Rust beginner, Farooq Karimi Zadeh
// Under CC0 1.0
// Warning! Code might not be idiomatic

fn main() {
    let mut bin_matrix = [
        [0, 1, 0, 0],
        [1, 0, 1, 0],
        [0, 0, 0, 1],
        [0, 0, 0, 0]
    ];
    const N:u32 = 300_000;
    for _dummy in 0..N { 
        for k in 0..bin_matrix.len() {
            let the_clone = bin_matrix;
            for (i, row) in bin_matrix.iter_mut().enumerate() {
                for (j, value) in row.iter_mut().enumerate() {
                    if *value == 0 {
                        *value = the_clone[i][k] & the_clone[k][j];
                    }
                }
            }
        }
    }
    println!("{:?}", bin_matrix);
}

لینک کد راست در گیست


"""
Warshall algorithm
This calculates transitive closure for a given binary matrix
Author: Farooq Karimi Zadeh
Code is under CC0 1.0
"""

from pprint import pprint

def pretty_print_matrix(matrix):
    pprint(matrix, width=len(matrix[0]) * 3 + 2)


n = int(3e5)  # calculate n times
bin_matrix = [[0, 1, 0, 0], [1, 0, 1, 0], [0, 0, 0, 1], [0, 0, 0, 0]]
for dummy in range(n):
    for k, _ in enumerate(bin_matrix):
        for i, row in enumerate(bin_matrix):
            for j, value in enumerate(row):
                if not value:
                    bin_matrix[i][j] = bin_matrix[i][k] and bin_matrix[k][j]

if n == 1:
    pretty_print_matrix(bin_matrix)
else:
    pass  # then we are benchmarking

لینک کد پایتون در گیست

مجوز مطالب و محتوا ۲۴ ارديبهشت ۰۰ ، ۱۴:۲۸ ۰ نظر موافقین ۱ مخالفین ۰
فاروق کریمی زاده

با پایتون یک ربات سخنگو بنویسید!

شاید در مورد ماژول chatterbot چیزی خوانده باشید یا شنیده باشید.این ماژول برای شما یک چت‌بات که میتواند یاد بگیرد را فراهم می‌سازد و از الگوریتم‌های یادگیری ماشینی استفاده میکند.

ادامه مطلب...
مجوز مطالب و محتوا ۱۰ مهر ۹۹ ، ۱۰:۵۲ ۳ نظر موافقین ۲ مخالفین ۰
فاروق کریمی زاده

نظرات (۳)

علیرضا آهنی
علیرضا آهنی

پایتون ۳.۸ و عملگر :=

در پایتون ۳.۸ یک عملگر جدید برای انتصاب معرفی شده است.این عملگر جهت انتصاب در عبارات بزرگتر استفاده می‌شود. مثلا:

a = 10
if (b := a) == 10:
...

در تکه کد بالا هم‌زمان مقدار b برابر مقدار a می‌شود و هم مقایسه انجام می‌شود.

مجوز مطالب و محتوا ۱۳ آبان ۹۸ ، ۱۹:۱۵ ۰ نظر موافقین ۱ مخالفین ۰
فاروق کریمی زاده

کلاس توکار complex برای کار با اعداد مختلط در پایتون

complex(real_part=0, imag_part=0)
complex(str)

complex یک کلاس توکار برای کار با اعداد مختلط هست. کار با اعداد مختلط مانند کار با اعداد صحیح و اعشاری است و عملگر های جمع،تفریق،ضرب و باقیمانده را میتوانید با آنها استفاده کنید.برای ایجاد یک عدد مختلط به سادگی از الگوی بالا کمک بگیرید.

ادامه مطلب...
مجوز مطالب و محتوا ۱۲ مهر ۹۷ ، ۱۹:۱۸ ۱ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده

نظرات (۱)

تابع os.urandom در پایتون

os.urandom(n)

تابع os.urandom تعداد n بایت تصادفی برمیگرداند که برای مصارف رمزنگاری و دیگر کاربرد‌ها که اعداد تصادفی با کیفیت‌تر نیاز دارند مناسب است

ادامه مطلب...
مجوز مطالب و محتوا ۱۸ مرداد ۹۷ ، ۱۹:۰۹ ۰ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده

توابع hex،bin و oct در پایتون

این توابع از توابع توکار پایتون هستند و همانطور که از اسمشان مشخص است، یک عدد مبنای ده را به یک رشته که حاوی آن عدد در مبنای ۸،۱۶ یا ۲ است تبدیل میکند. فکر نمیکنم نیاز به توضیح زیادی داشته باشند اما توجه کنید که این توابع یک رشته برمیگردانند. چند مثال:

>>> hex(10)
'0xa'
>>> oct(13)
'0o15'
>>> bin(12)
'0b1100'

مطالب مرتبط:

مجوز مطالب و محتوا ۰۱ ارديبهشت ۹۷ ، ۱۲:۱۷ ۰ نظر موافقین ۱ مخالفین ۰
فاروق کریمی زاده

تابع input در زبان پایتون

در زبان پایتون، تابع input از ورودی استاندارد(که بصورت پیشفرض و معمولا صفحه کلید است) تا زمانی که به نویسه‌ی خط جدید نرسیده میخواند و یک رشته(نوع str) با حذف خط جدید برمیگرداند.استفاده از آن بصورت زیر است:

input(prompt='')

prompt یک رشته است که به عنوان یک پیام به کاربر نمایش داده میشود و از کاربر میخواهد تا چیزی وارد کند، در صورتی که ذکر نشود،رشته‌ای خالی است(یعنی چیزی نمایش داده نمیشود). یک مثال:

name = input('What is your name?')
print('Hi,', name)

فراموش نکنید که تابع یک رشته برمیگرداند و در صورت نیاز باید آنرا به عدد و غیره تبدیل کنید.

مطالب مرتبط:

مجوز مطالب و محتوا ۱۶ مهر ۹۶ ، ۱۲:۰۰ ۳ نظر موافقین ۱ مخالفین ۰
فاروق کریمی زاده

نظرات (۳)

محمدصالح کامیاب
محمدصالح کامیاب

چطور حجم یک پرونده را بدست بیاوریم؟ + کد پایتون + کد سی + کد پرل

اندی پیش به این فکر میکردم که چطور میتوانم حجم یک پرونده را بدست بیاورم و زیر کاپوت این توابع چه چیزی پنهان است.

برای بدست آوردن حجم یک پرونده، البته بدون توجه به فایل‌سیستم و سیستم‌عامل میتوانیم به این صورت عمل کنیم: اول پرونده را باز میکنیم، سپس اشاره‌گر پرونده را به آخرین بایت آن انتقال میدهیم(معمولا تابعی به اسم seek یا مشابه وجود دارد)، حالا مکان اشاره‌گر را نسبت به اول پرونده بدست می‌آوریم(معمولا تابعی به اسم tell وجود دارد). حجم پرونده را به بایت بدست آورده‌ایم.

ادامه مطلب...
مجوز مطالب و محتوا ۳۰ شهریور ۹۶ ، ۱۲:۳۱ ۰ نظر موافقین ۱ مخالفین ۰
فاروق کریمی زاده

range در پایتون

range([start,]end)
range(start, end[, step])

تابع range در زبان پایتون یک بازه از اعداد صحیح از start تا end-1 بر میگرداند و در صورتی که start ذکر نشود،بصورت پیشفرض ۰ است.step نیز مشخص میکند که فاصله‌ی اعدادی از هم چقدر باشد و بصورت پیشفرض ۱ هست.

ادامه مطلب...
مجوز مطالب و محتوا ۰۶ فروردين ۹۶ ، ۰۹:۰۰ ۲ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده

enumerate در پایتون

enumerate در واقع یک کلاس هست و کاربردش زمانیست که بخواهید روی یک لیست(یا هر مخزن دیگر) پیمایش کنید و علاوه بر اعضای لیست، شماره‌ی آنها در لیست را نیز داشته باشید.
enumerate(myList) = (0, myList[0]), (1, myList[1]), (2, myList[2]), ...
سینتکس کلی بصورت زیر هست:
enumerate(myContainer, [start])

ادامه مطلب...
مجوز مطالب و محتوا ۳۰ اسفند ۹۵ ، ۱۹:۱۱ ۰ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده

یک مشاهده‌گر ساده فایل در فرمت شانزده‌شانزدهی(هکس) به زبان پایتون

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

#!/usr/bin/python3
'''
HexView.Py - A simple File Viewer in Hexadecimal format.
Author: FarooqKZ
Under GPL3+. THIS SOFTWARE COMES WITH NO WARRENTY FROM MAIN AUTHOR.
'''

import sys # I inlcude this to use sys.exit() and sys.argv

def showhelp(): # this function shows usage of program
    print("Usage: hexview.py file_path\n\tfile_path: Path of file to view.");
    sys.exit()

if '-h' in sys.argv: #shows help if something like this passed to program: 'hexview.py -h'
    showhelp()

path = sys.argv[1]
filestream = None
fbytes = None

try:
    filestream = open(path,'br') # Open the file in Binary mode for Reading(br)
    fbytes = filestream.read() # Read all bytes from the file 
finally:
    if filestream:
        filestream.close()

rown = 0 
print('')
for b in fbytes:
    s = hex(b).upper()
    s = s.replace('0X','')# "0XBA" => "BA"

    if len(s) == 1: 
        print('0', end='')
    print(s, end=' ')

    rown += 1
    if (rown % 27) == 0:
        print('')

print("\n") # prints 2 newline

پیوند تکه کد در گیت هاب گیست ( برای دریافت به اینجا بروید)

مجوز مطالب و محتوا ۱۶ دی ۹۵ ، ۰۹:۰۰ ۳ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده

مخازن توکار در پایتون

تقریبا در تمام زبان هایی که از نسل سی هستند شما چیزی به اسم مجموعه‌ها یا آرایه‌ها می‌بینید.در زبان سی یک آرایه، یک مجموعه از متغیر های همنوع هست که خانه‌های مجاور حافظه به آن تخصیص داده شده است.آرایه زیر یک آرایه از 3 عدد صحیح هست:

int ary[3] = {1, 2, 3};
printf("%i\n", ary[0]); // prints 1

در پایتون چیزی به اسم آرایه وجود ندارد.خود زبان پایتون بصورت ذاتی(منظورم builtin یا توکار هست) چهار نوع مخزن دارد: لیست‌ها(Lists)،توپل‌ها(Tuples)،دایرکتوری‌ها(Directories) و مجموعه‌ها(Sets).

برخلاف آرایه‌ها در سی که تنها میتوانند داده‌هایی از یک نوع را در خود نگه دارند، مخازن پایتون(جز مجموعه‌ها) میتوانند شامل هر نوع داده‌ای بصورت همزمان باشند.

ادامه مطلب...
مجوز مطالب و محتوا ۱۴ مرداد ۹۵ ، ۱۹:۰۰ ۱ نظر موافقین ۱ مخالفین ۰
فاروق کریمی زاده

نظرات (۱)

علیرضا آهنی

کار با فایل ها در پایتون

در این قسمت آموزش خواندن یک فایل متنی و همچنین ایجاد و نوشتن یک فایل متنی را مطالعه میکنید.

ادامه مطلب...
مجوز مطالب و محتوا ۰۴ مرداد ۹۵ ، ۱۰:۰۰ ۱ نظر موافقین ۱ مخالفین ۰
فاروق کریمی زاده

نظرات (۱)

برنامه نویس تنبل

ترفندی برای چک کردن وجود یک فایل در پایتون

در زبان پایتون جدا از توابع آماده‌ای که برای این کار وجود دارد این روش نیز روش جالبیست.

def FileExist(path):
    try:
        open(path)
    except:
        return False
    else:
        return True

ادامه مطلب...
مجوز مطالب و محتوا ۲۰ فروردين ۹۵ ، ۱۰:۰۰ ۰ نظر موافقین ۱ مخالفین ۱
فاروق کریمی زاده

اسلاید‌شو آموزش پایتون

پایتون یکی از زبان های برنامه نویسی قدرتمند و در عین حال ساده است و برای مبتدیان و تازه‌واردان به دنیای برنامه نویسی نیز گزینه خوبیست.این اسلاید شو بصورت نکته وار و سریع و آسان پایتون را آموزش میدهد. این اسلاید‌شو فقط روی سینتکس زبان مانور میدهد و کتابخانه های پایتون را مانند os،string،socket و ... را آموزش نمیدهد.


حجم: 1.11 مگابایت

مطالب مرتبط:

مجوز مطالب و محتوا ۰۹ فروردين ۹۵ ، ۲۱:۰۰ ۰ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده