Skip to content

ekm507/shellcalc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 

Repository files navigation

a python calculator in shell

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

راه انداختن‌اش

در حال حاضر نصاب نداره و دستی باید برنامه رو (نصب و ) اجرا کنید!

برای استفاده ازش کتابخانه های numpy و matplotlib رو نصب کنید.

بعدش این ریپوزیتوری رو کلون کنید.

git clone 'https://github.com/ekm507/shellcalc.git'

استفاده‌ش

میتونید به شکل inline از این استفاده کنید. یعنی این شکلی استفاده کنید:

python pycalc.py "MATH EXPRESSION"

مثلا:

python pycalc.py '3*sin(4*pi) + sqrt(6) + 1'

که در خروجی پاسخ عبارت رو می‌نویسه
یا مثلا:

python pycalc.py "y = sin(x) + 1"

که سعی می‌کنه یک نمودار ترسیم کنه.

یا میتونید برنامه رو اجرا کنید تا ورودی رو از stdin بگیره. طبیعتا میتونید از pipeline هم استفاده کنید.

نتیجه چیزی شبیه این باید باشه: (البته ممکنه به خاطر نسخه برنامه تفاوت داشته باشه. این راهنما خیلی هم به روز نیست!)

> python pycalc.py
wellcome to shellcalc!

1+2*6
13

3+9
12

y=sin(x)

چند تا آپشن

round

اگر بعد از معادله تگ round رو استفاده کنید، پاسخ نهایی به شکل عدد صحیح خواهد بود.

python pycalc.py "10 * pi" round

برای نمودارها چند تا تنظیم هم داریم.

from

برای این که رسم نمودار از نقطه x=a شروع بشه اینطوری بنویسید: (به جای a عدد بگذارید)

python pycalc.py "y = sinc(x)" from a

to

برای این که رسم این نمودار به نقطه x=b ختم بشه اینطوری بنویسید:

python pycalc.py "y = sin(x) + 1" to b

step

برای این که رزولوشن منحنی رو مشخص کنید روی x اینطوری بنویسید:

python pycalc.py "y = sin(x) + 1" step 0.01

fft

ویژگی دیگری که می‌تونید با نمودار امتحان کنید تگ fft است. باهاش میتونید تبدیل فوریه تابع رو مشاهده کنید.

python pycalc.py "y = sinc(x) ** 2" fft

نکته ریاضی: برای افزایش رزولوشن در حوزه فرکانس باید گستره رو در حوزه زمان بیشتر کنید.

ifft

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

python pycalc.py "y = sinc(x)" ifft

int, integral

اگر میخواید انتگرال منحنی رسم بشه، از سوییچ int یا integral استفاده کنید.

deriv, derivative, d

اگر میخواید مشتق منحنی رسم بشه، از سوییچ derivative یا d یا deriv استفاده کنید.

zero, z

اگر میخواهید محور x و y هم رسم بشه از سرییچ zero یا z استفاده کنید.

xkcd

آپشن xkcd رو هم امتحان کنید!

python pycalc.py "y = sin(x) + 1" from -4 to 4 step 0.01 xkcd

برای استفاده راحت تر

میتونید بعدش هم با یه alias براش یه میونبر درست کنید. مثل این:

alias calc=/usr/bin/python Foo/Boo/pycalc.py

همچنین میتونید این دستور رو به اون فایل rc شل اضافه کنید
مثلا من که zsh استفاده میکنم این رو به ته فایل ~/.zshrc اضافه کرده‌م.

که بعدش میشه خیلی ساده تر استفاده‌ش کرد. مثلا:

calc 'sin(6 * pi) - 3'

توسعه

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

کارهایی که فعلا لازمه انجام بشه:

  1. یه چند تا چیز هم چاپ کنه مثل برنامه های عادی شل. مثلا usage و اینا
    و خطاهای خودش رو چاپ کنه به جای خطاهای پایتون.

  2. اضافه کردن امکان نصب و آپدیت

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

اگر تغییری چیزی دادید پول ریکوئست بدید ثواب داره.
همین دیگه خوش باشید.

هوم

About

a python based calculator in shell

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages