Syntax | سینتکس
Software engineer Focus: Web Lan: Python && Go Group: https://t.me/Syntax_fa_group YouTube: https://www.youtube.com/@SyntaxFa/featured Admin: @ayeef
نمایش بیشتر2 510
مشترکین
-124 ساعت
-127 روز
+1330 روز
- مشترکین
- پوشش پست
- ER - نسبت تعامل
در حال بارگیری داده...
معدل نمو المشتركين
در حال بارگیری داده...
یک تمرین کاربردی برای کار با فایل و اپلیکیشن های تحت خط فرمان
سیستم مدیریت کتابخانه شخصی
امکانات پروژه:
افزودن کتاب جدید:
کاربران میتوانند کتابهای جدیدی با عنوان، نویسنده، سال انتشار و ژانر اضافه کنند.
اطلاعات کتابها فقط در فایل متنی (txt یا csv و ..) ذخیره میشود.
مشاهده لیست کتابها:
کاربران میتوانند لیستی از همه کتابهای موجود را مشاهده کنند.
نمایش اطلاعات کتابها شامل عنوان، نویسنده، سال انتشار و ژانر.
ویرایش اطلاعات کتابها:
کاربران میتوانند اطلاعات کتابهای موجود را ویرایش کنند.
انتخاب کتاب بر اساس شناسه یا عنوان و ویرایش جزئیات مانند عنوان، نویسنده، سال انتشار و ژانر.
حذف کتابها:
کاربران میتوانند کتابها را از سیستم حذف کنند.
انتخاب کتاب بر اساس شناسه یا عنوان و حذف آن از فایل ذخیرهسازی.
جستجوی کتابها:
امکان جستجوی کتابها بر اساس عنوان، نویسنده، سال انتشار یا ژانر.
نمایش نتایج جستجو به کاربر.
علامتگذاری کتابها به عنوان خوانده شده/نشده:
کاربران میتوانند وضعیت کتابها را به عنوان خوانده شده یا نشده علامتگذاری کنند.
امکان فیلتر کردن کتابها بر اساس وضعیت خوانده شده یا نشده.
نیازمندیهای پروژه:
ساختار فایل:
استفاده فقط از فایل txt و csv و ... برای ذخیره اطلاعات کتابها.
هر کتاب شامل فیلدهای عنوان، نویسنده، سال انتشار، ژانر و وضعیت خوانده شده.
رابط کاربری CLI:
پیادهسازی دستورات مختلف برای افزودن، مشاهده، ویرایش، حذف و جستجوی کتابها.
ارائه منوی انتخاب به کاربر برای اجرای دستورات.
مدیریت ورودی و خروجی فایل:
خواندن و نوشتن اطلاعات کتابها به/از فایل.
اطمینان از حفظ اطلاعات موجود در فایل و جلوگیری از از دست رفتن دادهها.
این پروژه به کاربران اجازه میدهد تا کتابهای خود را به راحتی مدیریت کنند و یک سیستم کامل برای مدیریت کتابخانه شخصی خود داشته باشند.
(اگه نوشتید به اشتراک بذارید تا با هم بررسیش کنیم و اشکالاتش رو رفع کنیم )
#exercise
@Syntax_fa
👍 6🔥 1👀 1
Photo unavailableShow in Telegram
پیشگیری بهتر از درمان است
#fun
@Syntax_fa
🤣 15👎 6😁 2👌 2👍 1😍 1🤨 1
EOF
ارور EOF یا "End of File" به معنی پایان فایل است و یکی از ارورهایی است که هنگام خواندن فایلها در برنامهنویسی ممکن است با آن مواجه شوید. این ارور نشاندهنده این است که عملیات خواندن به انتهای فایل رسیده و دیگر دادهای برای خواندن وجود ندارد. کاربردها و اهمیت EOF در برنامهنویسی به چندین مورد مختلف برمیگردد:
کاربردهای EOF
1. پایاندادن به خواندن فایل:
- EOF به برنامهنویس اطلاع میدهد که دیگر دادهای برای خواندن در فایل موجود نیست. این به ویژه زمانی مفید است که شما نمیدانید طول فایل چقدر است و میخواهید کل محتوا را پردازش کنید.
2. کنترل حلقههای خواندن:
- هنگام خواندن دادهها از فایل با استفاده از حلقهها، EOF به شما کمک میکند تا بدانید چه زمانی باید از حلقه خارج شوید. این امر باعث جلوگیری از تلاش برای خواندن دادههای غیرموجود و در نتیجه جلوگیری از خطاهای برنامه میشود.
3. ارتباط با منابع خارجی:
- در ارتباط با منابع خارجی مانند شبکهها یا پایگاههای داده، EOF میتواند نشاندهنده پایان جریان داده باشد. به عنوان مثال، وقتی اطلاعات از یک API دریافت میکنید، EOF میتواند نشان دهد که تمام دادهها دریافت شدهاند.
4. مدیریت دادههای ورودی و خروجی:
- در برنامههای تعاملی که ورودی از کاربر دریافت میکنند، EOF میتواند نشاندهنده پایان ورودی باشد. این امر به ویژه در برنامههای خط فرمان و اسکریپتهای پایپلاین مفید است.
مثالهایی از کاربرد EOF در زبانهای مختلف
مثال در زبان Go
در زبان گو، EOF هنگام خواندن فایلها استفاده میشود تا بدانیم چه زمانی به انتهای فایل رسیدهایم.
package main
import (
"bufio"
"fmt"
"os"
"io"
)
func main() {
file, err := os.Open("filename.txt")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer func() {
if err := file.Close(); err != nil
{
fmt.Errorf(...)
}
}
reader := bufio.NewReader(file)
for {
line, err := reader.ReadString('\n')
if err != nil {
if err == io.EOF {
// اگر به انتهای فایل رسیدیم، از حلقه خارج شویم
break
}
fmt.Println("Error reading file:", err)
return
}
fmt.Print(line)
}
}
مثال در زبان Python
در زبان Python، هنگامی که به انتهای فایل میرسیم، تابع read()
یا readline()
یک رشته خالی برمیگرداند که نشاندهنده EOF است.
with open('filename.txt', 'r') as file:
while True:
line = file.readline()
if not line:
break
print(line, end='')
#EOF
@Syntax_fa👍 2❤ 2🔥 1🥰 1👌 1💋 1
سوال:
تو پایتون چطور از string builder استفاده کنیم؟
جواب:
تو سایت real python یه مقاله خوب راجبش هست که. یکی از مثال هایی که زده:
from io import StringIO
sentence = StringIO()
while True:
word = input("Enter a word (or './!/?' to end the sentence): ")
if word in ".!?":
sentence.write(word)
break
if sentence.tell() == 0:
sentence.write(word)
else:
sentence.write(" " + word)
print("The concatenated sentence is:", sentence.getvalue())
لینک:
https://realpython.com/python-string-concatenation/
#python #string_builder
@Syntax_faEfficient String Concatenation in Python – Real Python
In this tutorial, you'll learn how to concatenate strings in Python. You'll use different tools and techniques for string concatenation, including the concatenation operators and the .join() method. You'll also explore other tools that can also be handy for string concatenation in Python.
🔥 7👍 1🙏 1
https://t.me/boost/Syntax_fa
جای بوس کردن بقیه، کانال سینتکسو بوس کنید روزی یه استوری زیبا میذارم براتون
Syntax | سینتکس
از این کانال حمایت کنید تا بتواند به قابلیتهای اضافی دسترسی پیدا کند.
💋 11🔥 1😍 1
الگوریتم Luhn
تاحالا شده که از کاربر شماره کارت و ... رو بگیرید اما نمیدونید چطور میشه در سطح برنامتون اعتبارسنجیش کنید!؟ این پست قراره درباره الگوریتم luhn صحبت کنیم و آخر کار تو کد یه مثال از نحوه اعتبار سنجی شماره حساب بانکی با الگوریتم luhn رو براتون میزنم.
خب قسمت توضیح چت جی بی تی عزیز زحمتو کشیده🤌😘:
الگوریتم Luhn که به عنوان "فرمول Luhn" نیز شناخته میشود، یک الگوریتم ساده برای اعتبارسنجی شمارههای شناسایی است. این الگوریتم توسط Hans Peter Luhn، محقق IBM، در سال 1954 اختراع شده است. الگوریتم Luhn به طور گسترده در اعتبارسنجی شمارههای کارت اعتباری، شمارههای شناسایی ملی، و شمارههای شناسایی دیگر استفاده میشود.
### نحوه عملکرد الگوریتم Luhn
1. ورودی:
- یک رشته از ارقام که باید اعتبارسنجی شود. این رشته معمولاً شامل شماره کارت اعتباری یا شماره شناسایی است.
2. مراحل:
- از سمت راست به چپ شروع کنید و هر عدد دوم را دو برابر کنید. اگر دو برابر کردن یک عدد منجر به یک عدد دو رقمی شد (یعنی بزرگتر یا مساوی 10)، جمع ارقام آن عدد را به دست آورید (برای مثال، 18 تبدیل به 1 + 8 = 9 میشود).
خراب کردی هوش مصنوعی جان😒😒
بذار با یه روش ساده توضیح بدم:
از عدد سمت چپ شروع میکنیم. یکیو ضربدر دو میکنیم. بعدی رو ضربدر یک و حاصل رو جمع میکنیم. اگه موقعی که داریم ضربدر دو میکنیم، عدد بزرگ تر از 9 شد، 9 تا ازش کم میکنیم.
مثلا عدد ما 7 هستش ضربدر دو میشه 14 چون از 9 بزرگ تر شده منهای 9 میکنیم پس میشه 5.
در نهایت حاصل جمعی که بدست آوردیم باید باقی موندش به پیمانه که 10 هستش صفر بشه.
مثال
فرض کنید شماره کارت این شخص عزیز که نمیدونیم کی هستش رو میخوایم اعتبارسنجی کنیم. "6037697646845005" است:
1. از چپ به راست شروع می کنیم اولی ضربدر دو، دومی ضربدر یک، سومی ضربدر دو و ... اگه هم بزرگ تر از 9 شده منهای 9 میکنیم:
result = 3 + 0 + 6 + 7 + 3 + 9 + 5 + 6 + 8 + 6 + 7 + 4 + 1 + 0 + 0 + 5حاصل جمعشون مساوی میشه با 70 پس شماره کارت معتبر هستش 🍸 خب هوش مصنوعی ادامه توضیحاتو بده: کاربردهای الگوریتم Luhn 1. اعتبارسنجی شمارههای کارت اعتباری: - تمامی کارتهای اعتباری صادر شده توسط شرکتهای مالی معتبر از الگوریتم Luhn برای اعتبارسنجی شماره کارتها استفاده میکنند. 2. شمارههای شناسایی ملی: - برخی کشورها از الگوریتم Luhn برای اعتبارسنجی شمارههای شناسایی ملی استفاده میکنند. 3. شمارههای شناسایی محصول: - برخی از کدهای محصول و شمارههای سریال از این الگوریتم برای اطمینان از صحت دادههای ورودی استفاده میکنند. 4. سیستمهای مالی و بانکی: - در بسیاری از فرآیندهای پرداخت و انتقال وجه، الگوریتم Luhn برای بررسی صحت شمارههای حساب و کارتها استفاده میشود. ### مزایا و محدودیتها مزایا: - سادگی و کارایی: الگوریتم بسیار ساده است و به راحتی پیادهسازی میشود. - جلوگیری از خطاهای تایپی: بیشتر خطاهای تایپی در وارد کردن شمارههای شناسایی را تشخیص میدهد. محدودیتها: - امنیت: الگوریتم Luhn برای امنیت طراحی نشده است و نمیتواند از جعل شمارهها جلوگیری کند. - تشخیص محدود: تنها قادر به تشخیص خطاهای ساده است و نمیتواند همه انواع خطاها را شناسایی کند. الگوریتم Luhn به دلیل سادگی و کارایی بالا، به طور گسترده در سیستمهای مختلف برای اعتبارسنجی شمارههای شناسایی مورد استفاده قرار میگیرد. بریم سراغ پیاده سازیش تو گولنگ:
package main
import (
"fmt"
"strconv"
)
func main() {
fmt.Println(Valid("6037697646845005"))
}
func Valid(cardNumber string) bool {
var sum int
for i := 0; i < len(cardNumber); i++ {
intNum, _ := strconv.Atoi(string(cardNumber[i]))
if (i+1)%2 != 0 {
if intNum*2 > 9 {
sum += (intNum * 2) - 9
} else {
sum += intNum * 2
}
} else {
sum += intNum
}
}
return sum%10 == 0
}
#luhn
@Syntax_Fa👍 8🔥 3❤ 2
Photo unavailableShow in Telegram
متن کامیت مناسب:
یه سری تغییرات کوچیک 😒
#fun
@Syntax_fa
🤣 22😁 2
خب من بعد مدتها تصمیم گرفتم یه پست بذارم و اونم نتیجه یه تجربه که شاید خیلیا مث من دوس دارن چیزای جدید و بروز رو استفاده کنن.
من روی سیستم شرکت از اوبونتو ۲۳.۰۴ فردای روزی که نسخه lts جدید اومد اپگرید کردم به ۲۴.۰۴ و باگای عجیبی رو دیدم که کافر نبینه و مسلمون نشنوه.
از مصرف زیادی منابع تا پر شدن خیلی سریع حافظه تا اخرین بایت ممکن بخاطر لاگ سیستمی.
ریپورت باگ زدم و بهم توصیه کردن از مطالب فوروم اوبونتو کمک بگیرم :(
باگ عجیبترش این بود که وقتی یه برنامه ای رو مکسیمایز میکردی، حدود یک سوم از صفحه که میشد سمت راست صفحه رو نمیشد با موس انتخاب و کلیک کرد :|
با اپدیت های متوالی هم درست نشد و مجبور شدم حدود یه ماه باهاش سر کنم یه جوری و بیشتر کارامو به سیستم ویندوزی کنم تا سر فرصت داونگرید کنم.
دیروز هم اپدیت ۳۰۰ مگابایتی اومد براش، نصب کردم و دیدم اوکی شده مشکلاتش (بجز حجم زیاد لاگ تولیدی که با روشایی که قبلا لاگ رو لیمیت میکردم جواب نداد)
و کلام اخر اینکه اگه میخواید حدودا بدونید چه زمانی مناسبه که به اوبونتو جدید اپگرید کنید، به نظرم زمانی که مینت میخواد نسخه جدید بده زمان مناسبیه (چون مینت بر پایه اوبونتو هستش).
و من الله توفیق...
@Syntax_fa
👍 8❤ 2
یک طرح متفاوت انتخاب کنید
طرح فعلی شما تنها برای 5 کانال تجزیه و تحلیل را مجاز می کند. برای بیشتر، لطفا یک طرح دیگر انتخاب کنید.