From da945367eab4d176e419d8b37c36e08fef5e6bcf Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Fri, 7 Jul 2023 20:58:39 +0300 Subject: [PATCH 01/50] [Update] README.md --- 0x20-AutomatedMailing/README.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/0x20-AutomatedMailing/README.md b/0x20-AutomatedMailing/README.md index 2a71403..cf0c6f5 100644 --- a/0x20-AutomatedMailing/README.md +++ b/0x20-AutomatedMailing/README.md @@ -1,10 +1,10 @@ # Automated Mailing -## 🛠️ Description +## Description This code helps automate the process of sending mail to large audience.It takes email addresses stored in the CSV file. -## ⚙️ Languages or Frameworks Used +## Languages or Frameworks Used Modules required are `os` , `email.mime` , `smtplib` , `pandas`. @@ -12,13 +12,9 @@ These are listed in `requirements.txt` . USe the below command to install these ```pip install requirements.txt``` -## 🌟 How to run +## How to run - Update the `from_addr` and `pd.read_csv("filepath")` - Assign `email` with your email-id & `password` with your e-mail password. - Run script - -## 🤖 Author - -[Pradhyuman Arora](https://github.com/pradhyumanarora) From 14457a52ab63aa6d39f0ba9bf804c869c5cab172 Mon Sep 17 00:00:00 2001 From: victorpreston Date: Fri, 7 Jul 2023 21:25:57 +0300 Subject: [PATCH 02/50] Text Editor --- 0x21TextEditor/README.md | 30 ++++++++++ 0x21TextEditor/Sample.jpg | Bin 0 -> 216504 bytes 0x21TextEditor/bold.png | Bin 0 -> 5231 bytes 0x21TextEditor/copy.png | Bin 0 -> 7785 bytes 0x21TextEditor/cut.png | Bin 0 -> 17481 bytes 0x21TextEditor/italic.png | Bin 0 -> 3338 bytes 0x21TextEditor/main.py | 113 +++++++++++++++++++++++++++++++++++ 0x21TextEditor/paste.png | Bin 0 -> 4159 bytes 0x21TextEditor/redo.png | Bin 0 -> 12306 bytes 0x21TextEditor/underline.png | Bin 0 -> 7345 bytes 0x21TextEditor/undo.png | Bin 0 -> 12314 bytes master | 0 12 files changed, 143 insertions(+) create mode 100644 0x21TextEditor/README.md create mode 100644 0x21TextEditor/Sample.jpg create mode 100644 0x21TextEditor/bold.png create mode 100644 0x21TextEditor/copy.png create mode 100644 0x21TextEditor/cut.png create mode 100644 0x21TextEditor/italic.png create mode 100644 0x21TextEditor/main.py create mode 100644 0x21TextEditor/paste.png create mode 100644 0x21TextEditor/redo.png create mode 100644 0x21TextEditor/underline.png create mode 100644 0x21TextEditor/undo.png create mode 100644 master diff --git a/0x21TextEditor/README.md b/0x21TextEditor/README.md new file mode 100644 index 0000000..8ac84aa --- /dev/null +++ b/0x21TextEditor/README.md @@ -0,0 +1,30 @@ +# About +This is a text editor written in python using the PyQt5 library + +# Features +- Change text size +- Make text bold +- Make text italic +- Underline text +- Copy Paste and Cut text +- Redo and Undo actions +- Save the file in PDF format + +## Install the Dependencies + +To use this first you need to make sure, Python3 is installed in your system. +To install Python3 in your system you may checkout Python's official downloads [page](https://www.python.org/downloads/). + +Then you need to install the PyQt5 module by running the following command in your terminal: + +```bash +pip install PyQt5 +``` + +## Screenshot, this is the screenshot of the editor: +![image](screenshot/Sample.jpg) + +#Credit +This project is made by [Raiyan Hasan](https://github.com/Raiyan101) + + diff --git a/0x21TextEditor/Sample.jpg b/0x21TextEditor/Sample.jpg new file mode 100644 index 0000000000000000000000000000000000000000..46045584bf97bf8323ed2ae8c9f9ac25c39e60e9 GIT binary patch literal 216504 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%0AHp1+56mnF0=Q?#n#NC**!Yje9t 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�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 J@eUII^*>b60%ZUI literal 0 HcmV?d00001 diff --git a/0x21TextEditor/cut.png b/0x21TextEditor/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..54f62f41728bef7c31f43dac190be58a0f8918be GIT binary patch literal 17481 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 literal 0 HcmV?d00001 diff --git a/0x21TextEditor/main.py b/0x21TextEditor/main.py new file mode 100644 index 0000000..e0559f4 --- /dev/null +++ b/0x21TextEditor/main.py @@ -0,0 +1,113 @@ +from typing import Text +from PyQt5.QtGui import QFont, QIcon +from PyQt5.QtWidgets import * +import sys +from PyQt5.QtPrintSupport import * + + +class Text_Editor(QMainWindow): + def __init__(self): + super(Text_Editor, self).__init__() + self.editor = QTextEdit() + self.editor.setFontPointSize(21) + self.setCentralWidget(self.editor) + self.font_size_box = QSpinBox() + self.showMaximized() + self.setWindowTitle("Text Editor") + self.create_toolbar() + self.create_menu_bar() + + def create_menu_bar(self): + menu_bar = QMenuBar() + file_menu = QMenu("File", self) + menu_bar.addMenu(file_menu) + + save_as_pdf_action = QAction("Save as PDF", self) + save_as_pdf_action.triggered.connect(self.save_as_pdf) + file_menu.addAction(save_as_pdf_action) + + self.setMenuBar(menu_bar) + + def create_toolbar(self): + + tool_bar = QToolBar() + undo_action = QAction(QIcon("undo.png"), "undo", self) + undo_action.triggered.connect(self.editor.undo) + tool_bar.addAction(undo_action) + self.addToolBar(tool_bar) + + redo_action = QAction(QIcon("redo.png"), "redo", self) + redo_action.triggered.connect(self.editor.redo) + tool_bar.addAction(redo_action) + + tool_bar.addSeparator() + tool_bar.addSeparator() + + cut_action = QAction(QIcon("cut.png"), "cut", self) + cut_action.triggered.connect(self.editor.cut) + tool_bar.addAction(cut_action) + + copy_action = QAction(QIcon("copy.png"), "copy", self) + copy_action.triggered.connect(self.editor.copy) + tool_bar.addAction(copy_action) + + paste_action = QAction(QIcon("paste.png"), "paste", self) + paste_action.triggered.connect(self.editor.paste) + tool_bar.addAction(paste_action) + + tool_bar.addSeparator() + tool_bar.addSeparator() + + self.font_size_box.setValue(20) + self.font_size_box.valueChanged.connect(self.set_font_size) + tool_bar.addWidget(self.font_size_box) + + tool_bar.addSeparator() + + # bold + bold_action = QAction(QIcon("bold.png"), 'Bold', self) + bold_action.triggered.connect(self.bold_text) + tool_bar.addAction(bold_action) + + underline_action = QAction(QIcon("underline.png"), 'Underline', self) + underline_action.triggered.connect(self.underline_text) + tool_bar.addAction(underline_action) + + italic_action = QAction(QIcon("italic.png"), 'Italic', self) + italic_action.triggered.connect(self.italic_text) + tool_bar.addAction(italic_action) + + # separator + tool_bar.addSeparator() + + def italic_text(self): + state = self.editor.fontItalic() + self.editor.setFontItalic(not(state)) + + def underline_text(self): + state = self.editor.fontUnderline() + self.editor.setFontUnderline(not(state)) + + def bold_text(self): + if self.editor.fontWeight() != QFont.Bold: + self.editor.setFontWeight(QFont.Bold) + return + self.editor.setFontWeight(QFont.Normal) + + def set_font_size(self): + value = self.font_size_box.value() + self.editor.setFontPointSize(value) + + def save_as_pdf(self): + file_path, _ = QFileDialog.getSaveFileName( + self, "Export PDF", None, "PDF Files (*.pdf)") + printer = QPrinter(QPrinter.HighResolution) + printer.setOutputFormat(QPrinter.PdfFormat) + printer.setOutputFileName(file_path) + self.editor.document().print_(printer) + + +app = QApplication(sys.argv) +window = Text_Editor() +window.show() +sys.exit(app.exec_()) diff --git a/0x21TextEditor/paste.png b/0x21TextEditor/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..f7765db645ccc860d8d5a2a6558be5f761ed4d1c GIT binary patch literal 4159 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 literal 0 HcmV?d00001 diff --git a/0x21TextEditor/redo.png b/0x21TextEditor/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..1d0c011d0e07732b282f6af2d1ff3d526b86ebf1 GIT binary patch literal 12306 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 acg;o-?mTNLLD2hs0B34*y7HvwKmP+sM$4iA literal 0 HcmV?d00001 diff --git a/0x21TextEditor/underline.png b/0x21TextEditor/underline.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8ff2a0927806e527efcadc6b9c6ce085836864 GIT binary patch literal 7345 zcmeHMX;f3!x4(&EC~B}R6+{ABE<+VXp~?(S6>pgwT7ifp6fj~e1c+b=kf1HJ1;XDO z1(8WbsjWmA1Vjj+s5F3JKm#HK#4yPaWy(N?ckFr}{_A~u@5@{3z16Ihb*FRo+55Nm z{_TD4{q>-)=W0D;JqUtUBM0^!h9E3B#X`C(z+wLE3ne%#kKKcOrwe|Gx?#V7>rZG0 z0%O7Wo{xXb9_zfb;O08|Hv#k`Q77o}Au-`le0==Yh)8N|Xb3HQYg7y+Z^qRaf=sp| z`*weKHh+46Sr+eq-1I%gBFJFPK5WdVDeUFu+rB(}a2Nd7j)lX#{);dAj_%v@#0%s3 z^B=|20r$SW=Gg1}{VpB7?+sRM`0Vh33!A<;WP_0$hIf5($>_5Kx}}78 z!9FI-qbS!tzx{m+w>_BZM&Ttz@MSbPk(#d2A7Dlm+e1qs?q4FlMg$1z_0WMJJz)3M z4gZ|{1HwO%@J|-}Z)X9Sr5uNPN~%QrDG+{8@2T?oSnHNU(Bjyz5W^YTU%U)rmd}?r z%-6=)8?e>2C+Tc+IV!}k`2orRk}{}vonDj1Mtwb4c>|hy+SQ`$8f$%a5L%>67%p^K z>5v_=-9{*kHJGLIr7!jNvZ`&Urizex;CxPAP;G1sf{R?dH&sjL-cdg7qPA0|SR zCSpfUSVK#d^GECE8}--&|8woY3Q;?qp)x}+vq`U_%?^7py+t<%dt=7_tFio-;_|Av z;qf(1Z*p7Y1kW+Yb2mFLtOI7jx8{Wu8! z()g*|c(m0AU^J#iwyq}(>x#BHK`oIJp{fe+SPSM=XbO?4?Gdq?bIYeTNih(ov#Uj3 zH&%_#NK8~3#>dWEa zF;imK>Zt913*_`0=#U#l&m(g*hFIEZ(YETIZJrvI>$Uf*?->&M9CKZNU*Iyy*~|#dzT!jae%Vj9U?hE5cOoOzA*vn{bNVQ z#E$mNyz9`^pfPbK0>qw6RqA$rYHjopqBMz~dYDMHf@@*Hf+wYRZIMsRVd;Q>EqMg2 z=M%F#Ta6pMi9|kUYNy6GT(VJ|>%F1CvU*YzEl~5D^6#m= z?}*L08);!wqc-a0&mBB5MsIxpx=qF%t5VF5H3tMY=YLe(=39c-)mc|87MYPd{aKv=G^KzQE>4k_@ zwgbkak9-b8D<=3wIT96Edng0I9$JxF&eXUX+Oe_QM8;R76TGS&sxL6@quZIvzoj|R zDh=4>BH9O%t)Lj7&S@>KP~Fv9OkQ5*;Ds@wZZXsvSAUkWxiq}}PB^|FHd|&~TD91N z_?i~Hg=YGhB&EZutM#Hje+$MK5cs}OyhQL!yVZ_wI!k3NAB_g?!Bu3JKgh0)0t0<7ZKMJu=h{Q86Ee+1hnKUzf=$X|bJK2xf*lht) zwK*bocW%M(Mr>E!I<+NqetNFIWtU!)U40yYC?SkGZCSh*^52p5%#+g*y^ESVx6=m` zkZPC-L^}A!jDjS5>1^L^bo_i(J0ov&d(+P+c?CI=j*qbGAd!R2#?8_=qgSCK(_Mf6>FB?Z@o-XKv=93*Z z8YG7Egym$w4iD@W^&TNodk6&Vro5J+Bm2i3^{7|g?)1Y1Wan7chS7gnrfe-8J8xe0 zJtfRIok~MWoH#!pgx21WB_Bcu*A=|AcIExeI0uEUi-kL#TMo$!7@SZLN+W^YYhM+h zt_gHq>vzK3r$fZjh{(+kk3cKCi7p!jIJ7?j=&HO8$4_sCd-D{<9;{r+3t=FBTm{!m z^I389HFwB3a>yuV_L0zu^XL!6)WvzZ!CY@C<%1t;NL1yt;G3|(Zp$Neq;!3&S}&>k zk#IM8ax`AkXfD{|NpaGPpXT2kDW-%2Ag(g5)`!zM#k4lq!vVzB9f`9lx+UWwV>><`s(VB2V(I*WRxCJo@SX6qPI(-jjeGMkPLuSNGQuo{T z5n%Xz2E=acXk|OCVq`NkTxt-fZK#mdP|v0lYsFsWPvaICL_jBj#f8OD0P`zQ!aMTlN{R zYRNM2?H=VrnDm<2NT#m|00fU9;wzG!#g!)KmlnjG1j0G<*yUxP&9M{I<0dUbJCWdR zEdDCTbBxmZ4U<7CQq%{Mz7F}gNZFuHvtYa%UsLv(-!mm=$(_QB{SM(kM@y;}TaX!0 zezwcK(Wp2ND5z4=uU$ZVO-x1t>T6}mMZ%4ajxNw-rKpbT=RJE}ar$#PcCPpAAyKW| zYO)}&^)L`3)BNV`fa6_Q!VH}%RrPxyV&_hu(qFJ;zEpP#GoaoKYIxpVA&%9C4a6P} zoWTTKQ&e7!LT0OgA;q0x2_8-B_v2E80Ey1|dM&X=Gk8T(=)SDMJq|j0()6U?U-J#q zJCyxuh~(s~oAGs4%8sHX8SGakzstpz9p=kCd}pZu)wE+)jLbajAEz1?N!$pV(wBFi z#eTY3qDy`P%7#}=Fq)Uy5o4l(1z?xvmx0GF0kSxR_E^;RjN7!l2}OJ-_^i|PHJnTW z`-?oBxQ|p8dl$B)@{Y&T*Yu_-h^#;nUv4EhvPCm_0!JPhZAt6!nOzNR_}$QgaXNl? zMabM)H4n}*Ef{g+e^W1ptSn{@O59W8GTAdFL<)B}FE^>6gsaoF6uSXAK=~p9JM%J5lEvvLH*f4BE_HwuG#sTW{P&ObUNEbY zN2P%Q5j_4*!Fg~e#f$6uK&Gh!xl?|Mm*iQpKIpE8a~ocDNUA=zKaCte1)c8voEx;$ z`7u7oL*O;WI}%W!=u3*IE|-(CBO*ig8n83}E>^if|G$1k3VVo46T;m?C)<0b<|@Sg zs^n{wj@Xs!hjq#4iBwX)j5&JkWZjy4g(RP(XA=@g=n6N@ET6?6UOdbWCe`xOaxSHxSnk;Vq z4v$&g^z9@rCH%qu8p-cT)yz5oT(7E6=x@o8kK4E`ieP;yp9QMKN#1~6_pla(-&AiP z;wyXFIDHt}8L5$s7g;EN69&djxgn-tcP|^?@Zu%0?g;8{1v$1D{BP|F`~ zLF=ol7BdtxR7X0m>T@Es^T2GMch8VWC2^&cMRTCvE=zH8HT-*4N6di^-&r@lOdk+f zT$L#DlEi^~`pnqGC8XhHEo-&ju8q8^yzmERL)9SuP;H)s$&|7jopoP#6PYyB@I)SK z!AgL$D_Hs%(TmO15gX^4lE15t_h=gH|59)p#Mx`&>(=$XMx|A8KTxMB-1<$gkE?9` zX06j%Tl98q=gS-{6u$zcg`eck#5>ki#pMY@0%{b-&Mw_MszwyER-?5kdrU9}Uk~cP zpM?jVo!d6nZRkGM-eFAmX(58=_N5>Sc8Z{9?_FF%8U|`vZhE^80hLbxmE(ZQ6@`*P zD@KA;jRLU^qQ2Fr${RKF=~~g^bXwX;pV8J7pD$zS?F!*lF|C}eUdw|fF4TJn^krg_ zyR&ZFOXAWZ+}XOA9*qWFkzjzfS@=gr$K1Pzbw^XQd}LE%h%^pKuBlr5P1Gj}?tc`0 zidWE2WPXDV`eZ)QR^}F7E|(jYKn6WbRs?DVlEw3PD+ZG~J<(uufI6+@ReijyUgBij zo_oxgI&#?@Lg6`Be%EuXw=&+!sZyqSC*0lJDC*nGb+r-{?5Dh{q|A$1C+NCQk3e$J zO2rgAykjfSw_@x^*W)?%kGxRV5?Sz@LNoj>%#bwKO5ks)$QA~!P>@lI zrNYm2eSfN=yn%H=LbCWn8FQ=0(&>2ZNUH&K=XzCKv3HaQsKtRRlqXSA>%DMgd~q{v z9*|-O{lrFjc|8>r4E}4@{5W(z=|$m;M(CXxUo<&#*|74`9H(FDi@e> z3YB_g)(}k}w{ZI#Wttoi6+wEC=L=$86zbtU`=q$i=C2V%vq3P&t-mfyo)~hy*=`%H zOhY;j%>DxRtjjxj$URr`kS~k%#D%;vfbd}&yS_FwQ3#Zr|KOb!;5K-Jd4JR{VSkC| z_tW1VfB8F_=r2|4@5hBGz-W*iTDZ~hb7>U=^hhuxM5-PrZa%%6I_;a=5cuIf-0+t6 z%)LtE^nLGtC_3imJU8~I*`L?=<%IXfk z*)s7GDFgo~!5T8DQcSP`zl77XFWt8h1R}v)$r-*ZepN^10U!x>+9KGCy1EJ$o>~$! z=TO%d0~(VpI_yw8530Hq){^PjUnmcj7;fQj6};lhWUD&tAFBdKaVLoLW|t*LLqF$r zY1`*hJ*2mWZhZxrRDw*iA2598upHt||u}w0CYxt+y9AA(}6{7iSoV#*ZW*|H!L?Nx2ihj9-M~y=K{G zZ%ekSPoS(mrgnaOLun4SDLT(eMQWe#ID>Do;?{5WH#pa+%}^eFsJf#*a%Xhx_HeQW)E@?Rw#r{dP-V}-TM^S@RzQ=ExudNeq>|LS5E;z+gb78HMxP3((oq@8%Ol>AeQapG<D32HPs_O2{FBejO)r0@2DrsI0H;Hk^7{m`6}4{0*4~AXOLiL=ar=|yts)2 zuG!=<5D`A0D;6)sTQPnp=^V#;#sT(N6gSq%lHZJPJDtOXdO?@whSocFoBz=ClIf3n zE{L^&f~!065OcfVNg3#&gn{I1!51ZkYgvomV8~GkQo{wY8CUWlx8WGxJM_&5zN}?l zZ0kI%T_5-OQ)ur!(M;jQq1_~d8x?bQZo{%_;qF^4cxZ3?=VCW*J(<4NNTQQlt=ghl zbq(6)EmaSTm)0Q-9^GxeSI>E&i7csl6=^mU_JnNqP^YP=>L^;5)qzbL{}C~L&15Z& zZy@8?-(0qO%(PUL2Yt9;-1}R)-SOA5d-6(yI4B@r)W@?=nwwf5^6TX*NVqC z&<=8-fJ=;XZaV~xNX)AtM_OPB^}~1R9@J1A`z4@ubi(ps)VhM7(cruZ%f>m-O@@Ym zC-3-0fZ%Cp8tg=&o3=Vy3HByP^{eHTC*q*q3{hVaR~3e)WpzBV1daI^DAXK0w(cra z<^-xv*e2{??v2%)<_8O~c1!moEv2}*Y3o7&%?+g#N?v<0s17;-Fa8$ps?1dSjJ zrNWS*ZPw7~VCpm;DZC{KyFJX7Bn{!x^>?(N6?I+VrvPV$3(`$C6 z_?6!mdeF!{5!j_lV2Wj}V8}7!Oh}0*!UAph!|`opetJ+i;Mjjj%q*PDyX%&_u07UF zv3G0Ms^G?MW@8x5)MyWeov1lG#I(DVQita>zmd0jr)#46MsYgOogb1j-e-9G=_e|N z98HR{!XD&l6{c^`H~L}NRNxZdlA2Y87bLH_iNfA}CeMFI>s`A^OLr&uBzH%B8x#xS zz#s&bc6_&D#?aP?c%@L1nY&i4?PE65Xr=+KIuNHz6`UgVnJt55-^L7-|JtggqaMiY zpRnzGzq<(m4A@JZPR)&5?&~$%1e0xSd`Ywi{?>86{u7XM0Q6-}gefsj0?e=V0ky^NAWKq+^E93Ofzo+KXX71U+fC z9^g0n)HBgu1Geci2_w@F%b5(HXk;$P&`&O8WNg4w179F^ydZ* zd)+?1_?}&`hpZ1^Aoe)}=>N;fEsF{8b_H4r$Nk^>(52LJZ0#Gn#=c4cpBEwI8{d6* I_K?s02Tvb)7XSbN literal 0 HcmV?d00001 diff --git a/0x21TextEditor/undo.png b/0x21TextEditor/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..2de5718dd96a6a7ea46b88ae81eaae0258544be3 GIT binary patch literal 12314 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 nkJpP)Pu`*inn?8@z Date: Fri, 7 Jul 2023 21:30:37 +0300 Subject: [PATCH 03/50] Delete File --- master | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 master diff --git a/master b/master deleted file mode 100644 index e69de29..0000000 From efae33d04bb6905790ffae1ffbc65d6ec2fca094 Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Fri, 7 Jul 2023 21:40:05 +0300 Subject: [PATCH 04/50] [Update] README.md --- 0x21TextEditor/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/0x21TextEditor/README.md b/0x21TextEditor/README.md index 8ac84aa..fe3ef01 100644 --- a/0x21TextEditor/README.md +++ b/0x21TextEditor/README.md @@ -22,9 +22,7 @@ pip install PyQt5 ``` ## Screenshot, this is the screenshot of the editor: -![image](screenshot/Sample.jpg) -#Credit -This project is made by [Raiyan Hasan](https://github.com/Raiyan101) +![Screenshot from 2023-07-07 21-37-23](https://github.com/victorpreston/Python-CodeNest/assets/112781610/2c8106b2-b149-46d1-af19-e31e97f4df47) From 49a2e811edd68f4650864ac4afe21010b9ee3704 Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Fri, 7 Jul 2023 21:57:21 +0300 Subject: [PATCH 05/50] [Update] Code --- 0x01-Dice/README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/0x01-Dice/README.md b/0x01-Dice/README.md index 1999c63..976683e 100644 --- a/0x01-Dice/README.md +++ b/0x01-Dice/README.md @@ -1,9 +1,15 @@ # DICE SIMULATOR -![maxresdefault](https://github.com/victorpreston/Python-CodeNest/assets/112781610/47c94ef9-9276-40ec-8f0a-713759220723) - ## What is a dice simulator ? Dice roller is a game where user is asked to choose a value from 1 to 6 and launch the dice. The fun happens when the dice falls. +## Run +Use the main file to simulate the rolling of a dice. +`python3 main.py` +The simulation the user to play a dice. +Type `y`- To continue to Play + `n` - To stop the play. +## Screenshot Sample +![Screenshot from 2023-07-07 21-50-45](https://github.com/victorpreston/Python-CodeNest/assets/112781610/b22fb0b7-3561-4b4d-9aa8-103106662d60) From 935b4e3fe41f6b27df348539df24454416edbbda Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Fri, 7 Jul 2023 22:00:00 +0300 Subject: [PATCH 06/50] [Update] Code --- 0x01-Dice/README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/0x01-Dice/README.md b/0x01-Dice/README.md index 976683e..62f5ab5 100644 --- a/0x01-Dice/README.md +++ b/0x01-Dice/README.md @@ -8,8 +8,11 @@ The fun happens when the dice falls. ## Run Use the main file to simulate the rolling of a dice. `python3 main.py` -The simulation the user to play a dice. + +The simulation prompts the user to play a dice. + Type `y`- To continue to Play - `n` - To stop the play. + `n` - To stop the play + ## Screenshot Sample ![Screenshot from 2023-07-07 21-50-45](https://github.com/victorpreston/Python-CodeNest/assets/112781610/b22fb0b7-3561-4b4d-9aa8-103106662d60) From 761a2e17428e0c59a7d3e509226e6f6ddc18041a Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Fri, 7 Jul 2023 22:19:59 +0300 Subject: [PATCH 07/50] [Update] README.md --- README.md | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index cbd7a24..53ac055 100644 --- a/README.md +++ b/README.md @@ -9,25 +9,31 @@ ## Projects list -* [1.Dice simulator](https://github.com/victorpreston/Python-CodeNest/tree/master/0x01-Dice) -* [2.Dictionary](https://github.com/victorpreston/Python-CodeNest/tree/master/0x02-Dictionary) -* [3.Hanging man](https://github.com/victorpreston/Python-CodeNest/tree/master/0x03-HangingMan) -* [4.TicTacToe](https://github.com/victorpreston/Python-CodeNest/tree/master/0x04-TicTacToe) -* [5.Conditionals](https://github.com/victorpreston/Python-CodeNest/tree/master/0x05-Conditional) -* [6.Decrements](https://github.com/victorpreston/Python-CodeNest/tree/master/0x06-Decrement) -* [7.Face detection](https://github.com/victorpreston/Python-CodeNest/tree/master/0x07-Face_detection) -* [8.Password generator](https://github.com/victorpreston/Python-CodeNest/tree/master/0x08-Passcode-generator) -* [9.Shutdown](https://github.com/victorpreston/Python-CodeNest/tree/master/0x09-Shutdown) -* [10.Simple browser](https://github.com/victorpreston/Python-CodeNest/tree/master/0x10-Simple-browser) -* [11.Text to speech](https://github.com/victorpreston/Python-CodeNest/tree/master/0x11-Text-to-Speech) -* [12.Weather-finder](https://github.com/victorpreston/Python-CodeNest/tree/master/0x12-Weather-finder) -* [13.Web server](https://github.com/victorpreston/Python-CodeNest/tree/master/0x13-Web_server) -* [14.Shuffle](https://github.com/victorpreston/Python-CodeNest/tree/master/0x14-Shuffle) -* [15.Audio-Book](https://github.com/victorpreston/Python-CodeNest/tree/master/0x15-Audio-Book) -* [16.QR-Generator](https://github.com/victorpreston/Python-CodeNest/tree/master/0x16-QR-Generator) -* [17.Sudoku](https://github.com/victorpreston/Python-CodeNest/tree/master/0x17-Sudoku) -* [18.Url-Web Scrapper](https://github.com/victorpreston/Python-CodeNest/tree/master/0x18-Url-Web-Scraper) -* [19.PhoneTracker](https://github.com/victorpreston/Python-CodeNest/tree/master/0x19-Phone-Tracker) +| Number | Name | +|--------|------| +| 1 | [Dice simulator](link/to/dice/simulator) | +| 2 | [Dictionary](link/to/dictionary) | +| 3 | [Hanging man](link/to/hanging/man) | +| 4 | [TicTacToe](link/to/tictactoe) | +| 5 | [Conditionals](link/to/conditionals) | +| 6 | [Decrements](link/to/decrements) | +| 7 | [Face detection](link/to/face/detection) | +| 8 | [Password generator](link/to/password/generator) | +| 9 | [Shutdown](link/to/shutdown) | +| 10 | [Simple browser](link/to/simple/browser) | +| 11 | [Text to speech](link/to/text/to/speech) | +| 12 | [Weather finder](link/to/weather/finder) | +| 13 | [Web server](link/to/web/server) | +| 14 | [Shuffle](link/to/shuffle) | +| 15 | [Audio Book](link/to/audio/book) | +| 16 | [QR Generator](link/to/qr/generator) | +| 17 | [Sudoku](link/to/sudoku) | +| 18 | [URL Web Scrapper](link/to/url/web/scraper) | +| 19 | [Phone Tracker](link/to/phone/tracker) | +| 20 | [Automated Mailing](link/to/phone/tracker) | +| 21 | [Text Editor](link/to/phone/tracker) | + + ## User Guide From 4fb13d0df6910d5947662ebba99ed94ef8f3260e Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Fri, 7 Jul 2023 22:37:23 +0300 Subject: [PATCH 08/50] [Update] README.md --- README.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 53ac055..70e021d 100644 --- a/README.md +++ b/README.md @@ -9,29 +9,29 @@ ## Projects list -| Number | Name | +| Number | Directory | |--------|------| -| 1 | [Dice simulator](link/to/dice/simulator) | -| 2 | [Dictionary](link/to/dictionary) | -| 3 | [Hanging man](link/to/hanging/man) | -| 4 | [TicTacToe](link/to/tictactoe) | -| 5 | [Conditionals](link/to/conditionals) | -| 6 | [Decrements](link/to/decrements) | -| 7 | [Face detection](link/to/face/detection) | -| 8 | [Password generator](link/to/password/generator) | -| 9 | [Shutdown](link/to/shutdown) | -| 10 | [Simple browser](link/to/simple/browser) | -| 11 | [Text to speech](link/to/text/to/speech) | -| 12 | [Weather finder](link/to/weather/finder) | -| 13 | [Web server](link/to/web/server) | -| 14 | [Shuffle](link/to/shuffle) | -| 15 | [Audio Book](link/to/audio/book) | -| 16 | [QR Generator](link/to/qr/generator) | -| 17 | [Sudoku](link/to/sudoku) | -| 18 | [URL Web Scrapper](link/to/url/web/scraper) | -| 19 | [Phone Tracker](link/to/phone/tracker) | -| 20 | [Automated Mailing](link/to/phone/tracker) | -| 21 | [Text Editor](link/to/phone/tracker) | +| 1 | [Dice simulator](https://github.com/victorpreston/Python-CodeNest/tree/master/0x01-Dice) | +| 2 | [Dictionary](https://github.com/victorpreston/Python-CodeNest/tree/master/0x02-Dictionary) | +| 3 | [Hanging man](https://github.com/victorpreston/Python-CodeNest/tree/master/0x03-HangingMan) | +| 4 | [TicTacToe](https://github.com/victorpreston/Python-CodeNest/tree/master/0x04-TicTacToe) | +| 5 | [Conditionals](https://github.com/victorpreston/Python-CodeNest/tree/master/0x05-Conditional) | +| 6 | [Decrements](https://github.com/victorpreston/Python-CodeNest/tree/master/0x06-Decrement) | +| 7 | [Face detection](https://github.com/victorpreston/Python-CodeNest/tree/master/0x07-Face_detection) | +| 8 | [Password generator](https://github.com/victorpreston/Python-CodeNest/tree/master/0x08-Passcode-generator) | +| 9 | [Shutdown](https://github.com/victorpreston/Python-CodeNest/tree/master/0x09-Shutdown) | +| 10 | [Simple browser](https://github.com/victorpreston/Python-CodeNest/tree/master/0x10-Simple-browser) | +| 11 | [Text to speech](https://github.com/victorpreston/Python-CodeNest/tree/master/0x11-Text-to-Speech) | +| 12 | [Weather finder](https://github.com/victorpreston/Python-CodeNest/tree/master/0x12-Weather-finder) | +| 13 | [Web server](https://github.com/victorpreston/Python-CodeNest/tree/master/0x13-Web_server) | +| 14 | [Shuffle](https://github.com/victorpreston/Python-CodeNest/tree/master/0x14-Shuffle) | +| 15 | [Audio Book](https://github.com/victorpreston/Python-CodeNest/tree/master/0x15-Audio-Book) | +| 16 | [QR Generator](https://github.com/victorpreston/Python-CodeNest/tree/master/0x16-QR-Generator) | +| 17 | [Sudoku](https://github.com/victorpreston/Python-CodeNest/tree/master/0x17-Sudoku) | +| 18 | [URL Web Scrapper](https://github.com/victorpreston/Python-CodeNest/tree/master/0x18-Url-Web-Scraper) | +| 19 | [Phone Tracker](https://github.com/victorpreston/Python-CodeNest/tree/master/0x19-Phone-Tracker) | +| 20 | [Automated Mailing](https://github.com/victorpreston/Python-CodeNest/tree/master/0x20-AutomatedMailing) | +| 21 | [Text Editor](https://github.com/victorpreston/Python-CodeNest/tree/master/0x21TextEditor) | From 009132335ca2ccc3634e0c3c9b8819aa156d3a20 Mon Sep 17 00:00:00 2001 From: victorpreston Date: Sat, 8 Jul 2023 15:53:00 +0300 Subject: [PATCH 09/50] License --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ae0f4cb --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Victor Preston + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 7c4f67b41634bf4568bfc566df6b08553356f64f Mon Sep 17 00:00:00 2001 From: victorpreston Date: Sun, 9 Jul 2023 14:29:09 +0300 Subject: [PATCH 10/50] Update Gui --- 0x17-Sudoku/{ => SudokuConsole}/README.md | 0 0x17-Sudoku/{ => SudokuConsole}/sudoku.py | 0 .../SudokuGui/.vs/ProjectSettings.json | 3 + .../SudokuGui/.vs/Sudoku_Solver/v16/.suo | Bin 0 -> 13824 bytes .../SudokuGui/.vs/VSWorkspaceState.json | 6 + 0x17-Sudoku/SudokuGui/.vs/slnx.sqlite | Bin 0 -> 90112 bytes 0x17-Sudoku/SudokuGui/README.md | 12 ++ .../__pycache__/solver.cpython-38.pyc | Bin 0 -> 1417 bytes 0x17-Sudoku/SudokuGui/gui.py | 147 ++++++++++++++++++ 0x17-Sudoku/SudokuGui/solver.py | 66 ++++++++ 10 files changed, 234 insertions(+) rename 0x17-Sudoku/{ => SudokuConsole}/README.md (100%) rename 0x17-Sudoku/{ => SudokuConsole}/sudoku.py (100%) create mode 100644 0x17-Sudoku/SudokuGui/.vs/ProjectSettings.json create mode 100644 0x17-Sudoku/SudokuGui/.vs/Sudoku_Solver/v16/.suo create mode 100644 0x17-Sudoku/SudokuGui/.vs/VSWorkspaceState.json create mode 100644 0x17-Sudoku/SudokuGui/.vs/slnx.sqlite create mode 100644 0x17-Sudoku/SudokuGui/README.md create mode 100644 0x17-Sudoku/SudokuGui/__pycache__/solver.cpython-38.pyc create mode 100644 0x17-Sudoku/SudokuGui/gui.py create mode 100644 0x17-Sudoku/SudokuGui/solver.py diff --git a/0x17-Sudoku/README.md b/0x17-Sudoku/SudokuConsole/README.md similarity index 100% rename from 0x17-Sudoku/README.md rename to 0x17-Sudoku/SudokuConsole/README.md diff --git a/0x17-Sudoku/sudoku.py b/0x17-Sudoku/SudokuConsole/sudoku.py similarity index 100% rename from 0x17-Sudoku/sudoku.py rename to 0x17-Sudoku/SudokuConsole/sudoku.py diff --git a/0x17-Sudoku/SudokuGui/.vs/ProjectSettings.json b/0x17-Sudoku/SudokuGui/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/0x17-Sudoku/SudokuGui/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/0x17-Sudoku/SudokuGui/.vs/Sudoku_Solver/v16/.suo b/0x17-Sudoku/SudokuGui/.vs/Sudoku_Solver/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..4157b157495217cf74dfee22935c473175ca3eae GIT binary patch literal 13824 zcmeI3OLJ636vsOtB0dm&M8Q{#fT$!SAtoUTh9nR`LXb%URmQR=GYJftJZdHZQkGxA za_ve#fD6k7RV*!6mL)7G7OZgVCvYS2_wRcL$IVvrXk~|aGEm+?ev5nGWy}-gRrY9QWktnX0kWH^hB$E1%=5Qs zn#@Tv$1`J=HIxDh`nJo?L#Xm@AxBU)B%o14A zCI$V1D*?=dlw`sX`{lwfIh0 A&E8&%^vWxo#x?PmloeuTtiUUJ2x%CI1|-6L=mF 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 R01yBIKmZ5;fe(ei{{wC3TGapm literal 0 HcmV?d00001 diff --git a/0x17-Sudoku/SudokuGui/README.md b/0x17-Sudoku/SudokuGui/README.md new file mode 100644 index 0000000..dac94c7 --- /dev/null +++ b/0x17-Sudoku/SudokuGui/README.md @@ -0,0 +1,12 @@ +# SudokuSolver +Solve any Suduko puzzle using this solver GUI built using Python and Tkinter. +The code uses a backtracking algorithm to solve the puzzle. + +

Running the Program

+There are two ways to run the program. The first of which involves using the GUI. Begin by importing gui.py into your IDE of choice. Then run the program and a window will appear. +Input your chosen Sudoku puzzle into the cells of the window. Leave any empty cells blank. Then simply click "solve" to complete the puzzle or "clear" to clear the puzzle.
+
+ +Alternatively, you can run the program without a GUI using the solver.py script. Simply import the script into your IDE of choice. Then fill out the 2D board vector at the top of the file. +Fill in empty cells with a zero. After filling in the board vector, you can run the program. The output will be printed to the console. + diff --git a/0x17-Sudoku/SudokuGui/__pycache__/solver.cpython-38.pyc b/0x17-Sudoku/SudokuGui/__pycache__/solver.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..16ccb87af2b8f90c7f67cfc1540183ffcc62141a GIT binary patch literal 1417 zcmZWpO-~a+7@m*a?H0@TB7vYW>ZKP$yl4m^1ki&qm89UIsUd|~>O#9)X16HGu9x~F zIO>t#p#G7)>V;om;>qWor3G}FdFGvY-+4ctcecCZ<6{iN`w{GYvl;tIo10@An{~|i z7eFz^JFLN#P!cjzmO)7Eva*frs1mfKqcet`TkL?az}awL*fS+@MwZNI3cn7{hQ7zH z?%T%S@D@{JWN*&sZdp-elEmn&@JLyf+U0h+A=DjJ`OF$pjjIW)mYP&kSZy_}X0SSn z*I9M;5|y&rCD>q>lAuK35O9JrflFW!2*3d;hJ!AW^(JP#4@g+b20Y^_kEbX^%9|n+ znM@3k1F^;4tz=drQkGh&NadjzNc|8pOT_|9wOg+_xI`)OE*nO{iJuMC*g1cGrkL8!W9;`fD?R*SA@$QF(Hi20r5W^ z)CS_#@cJD>0yYL5?A^~~%83&NzKF2}b}Y0Dwq%{1xc}Kf4_k|DVYhr`w_My;_9DyB z2htnaM*l2jdsnFJd1iX{935n-Z8Qc)nx)J!`A{6k#5m{dD$4oEC*`1HrJAOKie8!C zX)1Q-g6nat)smjVlFP8)&1El&wMW)71hb^zN2VZI6;AIue%fFG%ex-U2wL@Vr))x!u!2 znB*etHJolM(ZR 5) and (col < 3 or col > 5): + color = 'white' + elif (row >= 3 and row < 6) and (col >=3 and col < 6): + color = 'white' + else: + color = 'grey' + + # Make each cell of grid a entry box and store each user entry into the filledBoard 2D list + self.board[row][col] = Entry(window, width = 2, font = font, bg = color, cursor = 'arrow', borderwidth = 2, + highlightcolor = 'yellow', highlightthickness = 0, highlightbackground = 'black', + textvariable = filledBoard[row][col]) + self.board[row][col].bind('', self.gridChecker) # Link to better understand binding statements: https://www.python-course.eu/tkinter_events_binds.php#:~:text=Tkinter%20provides%20a%20mechanism%20to,and%20methods%20to%20an%20event.&text=If%20the%20defined%20event%20occurs,describing%20the%20event. + self.board[row][col].bind('', self.gridChecker) + self.board[row][col].grid(row = row, column = col) + + # Function to check if user enters a value which is not an int between 1 and 9 (valid numbers in Sudoku game). + # If entry is not valid, clear value + def gridChecker(self, event): + for row in range(9): + for col in range(9): + if filledBoard[row][col].get() not in ['1','2','3','4','5','6','7','8','9']: + filledBoard[row][col].set('') + + # Call Sudoku solver class (called by solve button) + def Solve(self): + SudokuSolver() + + # Function to clear board (called by clear button) + def Clear(self): + for row in range(9): + for col in range(9): + filledBoard[row][col].set('') + +# Global 2D list which saved in the values the user enters on the GUI +# Each value in the 2D list is set as a StringVar(), a class in Tkinter +# which allows you to save values users enter into the Entry widget +filledBoard = [] +for row in range(9): + filledBoard += [["","","","","","","","",""]] +for row in range(9): + for col in range(9): + filledBoard[row][col] = StringVar(root) + +# Main Loop +Interface(root) +root.mainloop() + + + diff --git a/0x17-Sudoku/SudokuGui/solver.py b/0x17-Sudoku/SudokuGui/solver.py new file mode 100644 index 0000000..fed28fc --- /dev/null +++ b/0x17-Sudoku/SudokuGui/solver.py @@ -0,0 +1,66 @@ +import numpy as np +board = [ + [5,3,0,0,7,0,0,0,0], + [6,0,0,1,9,5,0,0,0], + [0,9,8,0,0,0,0,6,0], + [8,0,0,0,6,0,0,0,3], + [4,0,0,8,0,3,0,0,1], + [7,0,0,0,2,0,0,0,6], + [0,6,0,0,0,0,2,8,0], + [0,0,0,4,1,9,0,0,5], + [0,0,0,0,8,0,0,7,9] +] + +def solve(board): + # Find next empty cell + findEmpty = emptyCell(board) + + if not findEmpty: + return True # Board is filled + else: + row, column = findEmpty + + for i in range(1,10): + if isValid(board, i, (row, column)): + board[row][column] = i + + if solve(board): + return True + + board[row][column] = 0 + + return False + + +def isValid (board, num, pos): + # Check Row + for i in range(9): + if num == board[pos[0]][i]: + return False + # Check Column + for i in range(9): + if num == board[i][pos[1]]: + return False + + # Check Sub Grid + row = pos[0] // 3 + column = pos[1] // 3 + + for i in range(row * 3, (row * 3) + 3): + for j in range(column * 3, (column * 3) + 3): + if num == board[i][j]: + return False + return True + +def emptyCell(board): + for row in range(9): + for column in range(9): + if board[row][column] == 0: + return (row,column) + return None + +def printBoard(board): + print(np.matrix(board)) + + + \ No newline at end of file From c252d341106235b73455b0023b1f573a3bbd6ea6 Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Sun, 9 Jul 2023 14:30:58 +0300 Subject: [PATCH 11/50] Add README.md --- 0x17-Sudoku/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 0x17-Sudoku/README.md diff --git a/0x17-Sudoku/README.md b/0x17-Sudoku/README.md new file mode 100644 index 0000000..e2aefb8 --- /dev/null +++ b/0x17-Sudoku/README.md @@ -0,0 +1,2 @@ +## Sudoku on Console +## Sudoku on GUI From ba3f933aac103b5b7452ac2838ccfdabfa287dc8 Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Sun, 9 Jul 2023 16:04:00 +0300 Subject: [PATCH 12/50] Update README.md --- 0x17-Sudoku/SudokuGui/README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/0x17-Sudoku/SudokuGui/README.md b/0x17-Sudoku/SudokuGui/README.md index dac94c7..3e72b59 100644 --- a/0x17-Sudoku/SudokuGui/README.md +++ b/0x17-Sudoku/SudokuGui/README.md @@ -3,10 +3,13 @@ Solve any Suduko puzzle using this solver GUI built using Python and Tkinter. The code uses a backtracking algorithm to solve the puzzle.

Running the Program

-There are two ways to run the program. The first of which involves using the GUI. Begin by importing gui.py into your IDE of choice. Then run the program and a window will appear. -Input your chosen Sudoku puzzle into the cells of the window. Leave any empty cells blank. Then simply click "solve" to complete the puzzle or "clear" to clear the puzzle.
-
+There are two ways to run the program. + +* The first of which involves using the GUI. Begin by importing gui.py into your IDE of choice. Then run the program and a window will appear. +* Input your chosen Sudoku puzzle into the cells of the window. Leave any empty cells blank. Then simply click "solve" to complete the puzzle or "clear" to clear the puzzle. Alternatively, you can run the program without a GUI using the solver.py script. Simply import the script into your IDE of choice. Then fill out the 2D board vector at the top of the file. Fill in empty cells with a zero. After filling in the board vector, you can run the program. The output will be printed to the console. +## Screenshot +![Screenshot from 2023-07-09 16-01-17](https://github.com/victorpreston/Python-CodeNest/assets/112781610/d56d7904-32db-4da3-8335-101a96de6e82) From aaa772bd34dd963f75d9190aac8b7245a7887bd6 Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Sun, 9 Jul 2023 16:05:32 +0300 Subject: [PATCH 13/50] [Update] README.md --- 0x17-Sudoku/SudokuGui/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/0x17-Sudoku/SudokuGui/README.md b/0x17-Sudoku/SudokuGui/README.md index 3e72b59..4d03391 100644 --- a/0x17-Sudoku/SudokuGui/README.md +++ b/0x17-Sudoku/SudokuGui/README.md @@ -6,9 +6,10 @@ The code uses a backtracking algorithm to solve the puzzle. There are two ways to run the program. * The first of which involves using the GUI. Begin by importing gui.py into your IDE of choice. Then run the program and a window will appear. -* Input your chosen Sudoku puzzle into the cells of the window. Leave any empty cells blank. Then simply click "solve" to complete the puzzle or "clear" to clear the puzzle. +* Input your chosen Sudoku puzzle into the cells of the window. Leave any empty cells blank. Then simply click `solve` to complete the puzzle or `clear` to clear the puzzle. + +Alternatively, you can run the program without a GUI using the `solver.py` script. Simply import the script into your IDE of choice. Then fill out the 2D board vector at the top of the file. -Alternatively, you can run the program without a GUI using the solver.py script. Simply import the script into your IDE of choice. Then fill out the 2D board vector at the top of the file. Fill in empty cells with a zero. After filling in the board vector, you can run the program. The output will be printed to the console. ## Screenshot ![Screenshot from 2023-07-09 16-01-17](https://github.com/victorpreston/Python-CodeNest/assets/112781610/d56d7904-32db-4da3-8335-101a96de6e82) From 07a808544d748775b08963984124e33325d884f7 Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Mon, 10 Jul 2023 13:17:20 +0300 Subject: [PATCH 14/50] Update README.md --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 70e021d..34ca9b5 100644 --- a/README.md +++ b/README.md @@ -38,10 +38,11 @@ ## User Guide Do you want to try these projects? Just clone the current repository and type the following commands in individual folder: - - -open in terminal - - python3 - - And it's all done ! +```css + open in terminal + python3 + And it's all done ! +``` ## Contributors Guide If you want to help me improve the repository, you can fork the project and add your own features or updates then pull request and add me as reviewer From decddd42f706231ba46b8e230ce8e70a52c15a39 Mon Sep 17 00:00:00 2001 From: Adedayo Onasanya Date: Wed, 2 Aug 2023 08:25:01 -0500 Subject: [PATCH 15/50] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 34ca9b5..cea0741 100644 --- a/README.md +++ b/README.md @@ -59,4 +59,4 @@ flowchart LR -### Enjoy python! +### Enjoy python! Adedayo A.Onasanya From 7365237b8ed07c88e136f304c6cb1465e158d45d Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Sun, 6 Aug 2023 23:40:54 +0300 Subject: [PATCH 16/50] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cea0741..9497da9 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ ## User Guide Do you want to try these projects? Just clone the current repository and type the following commands in individual folder: -```css +```groovy open in terminal python3 And it's all done ! From 58d11184830ef004e58e8c51b66cc6721a0338f8 Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Thu, 10 Aug 2023 23:24:44 +0300 Subject: [PATCH 17/50] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9497da9..84ec25d 100644 --- a/README.md +++ b/README.md @@ -59,4 +59,4 @@ flowchart LR -### Enjoy python! Adedayo A.Onasanya +### Enjoy python! From 419985a1fc56a62dd38936235c34b7cf8a33bc1a Mon Sep 17 00:00:00 2001 From: Xpert <112781610+victorpreston@users.noreply.github.com> Date: Sun, 27 Aug 2023 10:40:23 +0300 Subject: [PATCH 18/50] ...... --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 84ec25d..ec7904b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Python-CodeNest +# PyProjects ![1](https://github.com/victorpreston/Python-CodeNest/assets/112781610/dec8d192-a010-48c6-902b-3c4bd991150d) ## Description From 4f79816f618c60fe21985916bf64345d7a1d101a Mon Sep 17 00:00:00 2001 From: victorpreston Date: Sat, 20 Jan 2024 02:32:05 +0300 Subject: [PATCH 19/50] [Update] Code --- 0x22-YouTubeViewer/pythonVideo.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 0x22-YouTubeViewer/pythonVideo.py diff --git a/0x22-YouTubeViewer/pythonVideo.py b/0x22-YouTubeViewer/pythonVideo.py new file mode 100644 index 0000000..396a048 --- /dev/null +++ b/0x22-YouTubeViewer/pythonVideo.py @@ -0,0 +1,11 @@ +import vlc + +import pafy + +url = "https://www.youtube.com/watch?v=LA9tjiiAvN0&pp=ygUjcGFydGl0aWlvbmluZyBzdG9yYWdlIG9uIHdpbmRvd3MgMTE%3D" + +video = pafy.new(url) +best = video.getbest() +media = vlc.MediaPlayer(best.url) + +media.play() \ No newline at end of file From 80ca605f4bacbcf8152a23a065b228c5ce7e8ac8 Mon Sep 17 00:00:00 2001 From: victorpreston Date: Sat, 20 Jan 2024 14:53:12 +0300 Subject: [PATCH 20/50] [Update] Code --- 0x23-WebCloner/README.md | 12 +++++++ 0x23-WebCloner/webcloner.py | 70 +++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 0x23-WebCloner/README.md create mode 100644 0x23-WebCloner/webcloner.py diff --git a/0x23-WebCloner/README.md b/0x23-WebCloner/README.md new file mode 100644 index 0000000..8961393 --- /dev/null +++ b/0x23-WebCloner/README.md @@ -0,0 +1,12 @@ +Website cloner | Python +Website cloner is CLI tool to download website using python requests library. + +Modules + 1. os + 2. sys + 3. requests +How to Run + +``` +python website_cloner.py +``` \ No newline at end of file diff --git a/0x23-WebCloner/webcloner.py b/0x23-WebCloner/webcloner.py new file mode 100644 index 0000000..ac40ad3 --- /dev/null +++ b/0x23-WebCloner/webcloner.py @@ -0,0 +1,70 @@ +"""" + Program name : Website cloner + author : https://github.com/codeperfectplus + How to use : Check README.md + """ + +import os +import sys +import requests +from bs4 import BeautifulSoup + + +class CloneWebsite: + def __init__(self, website_name): + self.website_name = website_name + + def crawl_website(self): + """ This function will crawl website and return content""" + content = requests.get(website_name) + if content.status_code == 200: + return content + + def create_folder(self): + """ This function will create folder for website """ + folder_name = (website_name.split("/"))[2] + try: + os.makedirs(folder_name) + except Exception as e: + print(e) + return folder_name + + def save_website(self): + """ This function will save website to respective folder """ + folder_name = self.create_folder() + content = self.crawl_website() + with open( + f"{folder_name}/index.html", "w", encoding="ascii", errors="ignore" + ) as file: + file.write(content.text) + + def save_image(self): + folder_name = self.create_folder() + os.chdir(folder_name) + data = requests.get(website_name).text + soup = BeautifulSoup(data, "html.parser") + for img in soup.find_all("img"): + src = img["src"] + print(src) + image_name = src.split("/")[-1] + path = src.split("/")[:-1] + path = "/".join(path) + try: + os.makedirs(path) + except Exception: + print("File Exists") + + if "/" == src[:1]: + print(src) + src = website_name + src + img_data = requests.get(src).content + with open(f"{path}/{image_name}", "wb") as file: + file.write(img_data) + print("complete") + + +if __name__ == "__main__": + website_name = sys.argv[1] + clone = CloneWebsite(website_name) + clone.save_website() + clone.save_image() \ No newline at end of file From d71b939a1e60135b5a788f3bb0ed45b61dd1efb7 Mon Sep 17 00:00:00 2001 From: victorpreston Date: Sat, 20 Jan 2024 18:26:42 +0300 Subject: [PATCH 21/50] [Update] Code --- 0x23-WebCloner/webcloner.py | 107 ++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 54 deletions(-) diff --git a/0x23-WebCloner/webcloner.py b/0x23-WebCloner/webcloner.py index ac40ad3..9775ad7 100644 --- a/0x23-WebCloner/webcloner.py +++ b/0x23-WebCloner/webcloner.py @@ -1,70 +1,69 @@ -"""" - Program name : Website cloner - author : https://github.com/codeperfectplus - How to use : Check README.md - """ - import os import sys import requests from bs4 import BeautifulSoup - +from urllib.parse import urljoin, urlparse class CloneWebsite: - def __init__(self, website_name): - self.website_name = website_name + def __init__(self, website_url): + self.website_url = website_url + self.domain_name = urlparse(website_url).netloc + self.visited_urls = set() - def crawl_website(self): - """ This function will crawl website and return content""" - content = requests.get(website_name) - if content.status_code == 200: - return content + def get_full_url(self, path): + return urljoin(self.website_url, path) - def create_folder(self): - """ This function will create folder for website """ - folder_name = (website_name.split("/"))[2] + def valid_url(self, url): + return urlparse(url).netloc == self.domain_name + + def save_content(self, url, path): try: - os.makedirs(folder_name) + response = requests.get(url, stream=True) + if response.status_code == 200: + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, 'wb') as file: + for chunk in response.iter_content(chunk_size=8192): + file.write(chunk) except Exception as e: - print(e) - return folder_name + print(f"Error saving {url}: {e}") + + def crawl_website(self, url=None): + if url is None: + url = self.website_url - def save_website(self): - """ This function will save website to respective folder """ - folder_name = self.create_folder() - content = self.crawl_website() - with open( - f"{folder_name}/index.html", "w", encoding="ascii", errors="ignore" - ) as file: - file.write(content.text) + if url in self.visited_urls: + return + self.visited_urls.add(url) + + try: + response = requests.get(url) + if response.status_code != 200: + return + except Exception as e: + print(f"Error accessing {url}: {e}") + return - def save_image(self): - folder_name = self.create_folder() - os.chdir(folder_name) - data = requests.get(website_name).text - soup = BeautifulSoup(data, "html.parser") - for img in soup.find_all("img"): - src = img["src"] - print(src) - image_name = src.split("/")[-1] - path = src.split("/")[:-1] - path = "/".join(path) - try: - os.makedirs(path) - except Exception: - print("File Exists") + soup = BeautifulSoup(response.text, 'html.parser') - if "/" == src[:1]: - print(src) - src = website_name + src - img_data = requests.get(src).content - with open(f"{path}/{image_name}", "wb") as file: - file.write(img_data) - print("complete") + # Save the current page + path = urlparse(url).path + if not path.endswith('.html'): + path = os.path.join(path, 'index.html') + self.save_content(url, os.path.join(self.domain_name, path.lstrip('/'))) + # Extract and save all linked resources + for tag, attribute in [('img', 'src'), ('script', 'src'), ('link', 'href'), ('a', 'href')]: + for resource in soup.find_all(tag): + if attribute in resource.attrs: + resource_url = self.get_full_url(resource[attribute]) + if self.valid_url(resource_url): + file_path = os.path.join(self.domain_name, urlparse(resource_url).path.lstrip('/')) + if resource_url.endswith('.html'): + self.crawl_website(resource_url) + else: + self.save_content(resource_url, file_path) if __name__ == "__main__": - website_name = sys.argv[1] - clone = CloneWebsite(website_name) - clone.save_website() - clone.save_image() \ No newline at end of file + website_url = sys.argv[1] + clone = CloneWebsite(website_url) + clone.crawl_website() \ No newline at end of file From 173956b556a61423c0150b28f25c2ba6e37a9b74 Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Tue, 23 Apr 2024 23:09:31 +0300 Subject: [PATCH 22/50] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ec7904b..589691d 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ | Number | Directory | |--------|------| -| 1 | [Dice simulator](https://github.com/victorpreston/Python-CodeNest/tree/master/0x01-Dice) | +| 1 | [Dice simulator](./0x01-Dice) | | 2 | [Dictionary](https://github.com/victorpreston/Python-CodeNest/tree/master/0x02-Dictionary) | | 3 | [Hanging man](https://github.com/victorpreston/Python-CodeNest/tree/master/0x03-HangingMan) | | 4 | [TicTacToe](https://github.com/victorpreston/Python-CodeNest/tree/master/0x04-TicTacToe) | From 42323206af63dd91e4bf93253f6f4daaabf21fef Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Tue, 23 Apr 2024 23:15:25 +0300 Subject: [PATCH 23/50] update readme: --- README.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 589691d..77082e3 100644 --- a/README.md +++ b/README.md @@ -12,26 +12,26 @@ | Number | Directory | |--------|------| | 1 | [Dice simulator](./0x01-Dice) | -| 2 | [Dictionary](https://github.com/victorpreston/Python-CodeNest/tree/master/0x02-Dictionary) | -| 3 | [Hanging man](https://github.com/victorpreston/Python-CodeNest/tree/master/0x03-HangingMan) | -| 4 | [TicTacToe](https://github.com/victorpreston/Python-CodeNest/tree/master/0x04-TicTacToe) | -| 5 | [Conditionals](https://github.com/victorpreston/Python-CodeNest/tree/master/0x05-Conditional) | -| 6 | [Decrements](https://github.com/victorpreston/Python-CodeNest/tree/master/0x06-Decrement) | -| 7 | [Face detection](https://github.com/victorpreston/Python-CodeNest/tree/master/0x07-Face_detection) | -| 8 | [Password generator](https://github.com/victorpreston/Python-CodeNest/tree/master/0x08-Passcode-generator) | -| 9 | [Shutdown](https://github.com/victorpreston/Python-CodeNest/tree/master/0x09-Shutdown) | -| 10 | [Simple browser](https://github.com/victorpreston/Python-CodeNest/tree/master/0x10-Simple-browser) | -| 11 | [Text to speech](https://github.com/victorpreston/Python-CodeNest/tree/master/0x11-Text-to-Speech) | -| 12 | [Weather finder](https://github.com/victorpreston/Python-CodeNest/tree/master/0x12-Weather-finder) | -| 13 | [Web server](https://github.com/victorpreston/Python-CodeNest/tree/master/0x13-Web_server) | -| 14 | [Shuffle](https://github.com/victorpreston/Python-CodeNest/tree/master/0x14-Shuffle) | -| 15 | [Audio Book](https://github.com/victorpreston/Python-CodeNest/tree/master/0x15-Audio-Book) | -| 16 | [QR Generator](https://github.com/victorpreston/Python-CodeNest/tree/master/0x16-QR-Generator) | -| 17 | [Sudoku](https://github.com/victorpreston/Python-CodeNest/tree/master/0x17-Sudoku) | -| 18 | [URL Web Scrapper](https://github.com/victorpreston/Python-CodeNest/tree/master/0x18-Url-Web-Scraper) | -| 19 | [Phone Tracker](https://github.com/victorpreston/Python-CodeNest/tree/master/0x19-Phone-Tracker) | -| 20 | [Automated Mailing](https://github.com/victorpreston/Python-CodeNest/tree/master/0x20-AutomatedMailing) | -| 21 | [Text Editor](https://github.com/victorpreston/Python-CodeNest/tree/master/0x21TextEditor) | +| 2 | [Dictionary](./0x02-Dictionary) | +| 3 | [Hanging man](./0x03-HangingMan) | +| 4 | [TicTacToe](./0x04-TicTacToe) | +| 5 | [Conditionals](./0x05-Conditional) | +| 6 | [Decrements](./0x06-Decrement) | +| 7 | [Face detection](./0x07-Face_detection) | +| 8 | [Password generator](./0x08-Passcode-generator) | +| 9 | [Shutdown](./0x09-Shutdown) | +| 10 | [Simple browser](./0x10-Simple-browser) | +| 11 | [Text to speech](./0x11-Text-to-Speech) | +| 12 | [Weather finder](./0x12-Weather-finder) | +| 13 | [Web server](./0x13-Web_server) | +| 14 | [Shuffle](./0x14-Shuffle) | +| 15 | [Audio Book](./0x15-Audio-Book) | +| 16 | [QR Generator](./0x16-QR-Generator) | +| 17 | [Sudoku](./0x17-Sudoku) | +| 18 | [URL Web Scrapper](./0x18-Url-Web-Scraper) | +| 19 | [Phone Tracker](./0x19-Phone-Tracker) | +| 20 | [Automated Mailing](./0x20-AutomatedMailing) | +| 21 | [Text Editor](./0x21TextEditor) | From 5627a5025201918589baea0cb2ca208dcc836b34 Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Mon, 29 Apr 2024 05:38:09 +0300 Subject: [PATCH 24/50] update: readme --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 77082e3..09c475d 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ # PyProjects -![1](https://github.com/victorpreston/Python-CodeNest/assets/112781610/dec8d192-a010-48c6-902b-3c4bd991150d) ## Description - Unlock your coding potential with my personally crafted Python projects. Level up your skills now by diving in and exploring the fruits of my python coding journey + >Unlock your coding potential with crafted Python projects. Level up your skills now by diving in and exploring the python coding journey Here in this repository, you will find a set of python projects from simple to complex most of time working in the console and sometime with GUI. From d578d7e249b9efd24df7dcb762d92b065ed68acd Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Mon, 29 Apr 2024 05:43:19 +0300 Subject: [PATCH 25/50] update: readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 09c475d..f43d99b 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ ## Description >Unlock your coding potential with crafted Python projects. Level up your skills now by diving in and exploring the python coding journey - Here in this repository, you will find a set of python projects from simple to complex - most of time working in the console and sometime with GUI. + >Here in this repository, you will find a set of python projects from simple to complex + >most of time working in the console and sometime with GUI. ## Projects list From 8c84723e850e5080561a1b43b757e53b8c50e5b8 Mon Sep 17 00:00:00 2001 From: Atughara2021 Date: Fri, 3 May 2024 11:11:24 +0600 Subject: [PATCH 26/50] chess game --- 0x24-Chess_Game/ChessGame.py | 152 ++++++++++++++++++++++++++++++++++ 0x24-Chess_Game/images/bB.png | Bin 0 -> 1260 bytes 0x24-Chess_Game/images/bK.png | Bin 0 -> 2485 bytes 0x24-Chess_Game/images/bN.png | Bin 0 -> 1516 bytes 0x24-Chess_Game/images/bQ.png | Bin 0 -> 2267 bytes 0x24-Chess_Game/images/bR.png | Bin 0 -> 725 bytes 0x24-Chess_Game/images/bp.png | Bin 0 -> 797 bytes 0x24-Chess_Game/images/wB.png | Bin 0 -> 1944 bytes 0x24-Chess_Game/images/wK.png | Bin 0 -> 2279 bytes 0x24-Chess_Game/images/wN.png | Bin 0 -> 1878 bytes 0x24-Chess_Game/images/wQ.png | Bin 0 -> 2637 bytes 0x24-Chess_Game/images/wR.png | Bin 0 -> 933 bytes 0x24-Chess_Game/images/wp.png | Bin 0 -> 1294 bytes 13 files changed, 152 insertions(+) create mode 100644 0x24-Chess_Game/ChessGame.py create mode 100644 0x24-Chess_Game/images/bB.png create mode 100644 0x24-Chess_Game/images/bK.png create mode 100644 0x24-Chess_Game/images/bN.png create mode 100644 0x24-Chess_Game/images/bQ.png create mode 100644 0x24-Chess_Game/images/bR.png create mode 100644 0x24-Chess_Game/images/bp.png create mode 100644 0x24-Chess_Game/images/wB.png create mode 100644 0x24-Chess_Game/images/wK.png create mode 100644 0x24-Chess_Game/images/wN.png create mode 100644 0x24-Chess_Game/images/wQ.png create mode 100644 0x24-Chess_Game/images/wR.png create mode 100644 0x24-Chess_Game/images/wp.png diff --git a/0x24-Chess_Game/ChessGame.py b/0x24-Chess_Game/ChessGame.py new file mode 100644 index 0000000..5a36191 --- /dev/null +++ b/0x24-Chess_Game/ChessGame.py @@ -0,0 +1,152 @@ +import pygame as p +import ChessEngine + +WIDTH = HEIGHT = 512 +DIMENSIONS = 8 +SQ_SIZE = HEIGHT// DIMENSIONS +MAX_FPS = 15 +IMAGES = {} + +def loadImages(): + pieces = ['wp', 'wR', 'wN', 'wB', 'wQ', 'wK', 'bp', 'bR', 'bN', 'bB', 'bQ', 'bK' ] + for piece in pieces: + IMAGES[piece] = p.transform.scale(p.image.load("images/" + piece + ".png"), (SQ_SIZE, SQ_SIZE)) + +def main(): + p.init() + screen = p.display.set_mode((WIDTH, HEIGHT)) + clock = p.time.Clock() + screen.fill(p.Color("white")) + gs = ChessEngine.GameState() + validMoves = gs.getValidMoves() + moveMade = False + animate = False + loadImages() + running = True + sqSelected = () + playerClicks = [] + gameOver = False + while running: + for e in p.event.get(): + if e.type == p.QUIT: + running = False + elif e.type == p.MOUSEBUTTONDOWN: + if not gameOver: + location = p.mouse.get_pos() + col = location[0]//SQ_SIZE + row = location[1]//SQ_SIZE + if sqSelected == (row, col): + sqSelected = () + playerClicks = [] + else: + sqSelected = (row, col) + playerClicks.append(sqSelected) + if len(playerClicks) == 1 and (gs.board[row][col] == "--"): + sqSelected = () + playerClicks = [] + if len(playerClicks) == 2: + move = ChessEngine.Move(playerClicks[0], playerClicks[1], gs.board) + for i in range(len(validMoves)): + if move == validMoves[i]: + gs.makeMove(move) + moveMade = True + animate = True + sqSelected = () + playerClicks = [] + if not moveMade: + playerClicks = [sqSelected] + elif e.type == p.KEYDOWN: + if e.key == p.K_z: + gs.undoMove() + moveMade = True + animate = False + if e.key == p.K_r: + gs = ChessEngine.GameState() + validMoves = gs.getValidMoves() + sqSelected = () + playerClicks = [] + moveMade = False + animate = False + if moveMade: + if animate: + animatedMoves(gs.moveLog[-1], screen, gs.board,clock) + validMoves = gs.getValidMoves() + moveMade = False + animate = False + drawGameState(screen, gs, validMoves, sqSelected) + if gs.checkMate: + gameOver = True + if gs.whiteToMove: + drawText(screen, 'Black wins by checkmate') + else: + drawText(screen, 'White wins by checkmate') + elif gs.staleMate: + gameOver =True + drawText(screen, 'Stalemate'); + clock.tick(MAX_FPS) + p.display.flip() + +def highlightSquares(screen, gs, validMoves, sqSelected): + if sqSelected != (): + r, c = sqSelected + if gs.board[r][c][0] == ('w' if gs.whiteToMove else 'b'): + s = p.Surface((SQ_SIZE, SQ_SIZE)) + s.set_alpha(100) + s.fill(p.Color('blue')) + screen.blit(s, (c*SQ_SIZE, r*SQ_SIZE)) + s.fill(p.Color("yellow")) + for moves in validMoves: + if moves.startRow == r and moves.startCol == c: + screen.blit(s, (SQ_SIZE*moves.endCol, SQ_SIZE*moves.endRow)) + +def drawGameState(screen, gs, validMoves, sqSelected): + drawBoard(screen) + highlightSquares(screen, gs, validMoves, sqSelected) + drawPieces(screen, gs.board) + +def drawBoard(screen): + global colors + colors = [p.Color("white"), p.Color("grey")] + for r in range(DIMENSIONS): + for c in range(DIMENSIONS): + color = colors[(r+c) % 2] + p.draw.rect(screen, color, p.Rect(c*SQ_SIZE, r*SQ_SIZE, SQ_SIZE, SQ_SIZE)) + +def drawPieces(screen, board): + for r in range(DIMENSIONS): + for c in range(DIMENSIONS): + piece = board[r][c] + if piece != "--": + screen.blit(IMAGES[piece], p.Rect(c*SQ_SIZE, r*SQ_SIZE, SQ_SIZE, SQ_SIZE)) + +def animatedMoves(move, screen,board, clock): + global colors + dR = move.endRow - move.startRow + dC = move.endCol - move.startCol + framesPerSquare = 5 + frameCount = (abs(dR) + abs(dC)) * framesPerSquare + for frame in range(frameCount + 1): + r,c =((move.startRow + dR*frame/frameCount, move.startCol + dC*frame/frameCount)) + drawBoard(screen) + drawPieces(screen, board) + color = colors[(move.endRow + move.endCol)%2] + endSquare = p.Rect(move.endCol*SQ_SIZE, move.endRow*SQ_SIZE, SQ_SIZE, SQ_SIZE) + p.draw.rect(screen, color, endSquare) + if move.pieceCaptured != "--": + screen.blit(IMAGES[move.pieceCaptured], endSquare) + + screen.blit(IMAGES[move.pieceMoved], p.Rect(c*SQ_SIZE, r*SQ_SIZE, SQ_SIZE, SQ_SIZE)) + p.display.flip() + clock.tick(60) + +def drawText(screen, text): + font = p.font.SysFont("Helvitca", 32, True, False) + textObject = font.render(text, True, p.Color('Gray')) + textLocation = p.Rect(0, 0, WIDTH, HEIGHT).move(WIDTH/2 - textObject.get_width()/2, HEIGHT/2 - textObject.get_height()/2) + screen.blit(textObject, textLocation) + textObject = font.render(text, True, p.Color("Black")) + screen.blit(textObject, textLocation.move(2,2)) + + +if __name__ == "__main__": + main() diff --git a/0x24-Chess_Game/images/bB.png b/0x24-Chess_Game/images/bB.png new file mode 100644 index 0000000000000000000000000000000000000000..453cb32355348ceadcc41e5c371130e7be1dc45e GIT binary patch literal 1260 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 S+beef0000(5~dA8 zrJ=07jv?R&VRuhI+}&mOdhXp9F%|HauI}v2|DHK#&YYRKGj~N*d6F>cQ7bUfcxv$D zj;97c?kJnc%0y%;unkxO^aJmyYIs6*D0NyAkuLyCf!V+%RXyjxdjU8F)MsQX@TRK1 zP6#(TXKeO0w& zgToF+ylvo~ci<}UJsWp6aL2$)0L`W7T=bwNBGZA8L-7v`d1Ef(>}B5trkbh+*5_2t z1&#)bNP~#HDk3XIWQu{}bCLVJ;hDcUa0h{t1;{p*<)Nh4&)n!PBVk zI1j7pHDCeo2Ox7Pcg3ZZ%Wc13bKu!Mxsl1zUFybt^Y_?eNN zV}N;y>?y=)RQ(Rwt$QEv8+d-w8Bj z{I)yCh++(`0uJP%5M(RwWboY7+E+woVvYEAWXTtig}`zxzIMPw4zs65$Fu9!p5 zz|1jGCnxs}IKPqn8|VG1)HR%=JOPa4;QYd+>~cPK7+((^44#`qnb92O594yH z&Ua7ia?%4%cqUIdrNFI@yhdoq^W;HQgwX| zUDIL@aNh4WqM*Yx5qSgH4=`uW99mjhXlZF76beyWTbsol8yib|FcOJmrK8a(9*-yO zai7nJ-|tVStE#H7R+(-7mvpo92{g| zU|`&pT4{N`UgKpS^+!fV(mml~~w6ye?7Ca+ANKHb$Tg&@z~^2UUC zxV*gl#{T{L>*Db^ot>S8!(ndSx@F=~Q&WT2>m7HmuC8WeWQ1rmN;Dcxdp&i(eS7@U zSVWjVe?G0PtpoxA4j(@JaYskT%z~7M!aZDHU;jZY7E6007K>?5Pmk`}wM(0uo3)~% z;-QVmvu4fGjT<*=dwaV^B9W|KaOlvX!HJ6Dz@kNq{<>z(n#$JJR+cYcPDRCoZRz3R zVY<4yxO(*}H*ek~5{VFrM6%Mu!^2FPG>Mv;8ft56@%#Pw{r+^iwzig~OPA8v*qBxK z_3PKuYwV*(k8T?p8Zv&e_)tBZY@jBrec&;V$D^xPuhzYL_v+cRXY-2P;o)J;>?KYZ z8XD4$jt#Yd{0?e2(Bkj4=`)(@j z@pwoi5)2Lwrr(uQ-cO}3Uc5+eZ*M#vkDmcLu|9L`Qq|#-^exrkaRRO5kPy&-^%afR zcCYYwJlwl?k9a(;Si2|#Sf3N8?l*xCfcI6^ajT;!{T{Z#IV%)-4yeZ3SRYW;*o4+U p(FQ+iJaK;kcxv$DjwjCG{{ez+xA)Q`_t5|V002ovPDHLkV1l?JR_*`* literal 0 HcmV?d00001 diff --git a/0x24-Chess_Game/images/bR.png b/0x24-Chess_Game/images/bR.png new file mode 100644 index 0000000000000000000000000000000000000000..b9748e87f29861cb4ca00c7ce03df54f3f6b35a0 GIT binary patch literal 725 zcmV;`0xJE9P)qB%30rm0>sTv+%?-hTEN)&BmLZAG~72o44=V znRzoiS&9gXgtzMi^2Q0a9Vgg!oM78=f^A1zFv$|h_atS59g(DhzmWVy^2&z$9FmOF z`X?eHS_YsEK+dqMiv9xN{)YPmD*j1!LHP-#=Pt=_r>+lDv}uyOxAt2p!<@F-!+Dr; z54)meJLg?6lU@GCMDQiw_qA()sm0ER3Ui?5^6 z=%$E#QEF)NlmYAkc!B(@^E&{Sb#m73;nR?O0N`oA-}jo$rg6MYOs7+HIvt3}0Kg*= z`JodhlZ}UnJR`XuMbVSxa+yWQe+a`6BJxT^9vTJ8s)!(;jfnC_!)-ivoj~3=!M5WB z+l~`#J5I3eIKj5#1lvxQ2k{phjRxxVdWIqY5Cj2y-!B^n%J6;oweS0~EoQTsko;(z zXGUUg0SJ-LdDb11T#bh`$x@|Kc{3Oc_R3}R5qB1G9HZCky(D>CM2>Z0WHE=|u2!pq zFbuJ+^Q_-QQG_rID*!%_tc%EZ)fmR7mLvlJRihw!ToaK%wNc@grNRj|p2O8@)oZug zSo^|ZtBl8EOePb(#u`h|A%GYs%S5-^HD6>E84ic*OVtrh>QRy@7p)x@sU%VrvBJ$^ zC)jp$1V6^FLh(QG9Kbw{V}!$9&8%1e zBftZ|7R4-Z1y~(jgGy~JB^?It1A|Kpn*k1)+4rbAirmAJ27wza4GS;|T#c-y)S@*B z?5a5SoTPnGg_Ht55ESpNC@KRpJHo7t>qO<^6DGyqIf4;J7kjqRqZ!a6MJ3~)2k z<`=Nt%sxAm1jOFM7acs-0OuWi78C+3X#;S;$?k-c4-nVks{7_D+U@8S2E5JDYgm%J z%%XtbI(p5R@US}7_Jsi)g zBVe~W!Zza;^DjDW1q`eQUOB@y<62t*0|UUrAlPP1v=i`DFs#uy?;2}4FpX1EMy7 z<}NN-S-_G;2>kH1jK=FE<#zaBW`2%FC9O+MTFJnxfc>dSxxk~D`MFA-KNol?Ge1|! z^Y?%gwK+3CSIP6&2A=;qn7m3lD|tJc^XuUpt$PMH^({4_*q?aqqOSX!wg=ql>H&AU bx(@gc{sH)y$U_yZ00000NkvXXu0mjfw8>#< literal 0 HcmV?d00001 diff --git a/0x24-Chess_Game/images/wB.png b/0x24-Chess_Game/images/wB.png new file mode 100644 index 0000000000000000000000000000000000000000..26dae01cf054534b4f5c56ac60f334a7ab575f10 GIT binary patch literal 1944 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
    sH;c-=<)10)l{ab#=+m(2zX(=%YIJFBW6}1CY&| zH%llKlCG{U9UBC0x+;VL2XJc^{j-3qUAxvGymIAA-LNMu@W0bNrIgZf382{mI|Rrl zpL}ABy-IA(P zO4)!V02?=M)K4$78b>L$3~0$UpC(^u$4SlJBfz~P@>v=(N50vBMO?nihjV#&_3G6+ zcB=)Z36T2wdO3RZXx737><8qw+iuGh(qHFto*yU2q9iL}6X~dl^tx<>O)H|$EHE8_ zw70iQC=}AeFRgF^ULd5DlASwu<|6#I$+rEu_~d*&6p<<5r0LXNrBrz){KF4F%-p$i z0hTJInp4!v0G2IVhR5Tfv9S@7i;=}CxW@p`s#U9KXlTf2n^NlgK%425KL?$>--rER zdD3!CQv zdGNsp#qDkLdd92UFXZWJ!yRv>1#+oiX+S41Su z!+?uqO_7~DcgjZ}eWdF@&WlT)gl%ZyI6OQoKA+EQ=prk^;c!^IUaxMoufF=Ku752bE_sEtxl*4vae|hX7M^*OXHB)N9Jh%2>aCz5a6(DFsWHmKI}e(E|J!G8ZeQR1@%=&1Pf&{{1+ePW*nO zFz2k$I+=XE{AWP+?b|0JBB4;oyeQa4iibr+d_JG9zeGyG(q+${Jv!zKK+b)ii@lZzh(6_wLCz>do0~a(`ZOaWBUDsW z;PrZ^joIGb&I1oTaM_^Cw&Y%LXreUlv|}FFo06(6mWY!Sf|rTSy>q# zj|Y#(lh!XODIpSx5Q#(xhr@)!;c5M7G|JS}RKBL|5Ru>H11uz@0s4X4l~T-~KcBj~ zI_m4|(~k4!&&TO>7C3aegu`LZojXT&cQ2V4YX$BrGdO3*B$qod{(TG~EVwpLIM z11P2L1^x**4jw#6dwaW~OC%EX^z;x21c*kX#N%<|@i?(q%;@XC6Nv;amkXE6MQLfN z(KrA0dcD-v)>2tnIV~dF+S+*Mop&Hvoxd$2p}g%cl(0tnNnlS&NeOG#tRWZ-(%s!n zUtb@SlamFHmrKgZ%BZcarLL}y3l}cn^Z6jT74t0-IbD$L#SjKiO1(#NF=B|_Zl}7s znwpv#JRZ+9&!zSq4u@p~nERnnh_h$UGB7Y;Wx{ z0jjF1=)}K3fE;ThZ z)7qRla~K&JacI#smff@~9MYPH{{ zg$pS!FE>1v+8hpt;c>I)qtPglNQ8lb0eX9T>FMb)q9ziF=+j*!xs4Ji*zh7f+W<`1 z?RM$x?373(a-~u=tMvExOKWSZ?&V(>WqXl?e+kHj4I5^Ks96pjI;0bRuNd14{$rZ9 zA@)N^?lR1_xZQ5O+n|&xyyzBshk&(^+~kVIVzcI1U1G7A+;PVpx|cT;YJV|*Jsby^ zoSek(_nQmJRTmK<7!0y#(IWj+MWJI9^YY*X{)1_^V9uO5R99CUt*WYu%F0UPIcwGQ zrDZG@vuxpTnDgh)69@$8>+7ShuaExze#Xbg^=Zd}77_WpAOeMkgm!~&Ci&U+ED&cF zp24OT1U?7aim|=u=ddo?x2_7H8mQ7*HOXz0Qj6x&jt=c+#Y{(YivWW_AIUE*eL$ax vglA;$ObP$L$&G)+U+;2*@bxZVIl}(~G3Pqk!(KD#00000NkvXXu0mjfsr>;1 literal 0 HcmV?d00001 diff --git a/0x24-Chess_Game/images/wR.png b/0x24-Chess_Game/images/wR.png new file mode 100644 index 0000000000000000000000000000000000000000..a805de496f4d152dd02026bed09b45548b6e88d8 GIT binary patch literal 933 zcmV;W16urvP) zn!ERY_xs*^_wL^BS5ZpQNp!V4fSV=|>~{jeekTy@cLKqFM_aInSR(RXM3jRqiHNvp zuSDdFh}?F#&a{ZsTW#MIrIeNdV}QECVlLY&;HATL%5K^>GtW~xlgV6gI503^pL!x9 zPi+GpI<;3ykdU~)d z%Se321+TBKGdnv=yWs!tE;Q7 z`dF65;^Ly|P#p0rxLhu?wzg&>mX_Ju+tcstVU>PH^Huk{ZP{(yqMPv$kuZ=4?u5f( z#>dC$?d{d_)he}Gjm^zX4i66jegH#Cse&sfx+8pcqxyi)fJ!ElDxc4*>*DC>NR5n) z*dx0S+|`L$dxUL7q!0K2j3kpu=H})Ig^aI-EG#UrwY3HC6&O=W?d$mQEExWX{uGTy zhlYoT&wqRvp<1o7ySq!JQYiutbj1SRru1La`!S$0nT+x2oXuwKsr<@ooF;cmKMne7 zMAfTOSK5bSpX!G0$Y>~{jeey8IEo7}1Q0PO7SFflP<&@JS0Is0eCt1pv+ zp97@RX(lHp4Z4L$B*Mzd3Y;bmFDJI$U}*E70%~1dU21!K+js(?R4S=xG-@XS9(jq? z^9YNG1-t`7gM)(<3Iz%UcZtMS7#$sDV`BqgSw!wDrM_u7GBCOyx#4`YhK}5=c+0ud;;!3GU1TJHnm@pvR2k7wMpc6WEh@AvCX>%$wn zX(^>11J40G9uM(&JY&1JZ{Ol}|9j&1gHp<#-?7b=Ee2i#5(%9u4ZFnL&D*( zuJR^OW_c!?g?|R5si{d04i2))YL1SMq@$xlOHbSwVa_iMq^PJ!*4EapB&$gz5>i@P zs--)u%w^|q_)CD^-d<{JYYlY_27~nX_v^P`S(?hm3a9)6=767lEQ1Bh2~!@CEQEAa1u?#>U37 z3P+<+@p`>l_%GmVz@7KPz(Zj6BDi#Qb;;u5Vpdtr>guX=cXy}XuU-Hu@>Uq|0>1)M zRaGUUqoY?6{V(I=<5E{wr=?#4{=5?g6fmkcsyA=mOFz#WVW5YL`&N-i#1dJ}+}xb_d_FDxdAlamvvsj1P@ALp9Ys&naY;QX%?pU-E}ke4YaC}41K z@X~xaVL^2pfwRKGLP;bNwp3ShaBv`jKtNad>2+0j2vE+92R zzs+e73o5(=$nx^Ct<}|RZ*PmsFW;CEIG&eV!9L5-F^M#D|H7i^SP+necau{Qz&G*P?U$erG;L`0> zM@XB`u&}8c@k*&_puM)X7Qf%0^EgIHrBbY{tN^?c5kt$`?2~v80oK>oO%7vjej}I_ z{*?0z{_7(9Ln9e*>`A Date: Fri, 3 May 2024 12:16:24 +0600 Subject: [PATCH 27/50] chess engine added --- 0x24-Chess_Game/ChessEngine.py | 222 +++++++++++++++++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 0x24-Chess_Game/ChessEngine.py diff --git a/0x24-Chess_Game/ChessEngine.py b/0x24-Chess_Game/ChessEngine.py new file mode 100644 index 0000000..3355cc8 --- /dev/null +++ b/0x24-Chess_Game/ChessEngine.py @@ -0,0 +1,222 @@ + +class GameState: + + def __init__(self): + self.board = [ + ["bR", "bN", "bB", "bQ", "bK", "bB", "bN", "bR"], + ["bp", "bp", "bp", "bp", "bp", "bp", "bp", "bp"], + ["--", "--", "--", "--", "--", "--", "--", "--"], + ["--", "--", "--", "--", "--", "--", "--", "--"], + ["--", "--", "--", "--", "--", "--", "--", "--"], + ["--", "--", "--", "--", "--", "--", "--", "--"], + ["wp", "wp", "wp", "wp", "wp", "wp", "wp", "wp"], + ["wR", "wN", "wB", "wQ", "wK", "wB", "wN", "wR"]] + self.moveFunctions = {'p': self.getPawnMoves, 'R': self.getRookMoves, 'N': self.getKnightMoves, + 'B': self.getBishopMoves, 'Q': self.getQueenMoves, 'K': self.getKingMoves} + self.whiteToMove = True, + self.moveLog = [] + self.whiteKingLocation = (7, 4) + self.blackKingLocation = (0, 4) + self.checkMate = False + self.staleMate = False + + def makeMove(self, move): + self.board[move.startRow][move.startCol] = "--" + self.board[move.endRow][move.endCol] = move.pieceMoved + self.moveLog.append(move) + self.whiteToMove = not self.whiteToMove + if move.pieceMoved == "wK": + self.whiteKingLocation = (move.endRow, move.endCol) + elif move.pieceMoved == "bK": + self.blackKingLocation = (move.endRow, move.endCol) + + if move.isPawnPromotion: + self.board[move.endRow][move.endCol] = move.pieceMoved[0] + "Q" + + + def undoMove(self): + if len(self.moveLog) != 0: + move = self.moveLog.pop() + self.board[move.startRow][move.startCol] = move.pieceMoved + self.board[move.endRow][move.endCol] = move.pieceCaptured + self.whiteToMove = not self.whiteToMove + if move.pieceMoved == "wK": + self.whiteKingLocation = (move.startRow, move.startCol) + if move.pieceMoved == "bK": + self.blackKingLocation = (move.startRow, move.startCol) + """ + All move considering checks + """ + def getValidMoves(self): + moves = self.getAllPossibleMoves() + for i in range(len(moves)-1, -1, -1): + self.makeMove(moves[i]) + self.whiteToMove = not self.whiteToMove + if self.inCheck(): + moves.remove(moves[i]) + self.whiteToMove = not self.whiteToMove + self.undoMove() + if len(moves) == 0: + if self.inCheck(): + self.checkMate = True + else: + self.staleMate = True + else: + self.checkMate = False + self.staleMate = False + + return moves + + def inCheck(self): + if self.whiteToMove: + return self.squareUnderAttack(self.whiteKingLocation[0], self.whiteKingLocation[1]) + else: + return self.squareUnderAttack(self.blackKingLocation[0], self.blackKingLocation[1]) + + def squareUnderAttack(self, r, c): + self.whiteToMove = not self.whiteToMove + oppMoves = self.getAllPossibleMoves() + self.whiteToMove = not self.whiteToMove + for move in oppMoves: + if move.endRow == r and move.endCol == c: + return True + return False + + + + + """ + All move without considering checks + """ + def getAllPossibleMoves(self): + moves = [] + for r in range(len(self.board)): + for c in range(len(self.board[r])): + turn = self.board[r][c][0] # b or w based on turn + if(turn == 'w' and self.whiteToMove) or (turn == 'b' and not self.whiteToMove): + piece = self.board[r][c][1] + self.moveFunctions[piece](r,c, moves) + return moves + + + def getPawnMoves(self, r, c, moves): + if self.whiteToMove: + if self.board[r-1][c] == "--": + moves.append(Move((r, c),(r-1, c), self.board)) + if r == 6 and self.board[r-2][c] == "--": + moves.append(Move((r, c),(r-2, c), self.board)) + if c-1 >= 0: + if self.board[r-1][c-1][0] == 'b': + moves.append(Move((r, c),(r-1, c-1), self.board)) + if c+1 <= 7: + if self.board[r-1][c+1][0] == 'b': + moves.append(Move((r, c),(r-1, c+1), self.board)) + + else: + if self.board[r+1][c] == "--": + moves.append(Move((r, c),(r+1, c), self.board)) + if r == 1 and self.board[r+2][c] == "--": + moves.append(Move((r, c),(r+2, c), self.board)) + if c-1 >= 0: + if self.board[r+1][c-1][0] == 'w': + moves.append(Move((r, c),(r+1, c-1), self.board)) + if c+1 <= 7: + if self.board[r+1][c+1][0] == 'w': + moves.append(Move((r, c),(r+1, c+1), self.board)) + + def getRookMoves(self, r, c, moves): + directions = ((-1, 0), (0, -1), (1, 0), (0, 1)) + enemyColor = "b" if self.whiteToMove else "w" + for d in directions: + for i in range(1, 8): + endRow = r + d[0] * i + endCol = c + d[1] * i + if 0 <= endRow < 8 and 0 <= endCol < 8: + endPiece = self.board[endRow][endCol] + if endPiece == "--": + moves.append(Move((r,c), (endRow, endCol), self.board)) + elif endPiece[0] == enemyColor: + moves.append(Move((r,c), (endRow, endCol), self.board)) + break + else: + break + else: + break + + def getKnightMoves(self, r,c,moves): + knightMoves = ((-2, -1), (-2, 1), (-1, -2), (-1, 2), (1, -2), (1, 2), (2, -1), (2,1)) + allyColor = "w" if self.whiteToMove else "b" + for m in knightMoves: + endRow = r + m[0] + endCol = c + m[1] + if 0 <= endRow < 8 and 0 <= endCol < 8: + endPiece = self.board[endRow][endCol] + if endPiece[0] != allyColor: + moves.append(Move((r,c), (endRow, endCol), self.board)) + + def getBishopMoves(self, r,c,moves): + directions = ((-1, -1), (-1, 1), (1, -1), (1, 1)) + enemyColor = "b" if self.whiteToMove else "w" + for d in directions: + for i in range(1, 8): + endRow = r + d[0] * i + endCol = c + d[1] * i + if 0 <= endRow < 8 and 0 <= endCol < 8: + endPiece = self.board[endRow][endCol] + if endPiece == "--": + moves.append(Move((r,c), (endRow, endCol), self.board)) + elif endPiece[0] == enemyColor: + moves.append(Move((r,c), (endRow, endCol), self.board)) + break + else: + break + else: + break + + def getQueenMoves(self, r,c,moves): + self.getRookMoves(r, c, moves) + self.getBishopMoves(r, c, moves) + + def getKingMoves(self, r,c,moves): + kingMoves = ((-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1,1) ) + allyColor = "w" if self.whiteToMove else "b" + for i in range(8): + endRow = r + kingMoves[i][0] + endCol = c + kingMoves[i][1] + if 0 <= endRow < 8 and 0 <= endCol < 8: + endPiece = self.board[endRow][endCol] + if endPiece[0] != allyColor: + moves.append(Move((r,c), (endRow, endCol), self.board)) +class Move(): + + ranksToRow = {"1": 7, "2": 6, "3": 5, "4": 4, + "5": 3, "6": 2, "7": 1, "8": 0} + rowsToRanks = {v: k for k, v in ranksToRow.items()} + filesToCols = {"a": 0, "b": 1, "c": 2, "d": 3, + "e": 4, "f": 5, "g": 6, "h": 7} + colsToFiles = {v: k for k, v in filesToCols.items()} + + def __init__(self, startSq, endSq, board): + self.startRow = startSq[0] + self.startCol = startSq[1] + self.endRow = endSq[0] + self.endCol = endSq[1] + self.pieceMoved = board[self.startRow][self.startCol] + self.pieceCaptured = board[self.endRow][self.endCol] + self.isPawnPromotion = False + if (self.pieceMoved == 'wp' and self.endRow == 0) or (self.pieceMoved == 'bp' and self.endRow == 7): + self.isPawnPromotion = True + self.moveID = self.startRow * 1000 + self.startCol * 100 + self.endRow * 10 + self.endCol + + def __eq__(self, other): + if isinstance(other, Move): + return self.moveID == other.moveID + return False + + + def getChessNotation(self): + return self.getRankFile(self.startRow, self.startCol) + self.getRankFile(self.endRow, self.endCol) + + def getRankFile(self, r, c): + return self.colsToFiles[c] + self.rowsToRanks[r] + From abdd6e805edbd26d6acba1179a178a1d03b44c29 Mon Sep 17 00:00:00 2001 From: Atughara2021 Date: Sat, 4 May 2024 14:14:42 +0600 Subject: [PATCH 28/50] readme created --- 0x24-Chess_Game/README.md | 26 ++++++++++++++++++++++++++ 0x24-Chess_Game/requirements.txt | 1 + 2 files changed, 27 insertions(+) create mode 100644 0x24-Chess_Game/README.md create mode 100644 0x24-Chess_Game/requirements.txt diff --git a/0x24-Chess_Game/README.md b/0x24-Chess_Game/README.md new file mode 100644 index 0000000..9a91ca0 --- /dev/null +++ b/0x24-Chess_Game/README.md @@ -0,0 +1,26 @@ +# Chess Game + +## 🛠️ Description +A simple chess game that you can play with your friend. + +## ⚙️ Languages or Frameworks Used +This game is created in python programming language. +Modules : pygame + +## 🌟 How to runHow to run the script +Running this game is pretty straight forward. + +```sh +pip install -r requirements.txt +``` + +```sh +python ChessGame.py +``` + +## 📺 Demo +

    +![alt text] + +## *Author Name* +[Abhi Bhullar](https://github.com/userabhibhullar) \ No newline at end of file diff --git a/0x24-Chess_Game/requirements.txt b/0x24-Chess_Game/requirements.txt new file mode 100644 index 0000000..247ea34 --- /dev/null +++ b/0x24-Chess_Game/requirements.txt @@ -0,0 +1 @@ +pygame==2.4.0 From be284ca07e8cee4d9fc118bc1ad9564d116b84be Mon Sep 17 00:00:00 2001 From: Atughara2021 Date: Sat, 4 May 2024 14:19:58 +0600 Subject: [PATCH 29/50] youTube viewer added on readme projects list --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index f43d99b..d56e138 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,9 @@ | 19 | [Phone Tracker](./0x19-Phone-Tracker) | | 20 | [Automated Mailing](./0x20-AutomatedMailing) | | 21 | [Text Editor](./0x21TextEditor) | +| 22 | [YouTube Viewer](./0x22-YouTubeViewer) | +| 21 | [Text Editor](./0x23TextEditor) | +| 24 | [Text Editor](./0x24TextEditor) | From 280c3226387ea9f434d7fffef4e259163673df1e Mon Sep 17 00:00:00 2001 From: Atughara2021 Date: Sat, 4 May 2024 14:22:27 +0600 Subject: [PATCH 30/50] remaining projects added to the readme projects list --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d56e138..02afeb3 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,8 @@ | 20 | [Automated Mailing](./0x20-AutomatedMailing) | | 21 | [Text Editor](./0x21TextEditor) | | 22 | [YouTube Viewer](./0x22-YouTubeViewer) | -| 21 | [Text Editor](./0x23TextEditor) | -| 24 | [Text Editor](./0x24TextEditor) | +| 21 | [Web Cloner](./0x23-WebCloner) | +| 24 | [Chess Game](./0x24-Chess_Game) | From f3d9e305a7b4b82658de14646d3fd901c2999a29 Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Sat, 4 May 2024 12:47:30 +0300 Subject: [PATCH 31/50] add: contributors --- README.md | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 02afeb3..6e5fb4f 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ ## User Guide - Do you want to try these projects? Just clone the current repository and type the following commands in individual folder: + > Do you want to try these projects? Just clone the current repository and type the following commands in individual folder: ```groovy open in terminal python3 @@ -47,8 +47,8 @@ ``` ## Contributors Guide - If you want to help me improve the repository, you can fork the project and add your own features or updates then pull request and add me as reviewer - When you find out error, don't hesitate to correct it . + > If you want to help me improve the repository, you can fork the project and add your own features or updates then pull request and add me as reviewer + > When you find out error, don't hesitate to correct it . ```mermaid flowchart LR Star[Star the Repository]-->Fork @@ -59,6 +59,21 @@ flowchart LR ``` + +## Contributors + + + + + + + + + + + + +
    Victor Preston
    Victor Preston

    💻
    dayoonasanya
    Adedayo Onasanya

    💻
    Atughara John
    Atughara John

    💻
    ### Enjoy python! From b986984468f7a01ee2743067cedf85b60608fa6e Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Sat, 4 May 2024 12:49:00 +0300 Subject: [PATCH 32/50] add: contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6e5fb4f..2e06d92 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ flowchart LR
    Victor Preston
    Victor Preston

    💻 dayoonasanya
    Adedayo Onasanya

    💻 - Atughara John
    Atughara John

    💻 + Atughara John
    Atughara John

    💻 From 945b6eddb806ff3c3a526fdd4d42650fdf2cb641 Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Sat, 4 May 2024 12:51:43 +0300 Subject: [PATCH 33/50] add: contributors & assign contributors "individual commits" --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2e06d92..a16d82a 100644 --- a/README.md +++ b/README.md @@ -68,9 +68,9 @@ flowchart LR - - - + + +
    Victor Preston
    Victor Preston

    💻
    dayoonasanya
    Adedayo Onasanya

    💻
    Atughara John
    Atughara John

    💻
    Victor Preston
    Victor Preston

    💻
    dayoonasanya
    Adedayo Onasanya

    💻
    Atughara John
    Atughara John

    💻
    From a213269766ade6f08208e51f30f7dce37e4ea767 Mon Sep 17 00:00:00 2001 From: Ugwoke levi <113690452+levoski1@users.noreply.github.com> Date: Tue, 28 May 2024 09:25:19 +0100 Subject: [PATCH 34/50] Levi first commit on 0x25-QuizMaster/ --- 0x25-QuizMaster/README.md | 17 +++++ 0x25-QuizMaster/answer_quiz.py | 109 +++++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 0x25-QuizMaster/README.md create mode 100644 0x25-QuizMaster/answer_quiz.py diff --git a/0x25-QuizMaster/README.md b/0x25-QuizMaster/README.md new file mode 100644 index 0000000..d0969d7 --- /dev/null +++ b/0x25-QuizMaster/README.md @@ -0,0 +1,17 @@ +# Trivia Quiz Application + +This is a Python application that retrieves trivia questions from the Open Trivia Database API and presents them to the user in a quiz format. + +## Features + +- Fetch trivia questions from the Open Trivia Database API. +- Display questions and multiple-choice answers to the user. +- Allow the user to input their answers and keep track of the score. + +## Prerequisites + +- Python 3.x installed on your system. +- Install the `requests` library if not already installed: + ```bash + pip install requests + diff --git a/0x25-QuizMaster/answer_quiz.py b/0x25-QuizMaster/answer_quiz.py new file mode 100644 index 0000000..489c1ac --- /dev/null +++ b/0x25-QuizMaster/answer_quiz.py @@ -0,0 +1,109 @@ +import requests +import random +import html + +def get_questions(amount: int, category: int) -> dict: + """ + Retrieves trivia questions from the Open Trivia Database API. + + Args: + amount (int): Number of questions to retrieve (maximum 50). + category (int): Category ID of the questions. + + Returns: + dict: Dictionary containing the retrieved trivia questions. + """ + url = f'https://opentdb.com/api.php?amount={amount}&category={category}' + response = requests.get(url).json() + return response + +def shuffle_choices(choices: list) -> list: + """ + Shuffles the order of choices for a trivia question. + + Args: + choices (list): List of choices for a trivia question. + + Returns: + list: Shuffled list of choices. + """ + random.shuffle(choices) + return choices + +def get_user_response(num_choices: int) -> int: + while True: + try: + response = int(input('Enter your answer: ')) + if 1 <= response <= num_choices: + return response + else: + print('Invalid input. Please enter a number between 1 and', num_choices) + except ValueError: + print('Invalid input. Please enter a valid integer.') + +def display_choices(choices: list) -> None: + """ + Displays the choices for a trivia question with index numbers. + + Args: + choices (list): List of choices for a trivia question. + + Returns: + int: Index of the user's response. + """ + num_choices = len(choices) + for index, choice in enumerate(choices, start=1): + formatted_choice = f"{index}. {html.unescape(choice)}" + print(formatted_choice) + return get_user_response(num_choices) + +def get_user_input() -> int: + """ + Gets the number of questions the user wants to attempt. + + Returns: + int: Number of questions chosen by the user. + """ + while True: + try: + user_input = int(input('How many questions would you like to attempt (1-50): ')) + if 1 <= user_input <= 50: + return user_input + else: + print('Invalid input. Please enter a number between 1 and 50.') + except ValueError: + print('Invalid input. Please enter a valid integer.') + +def main(): + """ + Main function to run the trivia quiz application. + """ + score = 0 # Initialize score + try: + num_questions = get_user_input() + trivia_data = get_questions(num_questions, 18) # Category ID 9 corresponds to General Knowledge + questions = trivia_data.get('results') + + for question_data in questions: + question = html.unescape(question_data.get('question')) + correct_answer = html.unescape(question_data.get('correct_answer')) + incorrect_answers = [html.unescape(answer) for answer in question_data.get('incorrect_answers')] + incorrect_answers.append(correct_answer) + shuffled_choices = shuffle_choices(incorrect_answers) + + print(question) + user_response_index = display_choices(shuffled_choices) - 1 # Adjusting index to start from 0 + user_response = shuffled_choices[user_response_index] + if user_response == correct_answer: + score += 1 # Increment score for correct answer + print('Congratulations! Your answer is correct.\n') + else: + print(f'Sorry, the correct answer is: {correct_answer}\n') + + except requests.exceptions.RequestException as e: + print(f"Error: {e}. Please check your internet connection.") + finally: + print(f'Your final score is: {score}/{num_questions}') # Display final score + +if __name__ == "__main__": + main() From 88c2308798ae7e03c63cd638046e5aa0ae9deb06 Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Tue, 28 May 2024 13:18:08 +0300 Subject: [PATCH 35/50] update contributors to repo: --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a16d82a..e1c9baf 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ | 22 | [YouTube Viewer](./0x22-YouTubeViewer) | | 21 | [Web Cloner](./0x23-WebCloner) | | 24 | [Chess Game](./0x24-Chess_Game) | +| 25 | [Quiz Master](./0x25-QuizMaster) | @@ -71,6 +72,7 @@ flowchart LR Victor Preston
    Victor Preston

    💻 dayoonasanya
    Adedayo Onasanya

    💻 Atughara John
    Atughara John

    💻 + levoski1
    Ugwoke Levi

    💻 From cfa4753ea127da8bf24fbc46d4c5e826e281763c Mon Sep 17 00:00:00 2001 From: Mano <112639423+Manavalan2517@users.noreply.github.com> Date: Fri, 7 Jun 2024 20:05:25 +0530 Subject: [PATCH 36/50] project/memory-game-python --- Memory Game Python/README.md | 34 ++++++++ Memory Game Python/main.py | 154 +++++++++++++++++++++++++++++++++++ 2 files changed, 188 insertions(+) create mode 100644 Memory Game Python/README.md create mode 100644 Memory Game Python/main.py diff --git a/Memory Game Python/README.md b/Memory Game Python/README.md new file mode 100644 index 0000000..26dbf4a --- /dev/null +++ b/Memory Game Python/README.md @@ -0,0 +1,34 @@ +### + +# Memory Game Python Script Breakdown + +## 1. Importing Necessary Modules +- **random**: for generating random numbers. +- **tabulate**: for formatting the grid display. +- **os**: for clearing the console. + +## 2. Defining Global Variables +- **values**: a dictionary mapping letters to their corresponding indices in the grid. +- **temp_found**: a list to store the numbers temporarily found during each turn. +- **user_values**: a list to store the user's input for each turn. +- **user_choices**: a list to keep track of the tiles already uncovered by the user. +- **progress**: a boolean flag to indicate whether the game is still in progress. +- **competed**: a boolean flag to indicate whether the game has been completed. + +## 3. Taking User Input for the Grid Size +- The user is prompted to enter a choice for the grid size (e.g., 2 for a 2x2 grid, 4 for a 4x4 grid). +- The input is validated to ensure it is an even number. + +## 4. Defining Functions +- **game_elements(num)**: a function that generates the grid elements. It creates a list of random numbers and shuffles them to create pairs. +- **game_process(num)**: a function that handles the game logic. It displays the grid, prompts the user for input, and updates the grid based on the user's choices. It also checks for matches and updates the game status accordingly. + +## 5. The Main Game Loop +- The main list is populated with the grid elements using the `game_elements` function. +- The `game_process` function is called to start the game. +- After each game, the user is prompted to choose whether to play again. +- If the user chooses to quit, the loop breaks. + +**Overall, the selected code provides a complete implementation of the memory game with user interaction and grid display.** + +### diff --git a/Memory Game Python/main.py b/Memory Game Python/main.py new file mode 100644 index 0000000..2d8e98f --- /dev/null +++ b/Memory Game Python/main.py @@ -0,0 +1,154 @@ +import random +import os + +values = {'a' : 0, 'b' : 1, 'c' : 2, 'd' : 3, 'e' : 4, 'f' : 5, 'g' : 6, 'h' : 7} +table_heading = {65:"A", 66:"B", 67:"C", 68:"D", 69:"E", 70:"F", 71:"G", 72:"H"} +temp_found = [] +user_values = [] +user_choices = [] +progress = True +competed = False + +user_choice_data = input(""" +For '2x2' enter "EASY" +For '4x4' enter "MEDIUM" +For '6x6' enter "HARD" +For '8x8' enter "EXTREME" + +Enter your choice: """).lower() + +while user_choice_data not in ["easy", "medium", "hard", "extreme"]: + os.system("cls") + user_choice_data = input(""" +For '2x2' enter "EASY" +For '4x4' enter "MEDIUM" +For '6x6' enter "HARD" +For '8x8' enter "EXTREME" + +Enter your choice: """).lower() + +def game_elements(num): + + lst = [] + while len(lst) < num: + row = [] + while len(row) < num: + random_number = random.randint(1,10) + if random_number not in row: + row.append(random_number) + lst.append(row) + element = row.copy() + random.shuffle(element) + lst.append(element) + return lst + +def game_process(num): + global user_values + global temp_found + global competed + + def game_table(list_with_spaces): + char_count = 65 + if user_choice_data == 2: + print(" 0 1 ") + print(" |---------|---------|") + for i in range(2): + print(f"{table_heading[char_count]} | {list_with_spaces[i][0]} | {list_with_spaces[i][1]} |") + print(" |---------|---------|") + char_count += 1 + + if user_choice_data == 4: + print(" 0 1 2 3 ") + print(" |---------|---------|---------|---------|") + for i in range(4): + print(f"{table_heading[char_count]} | {list_with_spaces[i][0]} | {list_with_spaces[i][1]} | {list_with_spaces[i][2]} | {list_with_spaces[i][3]} |") + print(" |---------|---------|---------|---------|") + char_count += 1 + + + if user_choice_data == 6: + print(" 0 1 2 3 4 5 ") + print(" |-------|-------|-------|-------|-------|-------|") + for i in range(6): + print(f"{table_heading[char_count]} | {list_with_spaces[i][0]} | {list_with_spaces[i][1]} | {list_with_spaces[i][2]} | {list_with_spaces[i][3]} | {list_with_spaces[i][4]} | {list_with_spaces[i][5]} |") + print(" |-------|-------|-------|-------|-------|-------|") + char_count += 1 + + + if user_choice_data == 8: + print(" 0 1 2 3 4 5 6 7 ") + print(" |-------|-------|-------|-------|-------|-------|-------|-------|") + for i in range(8): + print(f"{table_heading[char_count]} | {list_with_spaces[i][0]} | {list_with_spaces[i][1]} | {list_with_spaces[i][2]} | {list_with_spaces[i][3]} | {list_with_spaces[i][4]} | {list_with_spaces[i][5]} | {list_with_spaces[i][6]} | {list_with_spaces[i][7]} |") + print(" |-------|-------|-------|-------|-------|-------|-------|-------|") + char_count += 1 + + + list_with_spaces = [[' ' for _ in sublist] for sublist in main] + while progress: + os.system('cls') + game_table(list_with_spaces) + + trial = 0 + for i in range(2): + if len(user_choices) == (num**2): + competed = True + break + + opn = input("\nEnter the tile to uncover: ") + while opn in user_choices: + print("\n===========>>>You have already completed this tile!") + opn = input("\nEnter the new tile to uncover: ") + user_values.append(opn) + + index_1 = values[opn[0]] + index_2 = int(opn[1]) + + temp_found.append(main[index_1][index_2]) + + list_with_spaces[index_1][index_2] = main[index_1][index_2] + game_table(list_with_spaces) + + trial += 1 + if trial == 2: + user_input = input("\n===========>>> Press (Enter) to Continue: ") + trial = 0 + + if competed: + print("\n===========>>> You Won! <<<===========") + break + elif temp_found[0] == temp_found[1]: + for i in range(2): + user_choices.append(user_values[i]) + index_1 = values[user_values[i][0]] + index_2 = int(user_values[i][1]) + list_with_spaces[index_1][index_2] = "✔️" + user_values = [] + temp_found = [] + else: + for i in range(2): + index_1 = values[user_values[i][0]] + index_2 = int(user_values[i][1]) + list_with_spaces[index_1][index_2] = " " + user_values = [] + temp_found = [] +while True: + if user_choice_data == "easy": + user_choice_data = 2 + if user_choice_data == "medium": + user_choice_data = 4 + if user_choice_data == "hard": + user_choice_data = 6 + if user_choice_data == "extreme": + user_choice_data = 8 + main = game_elements(user_choice_data) + process = game_process(user_choice_data) + + choice = input("Do you want to play the game again? (y/n): ").lower() + + while choice not in ["y", "n"]: + print("\n Invalid choice") + choice = input("Do you want to play the game again? (y/n): ") + + if choice == "n": + break \ No newline at end of file From 8ed095fcb55249680127865d7fc55387d396c835 Mon Sep 17 00:00:00 2001 From: Mano <112639423+Manavalan2517@users.noreply.github.com> Date: Sat, 8 Jun 2024 09:54:15 +0530 Subject: [PATCH 37/50] Projects Added --- Dice-Simulator/README.md | 2 ++ Dice-Simulator/img/five.png | Bin 0 -> 18221 bytes Dice-Simulator/img/four.png | Bin 0 -> 15719 bytes Dice-Simulator/img/one.png | Bin 0 -> 11656 bytes Dice-Simulator/img/six.png | Bin 0 -> 18578 bytes Dice-Simulator/img/three.png | Bin 0 -> 16697 bytes Dice-Simulator/img/two.png | Bin 0 -> 14198 bytes Dice-Simulator/main.py | 20 ++++++++++++++ JSON-to-CSV/README.md | 2 ++ JSON-to-CSV/json2csv.py | 52 +++++++++++++++++++++++++++++++++++ 10 files changed, 76 insertions(+) create mode 100644 Dice-Simulator/README.md create mode 100644 Dice-Simulator/img/five.png create mode 100644 Dice-Simulator/img/four.png create mode 100644 Dice-Simulator/img/one.png create mode 100644 Dice-Simulator/img/six.png create mode 100644 Dice-Simulator/img/three.png create mode 100644 Dice-Simulator/img/two.png create mode 100644 Dice-Simulator/main.py create mode 100644 JSON-to-CSV/README.md create mode 100644 JSON-to-CSV/json2csv.py diff --git a/Dice-Simulator/README.md b/Dice-Simulator/README.md new file mode 100644 index 0000000..ddb2baa --- /dev/null +++ b/Dice-Simulator/README.md @@ -0,0 +1,2 @@ +# Dice-Simulator + diff --git a/Dice-Simulator/img/five.png b/Dice-Simulator/img/five.png new file mode 100644 index 0000000000000000000000000000000000000000..620c791c08bd90b0cc2d4906b875e3e463e5e214 GIT binary patch literal 18221 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 literal 0 HcmV?d00001 diff --git a/Dice-Simulator/img/four.png b/Dice-Simulator/img/four.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6cdeef9605bf7eb37696e0724a06551b907486 GIT binary patch literal 15719 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 literal 0 HcmV?d00001 diff --git a/Dice-Simulator/img/six.png b/Dice-Simulator/img/six.png new file mode 100644 index 0000000000000000000000000000000000000000..7951926ed91418692e98c6b32bef7417d563cd88 GIT binary patch literal 18578 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 w_BE(P{?BdmOKYfQ0Iae&A^-pY literal 0 HcmV?d00001 diff --git a/Dice-Simulator/img/two.png b/Dice-Simulator/img/two.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8fc64da0b6758f1172286cb1291e95dfeb4301 GIT binary patch literal 14198 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%0AhPqvxYX9AL0 zFjQy3bkbQX5qg@!097K%hwFRV(QD~f=6QFvl>&LRa&fu&4y6|W94i9Vb#2H3dvN$C zo+22gwELh#qi5|c7{371vDHM97M7|?H&ZejN-?)K3vYRke%=Rq+t#N$hqp_mzLhTa z_eR5&TuCt5pbfI8g?lJFnsC7&b?P6aQ53 zkjCDB_)rTzKFG%b69s5f;ihD$aO!~C9V|0zx03{R>3`_g@~}}^<3sx*3f#p@ zbmQkc-CjNMEvyx0YthsTpthemN7?#o z*aFBZtAE2L7k;K{R7LQ5_Bvxy6)>G@e1}tVd=DS3C;-NN5ci;GRW?9z2S!bfqJ9%z zuag-su+t>_x7V2(UyXTUAZdk+c2}5D8^|<%1}f2R+OXvLuQ0y!%eh{U0eb{FRuO6I zg(NgG1=goX(o-*usjN&JW!WULV#i%Uh&0SOdnjv{<7RY93?~RP3>&gfJ&T><+K(rK z+uA|TqVfEH%`qd41%FmxeYhLr`T!8C^X}%RWCkSVL-6)8qiN99KOrhlFavfBiepiy zwp=t0_>_dCe0ao~$scCQ3@d!E$b&q5=f*Q8?D&^*x_sN(tp`#!|M!V*C>WH{K#PUr zzAj~BdaN*EysNBUaiTnG{Owg7IuFdxZyj!b@yLJrvqpqMQcV977RqbxH~miIwfaxkE>gZ5V@lynNDq7VLt4THR^%U|73 z0m5>59OwlWr0RY4-1?uX2sGniUNZvz2H;NVyng@V!x+~n6sR@NO$#%C>G6z>&?c0L z*`$RFuYE3##UFHt&ZYbf!P%*`F3Vd(@jMA5_6`Gsx^0v_CW}DzQl*hYpVdR~9EHg4WEK zx9=Yaje57676jkfG_|#vD+bqEO{_{khu@I!-;UkYK&TJl{`7RtMRLein(2;mwwL=9 zzI5&|yuU+nNR+t;*t?fY>0oTrHyP9{YR=SI`gQ#UDkL#-4I`Qhxw(1A{;0htwoc7f z^&Ga^KynhUHD_%q_4sMPR`NTyY}sr442;hJ!Q>*$j(71czEQEO+cv`q!hCfbq@lMB z!t^QrlUj&6!jP84#{Oe8ufUDr%e*IIVVEYwW#rl4kIL~gtZG=v%}8;x!_b6dv8b`B z1kxXADrt%ESfE#s3^c12M!Al0h9@T0XJ%$DT(}}@rJaVSNbaN3UqdN0WT&qtYBap| zBCWUXs_;YE0nm-vw9+Ii8~J5&xZ5o$g2+Hh4Nmw?Ul+Yk5PDOx%RMlj@R#d{o36ki zWcyJ3(76g!R#WNyVN83ubuA(2XEn=WIonpO{K*U2X)$~qB)U3%fw6Tg=v9ZNjQTy8 z`9RQNAOT!75bp@%FzA0s0!@^>NNYg>8oC2bn`GBqqFo5B&2{zUdH!|BjRpo4ol5Ma z{qYHr5(<^HHMdgCw@p?Imw2> OKU(T~YPrX(gZ~H7`)~UI literal 0 HcmV?d00001 diff --git a/Dice-Simulator/main.py b/Dice-Simulator/main.py new file mode 100644 index 0000000..d1ee205 --- /dev/null +++ b/Dice-Simulator/main.py @@ -0,0 +1,20 @@ +import customtkinter +from PIL import Image +import random + +img = ["one", "two", "three", "four", "five", "six"] +def button_callback(): + choice = random.choice(img) + my_image = customtkinter.CTkImage(light_image=Image.open("img\\"+choice+".png"),size=(100, 100)) + image_label = customtkinter.CTkLabel(app, image=my_image, text="") + image_label.grid(row=1, column=0, padx=20, pady=20) + +app = customtkinter.CTk() +app.title("Dice Roll") +app.geometry("350x200") +app.grid_columnconfigure(0, weight=1) + +button = customtkinter.CTkButton(app, text="Roll", command=button_callback) +button.grid(row=0, column=0, padx=20, pady=20) + +app.mainloop() \ No newline at end of file diff --git a/JSON-to-CSV/README.md b/JSON-to-CSV/README.md new file mode 100644 index 0000000..2cbab3f --- /dev/null +++ b/JSON-to-CSV/README.md @@ -0,0 +1,2 @@ +# JSON to CSV + JSON to CSV Converter diff --git a/JSON-to-CSV/json2csv.py b/JSON-to-CSV/json2csv.py new file mode 100644 index 0000000..92b2538 --- /dev/null +++ b/JSON-to-CSV/json2csv.py @@ -0,0 +1,52 @@ +import json +import csv +import os + +print("\nWelcome to the JSON to CSV converter") + +class Converter: + + def converter(self, json_file_path, csv_file_name): + global data + if json_file_path == 1: + try: + with open(json_file_path, 'r') as f1: + data = json.load(f1) + except: + print("File not found") + print("Try creating a new json file") + return + + if json_file_path == 2: + f = open("input.json",'x') + f.close() + file = "notepad input.json" + os.system(file) + f1 = open("input.json",'r') + data = json.load(f1) + + f2 = open(csv_file_name, 'w', newline="") + writer_object = csv.writer(f2) + writer_object.writerow(data[0].keys()) + + for row in data: + writer_object.writerow(row.values()) + f2.close() + + choice = input("Do you want open the converted file? (y/n): ") + while choice not in ['y','n']: + print("Invalid choice") + choice = input("Do you want open the converted file? (y/n): ") + if choice == 'y': + os.system(f'start "excel" {csv_file_name}') + +json2csv = Converter() + +json_file_path = int(input(""" +Press (1) to Open an existing json file +Press (2) to Create a new json file and Enter your data +Choose any one: """)) + +csv_file_name = input("Name your CSV file: ")+".csv" + +json2csv.converter(json_file_path, csv_file_name) \ No newline at end of file From c7639016554ca33fabeb35d9f652c251c20c102e Mon Sep 17 00:00:00 2001 From: Mano <112639423+Manavalan2517@users.noreply.github.com> Date: Sat, 8 Jun 2024 15:52:28 +0530 Subject: [PATCH 38/50] Projects added --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index e1c9baf..0275e34 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,10 @@ | 21 | [Web Cloner](./0x23-WebCloner) | | 24 | [Chess Game](./0x24-Chess_Game) | | 25 | [Quiz Master](./0x25-QuizMaster) | +| 26 | [Dice-Simulator](./Dice-Simulator) | +| 27 | [JSON-to-CSV](./JSON-to-CSV) | +| 28 | [Memory Game Python](./Memory-Game-Python) | +| 29 | [Quiz-Creator](./Quiz-Creator) | @@ -73,6 +77,7 @@ flowchart LR dayoonasanya
    Adedayo Onasanya

    💻 Atughara John
    Atughara John

    💻 levoski1
    Ugwoke Levi

    💻 + Manavalan
    Manavalan

    💻 From f8f91ad9ccc74808274bfa96507f4cd3b315707d Mon Sep 17 00:00:00 2001 From: Mano <112639423+Manavalan2517@users.noreply.github.com> Date: Sat, 8 Jun 2024 15:54:24 +0530 Subject: [PATCH 39/50] Projects added --- Quiz-Creator/quiz.py | 19 +++++++++++++++++++ Quiz-Creator/sample.py | 7 +++++++ Quiz-Creator/sample.txt | 7 +++++++ 3 files changed, 33 insertions(+) create mode 100644 Quiz-Creator/quiz.py create mode 100644 Quiz-Creator/sample.py create mode 100644 Quiz-Creator/sample.txt diff --git a/Quiz-Creator/quiz.py b/Quiz-Creator/quiz.py new file mode 100644 index 0000000..2a4f770 --- /dev/null +++ b/Quiz-Creator/quiz.py @@ -0,0 +1,19 @@ +import os +class QuizCreation: + def process(self, question, choices, answer, question_number=""): + choices_dict = {'a':1, 'b':2, 'c':3, 'd':4} + with open("sample.txt", "a") as f: + f.write(f"\nQUESTION {question_number}:- "+question) + f.write("\n") + count = 65 + for i in range(len(choices)): + f.write(f"({chr(count)}) "+choices[i]) + f.write("\n") + count += 1 + f.write(f"Answer :- ({answer.upper()}) "+choices[choices_dict[answer]-1]) + f.write("\n") + + def open_file(self): + os.startfile("sample.txt") + +Quiz = QuizCreation() \ No newline at end of file diff --git a/Quiz-Creator/sample.py b/Quiz-Creator/sample.py new file mode 100644 index 0000000..19a8a3b --- /dev/null +++ b/Quiz-Creator/sample.py @@ -0,0 +1,7 @@ +from quiz import Quiz + +Quiz.process(question="Entomology is the science that studies", + choices=["Behavior of human beings", "Insects", "The origin and history of technical and scientific terms", "The formation of rocks"], + answer="b") + +Quiz.open_file() \ No newline at end of file diff --git a/Quiz-Creator/sample.txt b/Quiz-Creator/sample.txt new file mode 100644 index 0000000..d57ef88 --- /dev/null +++ b/Quiz-Creator/sample.txt @@ -0,0 +1,7 @@ + +QUESTION :- Entomology is the science that studies +(A) Behavior of human beings +(B) Insects +(C) The origin and history of technical and scientific terms +(D) The formation of rocks +Answer :- (B) Insects From d30ec29a54ddd6256732c7ecb4534fe3aa59f0e8 Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Sun, 9 Jun 2024 11:37:30 +0300 Subject: [PATCH 40/50] update: add new repo contributors. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index e1c9baf..443d02f 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,9 @@ | 21 | [Web Cloner](./0x23-WebCloner) | | 24 | [Chess Game](./0x24-Chess_Game) | | 25 | [Quiz Master](./0x25-QuizMaster) | +| 26 | [Dice-Simulator](./Dice-Simulator) | +| 27 | [JSON-to-CSV](./JSON-to-CSV) | +| 28 | [Memory-Game-Python](./Memory%20Game%20Python) | @@ -73,6 +76,7 @@ flowchart LR dayoonasanya
    Adedayo Onasanya

    💻 Atughara John
    Atughara John

    💻 levoski1
    Ugwoke Levi

    💻 + Manavalan2517
    Manavalan

    💻 From bfec9be74fbb90da80ee94fe66d49cc74403c34b Mon Sep 17 00:00:00 2001 From: Mano <112639423+Manavalan2517@users.noreply.github.com> Date: Tue, 11 Jun 2024 10:17:31 +0530 Subject: [PATCH 41/50] Update main.py --- Memory Game Python/main.py | 43 ++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/Memory Game Python/main.py b/Memory Game Python/main.py index 2d8e98f..2939a70 100644 --- a/Memory Game Python/main.py +++ b/Memory Game Python/main.py @@ -9,33 +9,15 @@ progress = True competed = False -user_choice_data = input(""" -For '2x2' enter "EASY" -For '4x4' enter "MEDIUM" -For '6x6' enter "HARD" -For '8x8' enter "EXTREME" - -Enter your choice: """).lower() - -while user_choice_data not in ["easy", "medium", "hard", "extreme"]: - os.system("cls") - user_choice_data = input(""" -For '2x2' enter "EASY" -For '4x4' enter "MEDIUM" -For '6x6' enter "HARD" -For '8x8' enter "EXTREME" - -Enter your choice: """).lower() - def game_elements(num): lst = [] while len(lst) < num: row = [] while len(row) < num: - random_number = random.randint(1,10) + random_number = random.randint(65,73) if random_number not in row: - row.append(random_number) + row.append(chr(random_number)) lst.append(row) element = row.copy() random.shuffle(element) @@ -64,7 +46,6 @@ def game_table(list_with_spaces): print(f"{table_heading[char_count]} | {list_with_spaces[i][0]} | {list_with_spaces[i][1]} | {list_with_spaces[i][2]} | {list_with_spaces[i][3]} |") print(" |---------|---------|---------|---------|") char_count += 1 - if user_choice_data == 6: print(" 0 1 2 3 4 5 ") @@ -74,7 +55,6 @@ def game_table(list_with_spaces): print(" |-------|-------|-------|-------|-------|-------|") char_count += 1 - if user_choice_data == 8: print(" 0 1 2 3 4 5 6 7 ") print(" |-------|-------|-------|-------|-------|-------|-------|-------|") @@ -83,7 +63,6 @@ def game_table(list_with_spaces): print(" |-------|-------|-------|-------|-------|-------|-------|-------|") char_count += 1 - list_with_spaces = [[' ' for _ in sublist] for sublist in main] while progress: os.system('cls') @@ -133,6 +112,24 @@ def game_table(list_with_spaces): user_values = [] temp_found = [] while True: + user_choice_data = input(""" +For '2x2' enter "EASY" +For '4x4' enter "MEDIUM" +For '6x6' enter "HARD" +For '8x8' enter "EXTREME" + +Enter your choice: """).lower() + + while user_choice_data not in ["easy", "medium", "hard", "extreme"]: + os.system("cls") + user_choice_data = input(""" +For '2x2' enter "EASY" +For '4x4' enter "MEDIUM" +For '6x6' enter "HARD" +For '8x8' enter "EXTREME" + +Enter your choice: """).lower() + if user_choice_data == "easy": user_choice_data = 2 if user_choice_data == "medium": From 132434a6c6c0a60c9b560d88949fdc65eba74f68 Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Tue, 11 Jun 2024 15:15:10 +0300 Subject: [PATCH 42/50] update contributors to project. + add manav --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index a09834a..9002a60 100644 --- a/README.md +++ b/README.md @@ -37,10 +37,8 @@ | 25 | [Quiz Master](./0x25-QuizMaster) | | 26 | [Dice-Simulator](./Dice-Simulator) | | 27 | [JSON-to-CSV](./JSON-to-CSV) | - | 28 | [Memory Game Python](./Memory-Game-Python) | | 29 | [Quiz-Creator](./Quiz-Creator) | - | 28 | [Memory-Game-Python](./Memory%20Game%20Python) | @@ -81,11 +79,7 @@ flowchart LR dayoonasanya
    Adedayo Onasanya

    💻 Atughara John
    Atughara John

    💻 levoski1
    Ugwoke Levi

    💻 - Manavalan
    Manavalan

    💻 - - Manavalan2517
    Manavalan

    💻 - From d24c35d4ec306be0d54686735631e4e84e98a11c Mon Sep 17 00:00:00 2001 From: P0Saurabh <111894219+P0Saurabh@users.noreply.github.com> Date: Fri, 4 Oct 2024 01:14:58 +0530 Subject: [PATCH 43/50] summrazation pdf --- PDF summrazation/main.py | 118 +++++++++++++++++++++++++++++++++++++++ PDF summrazation/p.png | Bin 0 -> 38967 bytes 2 files changed, 118 insertions(+) create mode 100644 PDF summrazation/main.py create mode 100644 PDF summrazation/p.png diff --git a/PDF summrazation/main.py b/PDF summrazation/main.py new file mode 100644 index 0000000..5f7d744 --- /dev/null +++ b/PDF summrazation/main.py @@ -0,0 +1,118 @@ +import tkinter as tk +from tkinter import filedialog, scrolledtext, messagebox, simpledialog, font +from tkinter import PhotoImage # Import PhotoImage for handling images +import torch +from transformers import T5Tokenizer, T5ForConditionalGeneration +from pdfminer.high_level import extract_text +import requests +from io import BytesIO +from fpdf import FPDF # Import FPDF for PDF generation + +model = T5ForConditionalGeneration.from_pretrained('t5-small') +tokenizer = T5Tokenizer.from_pretrained('t5-small') +device = torch.device('cpu') + +def pdf_to_text(pdf_path): + try: + text = extract_text(pdf_path) + return text + except Exception as e: + print(f"Error extracting text from PDF: {e}") + return None + +def summarize_text(text): + preprocess_text = text.strip().replace("\n", " ") + t5_prepared_text = "summarize: " + preprocess_text + tokenized_text = tokenizer.encode(t5_prepared_text, return_tensors="pt").to(device) + summary_ids = model.generate(tokenized_text, + num_beams=4, + no_repeat_ngram_size=2, + min_length=30, + max_length=100, + early_stopping=True) + output = tokenizer.decode(summary_ids[0], skip_special_tokens=True) + return output + +def download_pdf(url): + try: + response = requests.get(url) + response.raise_for_status() + return BytesIO(response.content) + except requests.RequestException as e: + messagebox.showerror("Download Error", f"Failed to download PDF: {e}") + return None + +def select_files(): + file_paths = filedialog.askopenfilenames(filetypes=[("PDF files", "*.pdf")]) + if file_paths: + summaries = [summarize_text(pdf_to_text(pdf_file)) for pdf_file in file_paths if + pdf_to_text(pdf_file) is not None] + output_text.delete('1.0', tk.END) + output_text.insert(tk.END, "\n\n".join(summaries)) + messagebox.showinfo("Completion", "Summarization completed!") + else: + messagebox.showinfo("No Files", "No PDF files were selected.") + +def fetch_from_url(): + url = simpledialog.askstring("Enter URL", "Please enter the PDF URL:") + if url: + pdf_file = download_pdf(url) + if pdf_file: + summary = summarize_text(pdf_to_text(pdf_file)) + output_text.delete('1.0', tk.END) + output_text.insert(tk.END, summary) + messagebox.showinfo("Completion", "Summarization completed!") + +def save_summary_as_pdf(): + text_to_save = output_text.get('1.0', tk.END) + if not text_to_save.strip(): + messagebox.showerror("No Data", "There is no summary to save.") + return + + file_path = filedialog.asksaveasfilename(defaultextension=".pdf", filetypes=[("PDF files", "*.pdf")]) + if file_path: + pdf = FPDF() + pdf.add_page() + + # Calculate center position for logo and title + logo_x = (pdf.w - 30) / 2 # Centering logo horizontally + pdf.image("p.png", x=logo_x, y=10, w=30) + pdf.ln(28) + # Add header title centered + pdf.set_font("Arial", size=12) + pdf.cell(0, 10, "MGM's College Of Engineering", ln=True, align='C') + + # Add line separator + pdf.set_line_width(0.5) + pdf.line(10, 50, pdf.w - 10, 50) + + # Add summary text + pdf.set_font("Arial", size=10) + pdf.multi_cell(0, 10, text_to_save) + + pdf.output(file_path) + + messagebox.showinfo("Saved as PDF", "The summary has been saved as PDF!") + +app = tk.Tk() +app.title("PDF Summarizer") +app.geometry("800x600") +app.config(bg="light blue") +customFont = font.Font(family="Helvetica", size=12) + +btn_load = tk.Button(app, text="Load PDFs", command=select_files, font=customFont, bg="navy", fg="white", padx=10, + pady=5) +btn_load.pack(pady=10) + +btn_fetch = tk.Button(app, text="Fetch PDF from URL", command=fetch_from_url, font=customFont, bg="navy", fg="white", + padx=10, pady=5) +btn_fetch.pack(pady=10) + +btn_save_pdf = tk.Button(app, text="Save Summary as PDF", command=save_summary_as_pdf, font=customFont, bg="navy", + fg="white", padx=10, pady=5) +btn_save_pdf.pack(pady=10) + +output_text = scrolledtext.ScrolledText(app, width=70, height=20, font=customFont, padx=10, pady=10, wrap=tk.WORD) +output_text.pack(pady=20) + +app.mainloop() diff --git a/PDF summrazation/p.png b/PDF summrazation/p.png new file mode 100644 index 0000000000000000000000000000000000000000..6c493e02101a3c04cea49f04f56cd5bd6aa18b70 GIT binary patch literal 38967 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

    eHL7YbImGiBn3dIo`@=^M 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 Y-sS(-+!-Glzt#X=zEDF{DwqZR4@WC31^@s6 literal 0 HcmV?d00001 From 4fb5a78542d0bb10f087df71dc0590d45be91aa4 Mon Sep 17 00:00:00 2001 From: Victor Preston <112781610+victorpreston@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:56:52 +0300 Subject: [PATCH 44/50] add contributor P0Saurabh --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9002a60..c21aba0 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ flowchart LR Atughara John
    Atughara John

    💻 levoski1
    Ugwoke Levi

    💻 Manavalan
    Manavalan

    💻 + P0Saurabh
    P0Saurabh

    💻 From 8c65f47ce5a2c3167ffaa6e9a5e9a36ae828b2a7 Mon Sep 17 00:00:00 2001 From: Nikita <134646828+wcupped@users.noreply.github.com> Date: Sat, 18 Jan 2025 00:14:54 +0300 Subject: [PATCH 45/50] Create main.py --- OOP Example/main.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 OOP Example/main.py diff --git a/OOP Example/main.py b/OOP Example/main.py new file mode 100644 index 0000000..ad30b5b --- /dev/null +++ b/OOP Example/main.py @@ -0,0 +1,20 @@ +# Class Creation +class Person: + # Initialization function (when you create an object this named initialization) + def __init__(self,name,age): + # changing objects attributes to arguments that we enter when calling an class to create an object + self.name = name + self.age = age + + # String function that returns a string that will be returned if you will print class + # Without __str__(): <__main__.Person object at 0x000001AC025E7230> + # With __str__(): + def __str__(self): + return f'Name: {self.name}. Age: {self.age}' + +# Creating an object using class +p = Person("John",21) # you can change the values and create some other methods in class +print(p) + +# Output: +# Name: John. Age: 21 From 5bc8d7b8b62b9d0835c725e66962fbab3f0dc26b Mon Sep 17 00:00:00 2001 From: Nikita <134646828+wcupped@users.noreply.github.com> Date: Sat, 18 Jan 2025 00:17:16 +0300 Subject: [PATCH 46/50] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c21aba0..4a8a778 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ flowchart LR levoski1
    Ugwoke Levi

    💻 Manavalan
    Manavalan

    💻 P0Saurabh
    P0Saurabh

    💻 + wCupped
    P0Saurabh
    title="Code">💻
    From a7bfcc8d9589b8d37439ac61ad8fc218a55d712f Mon Sep 17 00:00:00 2001 From: Nikita <134646828+wcupped@users.noreply.github.com> Date: Sat, 18 Jan 2025 00:17:44 +0300 Subject: [PATCH 47/50] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a8a778..3ca4dfb 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ flowchart LR levoski1
    Ugwoke Levi

    💻 Manavalan
    Manavalan

    💻 P0Saurabh
    P0Saurabh

    💻 - wCupped
    P0Saurabh
    title="Code">💻
    + wCupped
    wCupped
    title="Code">💻
    From d53095107c46c2c7d98667bfaa507d0d27abd304 Mon Sep 17 00:00:00 2001 From: Nikita <134646828+wcupped@users.noreply.github.com> Date: Sat, 18 Jan 2025 00:18:21 +0300 Subject: [PATCH 48/50] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ca4dfb..429ebb1 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ flowchart LR levoski1
    Ugwoke Levi

    💻 Manavalan
    Manavalan

    💻 P0Saurabh
    P0Saurabh

    💻 - wCupped
    wCupped
    title="Code">💻
    + wCupped
    P0Saurabh
    💻
    From b1da61a3418e7f24b80560ce95d9a59d97b32155 Mon Sep 17 00:00:00 2001 From: Nikita <134646828+wcupped@users.noreply.github.com> Date: Sat, 18 Jan 2025 00:18:48 +0300 Subject: [PATCH 49/50] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 429ebb1..0d7712d 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ flowchart LR levoski1
    Ugwoke Levi

    💻 Manavalan
    Manavalan

    💻 P0Saurabh
    P0Saurabh

    💻 - wCupped
    P0Saurabh
    💻
    + wCupped
    wCupped
    💻
    From bab9b9339617f86f9800a8f14d74564d79fe4465 Mon Sep 17 00:00:00 2001 From: Nikita <134646828+wcupped@users.noreply.github.com> Date: Sat, 18 Jan 2025 01:17:45 +0300 Subject: [PATCH 50/50] Update main.py Fixed typo 11 line: before: print("enter any key for exot") after: print("enter any key for exit") --- 0x09-Shutdown/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/0x09-Shutdown/main.py b/0x09-Shutdown/main.py index ef08bc5..148c2dc 100644 --- a/0x09-Shutdown/main.py +++ b/0x09-Shutdown/main.py @@ -8,7 +8,7 @@ def systemOffRestart(): import os print("enter r for restart") print("enter s for shutdown") - print("enter any key for exot") + print("enter any key for exit") option = input("enter your option") if option == "r":