From d0152573d3c73ca43aaf3a4d00c5986468137ebd Mon Sep 17 00:00:00 2001 From: SS Huh Date: Wed, 8 Dec 2021 18:26:50 +0900 Subject: [PATCH 1/7] Create readme.md --- challenges124_132/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 challenges124_132/readme.md diff --git a/challenges124_132/readme.md b/challenges124_132/readme.md new file mode 100644 index 0000000..62e6010 --- /dev/null +++ b/challenges124_132/readme.md @@ -0,0 +1 @@ +files added by chemineer From 7603ed32ebff055ec10160dc5af65cd9013bbceb Mon Sep 17 00:00:00 2001 From: SS Huh Date: Wed, 8 Dec 2021 18:27:45 +0900 Subject: [PATCH 2/7] Create readme.md --- challenges133_138/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 challenges133_138/readme.md diff --git a/challenges133_138/readme.md b/challenges133_138/readme.md new file mode 100644 index 0000000..62e6010 --- /dev/null +++ b/challenges133_138/readme.md @@ -0,0 +1 @@ +files added by chemineer From 667f4798f5da0dd77ee14ce85c63951784be010c Mon Sep 17 00:00:00 2001 From: SS Huh Date: Wed, 8 Dec 2021 20:08:24 +0900 Subject: [PATCH 3/7] Add files via upload --- challenges124_132/challenge-124_.py | 29 +++++++++++++++ challenges124_132/challenge-125_.py | 18 +++++++++ challenges124_132/challenge-126_.py | 46 +++++++++++++++++++++++ challenges124_132/challenge-127_.py | 33 ++++++++++++++++ challenges124_132/challenge-128_.py | 41 ++++++++++++++++++++ challenges124_132/challenge-129_.py | 37 ++++++++++++++++++ challenges124_132/challenge-130_.py | 51 +++++++++++++++++++++++++ challenges124_132/challenge-131_.py | 44 ++++++++++++++++++++++ challenges124_132/challenge-132_.py | 58 +++++++++++++++++++++++++++++ 9 files changed, 357 insertions(+) create mode 100644 challenges124_132/challenge-124_.py create mode 100644 challenges124_132/challenge-125_.py create mode 100644 challenges124_132/challenge-126_.py create mode 100644 challenges124_132/challenge-127_.py create mode 100644 challenges124_132/challenge-128_.py create mode 100644 challenges124_132/challenge-129_.py create mode 100644 challenges124_132/challenge-130_.py create mode 100644 challenges124_132/challenge-131_.py create mode 100644 challenges124_132/challenge-132_.py diff --git a/challenges124_132/challenge-124_.py b/challenges124_132/challenge-124_.py new file mode 100644 index 0000000..7f4d20f --- /dev/null +++ b/challenges124_132/challenge-124_.py @@ -0,0 +1,29 @@ +from tkinter import * + +def click(): + name=textbox1.get() + message=str("Hello " + name) + textbox2["bg"]="yellow" + textbox2["fg"]="blue" + textbox2["text"]=message + +window=Tk() +window.geometry("500x200") + +label1=Label(text="Enter your name: ") +label1.place(x=30, y=20) + +textbox1=Entry(text="") +textbox1.place(x=150, y=20, width=200, height=25) +textbox1["justify"]="center" +textbox1.focus() + +button1=Button(text="Press me", command=click) +button1.place(x=30,y=50, width=120, height=25) + +textbox2=Message(text="") +textbox2.place(x=150, y=50, width=200, height=25) +textbox2["bg"]="white" +textbox2["fg"]="black" + +window.mainloop() \ No newline at end of file diff --git a/challenges124_132/challenge-125_.py b/challenges124_132/challenge-125_.py new file mode 100644 index 0000000..5b4cd87 --- /dev/null +++ b/challenges124_132/challenge-125_.py @@ -0,0 +1,18 @@ +from tkinter import * +import random + +def click(): + num=random.randint(1,6) + answer["text"]=num + +window=Tk() +window.title("Roll a dice") +window.geometry("100x120") + +button1=Button(text="Roll", command=click) +button1.place(x=30, y=30, width=50, height=25) + +answer=Message(text="") +answer.place(x=40, y=70, width=30, height=25) + +window.mainloop() \ No newline at end of file diff --git a/challenges124_132/challenge-126_.py b/challenges124_132/challenge-126_.py new file mode 100644 index 0000000..bb64c88 --- /dev/null +++ b/challenges124_132/challenge-126_.py @@ -0,0 +1,46 @@ +from tkinter import * + +def add_on(): + num=enter_txt.get() + num=int(num) + answer=output_txt["text"] + answer=int(answer) + total=num+answer + output_txt["text"]=total + +def reset(): + total=0 + output_txt["text"]=0 + enter_txt.delete(0,END) + enter_txt.focus() + +total=0 +num=0 + +window=Tk() +window.title("Adding Together") +window.geometry("450x100") + +enter_lbl=Label(text="Enter a number: ") +enter_lbl.place(x=50, y=20, width=100, height=25) + +enter_txt=Entry(text=0) +enter_txt.place(x=150, y=20, width=100, height=25) +enter_txt["justify"]="center" +enter_txt.focus() + +add_btn=Button(text="Add", command=add_on) +add_btn.place(x=300, y=20, width=50, height=25) + +output_lbl=Label(text="Answer= ") +output_lbl.place(x=50, y=50, width=100, height=25) + +output_txt=Message(text=0) +output_txt.place(x=150, y=50, width=100, height=25) +output_txt["bg"]="white" +output_txt["relief"]="sunken" + +clear_btn=Button(text="Clear", command=reset) +clear_btn.place(x=300, y=50, width=50, height=25) + +window.mainloop() \ No newline at end of file diff --git a/challenges124_132/challenge-127_.py b/challenges124_132/challenge-127_.py new file mode 100644 index 0000000..8b7767f --- /dev/null +++ b/challenges124_132/challenge-127_.py @@ -0,0 +1,33 @@ +from tkinter import * + +def add_name(): + name=name_box.get() + name_list.insert(END,name) + name_box.delete(0,END) + name_box.focus() + +def clear_list(): + name_list.delete(0,END) + name_box.focus() + +window=Tk() +window.title("Names list") +window.geometry("400x200") + +label1=Label(text="Enter a name: ") +label1.place(x=20, y=20, width=100, height=25) + +name_box=Entry(text=0) +name_box.place(x=120, y=20, width=100, height=25) +name_box.focus() + +button1=Button(text="Add to list", command=add_name) +button1.place(x=250, y=20, width=100, height=25) + +name_list=Listbox() +name_list.place(x=120, y=50, width=100, height=100) + +button2=Button(text="Clear list", command=clear_list) +button2.place(x=250, y=50, width=100, height=25) + +window.mainloop() \ No newline at end of file diff --git a/challenges124_132/challenge-128_.py b/challenges124_132/challenge-128_.py new file mode 100644 index 0000000..4fbc2cc --- /dev/null +++ b/challenges124_132/challenge-128_.py @@ -0,0 +1,41 @@ +from tkinter import * + +def convert1(): + mile=textbox2.get() + mile=int(mile) + message=mile/0.6214 + textbox1.delete(0,END) + textbox1.insert(END, message) + textbox1.insert(END, "km") + +def convert2(): + km=textbox1.get() + km=int(km) + message=km*0.6214 + textbox2.delete(0,END) + textbox2.insert(END, message) + textbox2.insert(END, "miles") + +window=Tk() +window.title("Distance") +window.geometry("260x200") + +label1=Label(text="Enter the value you want to convert: ") +label1.place(x=30, y=20) + +textbox1=Entry(text="") +textbox1.place(x=30, y=50, width=200, height=25) +textbox1["justify"]="center" +textbox1.focus() + +convert1=Button(text="Convert miles to km", command=convert1 ) +convert1.place(x=30, y=80, width=200, height=25) + +convert2=Button(text="Convert km to mile", command=convert2 ) +convert2.place(x=30, y=110, width=200, height=25) + +textbox2=Entry(text="") +textbox2.place(x=30, y=140, width=200, height=25) +textbox2["justify"]="center" + +window.mainloop() \ No newline at end of file diff --git a/challenges124_132/challenge-129_.py b/challenges124_132/challenge-129_.py new file mode 100644 index 0000000..d0974c8 --- /dev/null +++ b/challenges124_132/challenge-129_.py @@ -0,0 +1,37 @@ +from tkinter import * + +def add_number(): + num=num_box.get() + if num.isdigit(): + num_list.insert(END,num) + num_box.delete(0,END) + num_box.focus() + else: + num_box.delete(0,END) + num_box.focus() + +def clear_list(): + num_list.delete(0,END) + num_box.focus() + +window=Tk() +window.title("Number list") +window.geometry("400x200") + +label1=Label(text="Enter a number: ") +label1.place(x=20, y=20, width=100, height=25) + +num_box=Entry(text=0) +num_box.place(x=120, y=20, width=100, height=25) +num_box.focus() + +num_list=Listbox() +num_list.place(x=120, y=50, width=100, height=100) + +button1=Button(text="Add to list", command=add_number) +button1.place(x=250, y=20, width=100, height=25) + +button2=Button(text="Clear list", command=clear_list) +button2.place(x=250, y=50, width=100, height=25) + +window.mainloop() \ No newline at end of file diff --git a/challenges124_132/challenge-130_.py b/challenges124_132/challenge-130_.py new file mode 100644 index 0000000..3b0acde --- /dev/null +++ b/challenges124_132/challenge-130_.py @@ -0,0 +1,51 @@ +from tkinter import * +import csv + +def add_number(): + num=num_box.get() + if num.isdigit(): + num_list.insert(END,num) + num_box.delete(0,END) + num_box.focus() + else: + num_box.delete(0,END) + num_box.focus() + +def clear_list(): + num_list.delete(0,END) + num_box.focus() + +def save_list(): + file=open("numbers.csv","w") + tmp_list=num_list.get(0,END) + item=0 + for x in tmp_list: + newrecord=tmp_list[item]+"\n" + file.write(str(newrecord)) + item=item+1 + file.close() + +window=Tk() +window.title("Number list") +window.geometry("400x200") + +label1=Label(text="Enter a number: ") +label1.place(x=20, y=20, width=100, height=25) + +num_box=Entry(text=0) +num_box.place(x=120, y=20, width=100, height=25) +num_box.focus() + +num_list=Listbox() +num_list.place(x=120, y=50, width=100, height=100) + +button1=Button(text="Add to list", command=add_number) +button1.place(x=250, y=20, width=100, height=25) + +button2=Button(text="Clear list", command=clear_list) +button2.place(x=250, y=50, width=100, height=25) + +button3=Button(text="Save list", command=save_list) +button3.place(x=250, y=80, width=100, height=25) + +window.mainloop() \ No newline at end of file diff --git a/challenges124_132/challenge-131_.py b/challenges124_132/challenge-131_.py new file mode 100644 index 0000000..275441e --- /dev/null +++ b/challenges124_132/challenge-131_.py @@ -0,0 +1,44 @@ +from tkinter import * +import csv + +def create_new(): + file=open("ages.csv","w") + file.close() + +def save_list(): + file=open("ages.csv","a") + name=name_box.get() + age=age_box.get() + newrecord=name+","+age+"\n" + file.write(str(newrecord)) + file.close() + name_box.delete(0,END) + age_box.delete(0,END) + name_box.focus() + +window=Tk() +window.title("People List") +window.geometry("400x100") + +label1=Label(text="Enter a name: ") +label1.place(x=20, y=20, width=100, height=25) + +name_box=Entry(text="") +name_box.place(x=120, y=20, width=100, height=25) +name_box["justify"]="left" +name_box.focus() + +label2=Label(text="Enter their age: ") +label2.place(x=20, y=50, width=100, height=25) + +age_box=Entry(text="") +age_box.place(x=120, y=50, width=100, height=25) +age_box["justify"]="left" + +button1=Button(text="Create a new file", command=create_new) +button1.place(x=250, y=20, width=100, height=25) + +button2=Button(text="Add to file", command=save_list) +button2.place(x=250, y=50, width=100, height=25) + +window.mainloop() \ No newline at end of file diff --git a/challenges124_132/challenge-132_.py b/challenges124_132/challenge-132_.py new file mode 100644 index 0000000..b845510 --- /dev/null +++ b/challenges124_132/challenge-132_.py @@ -0,0 +1,58 @@ +from tkinter import * +import csv + +def save_list(): + file=open("ages.csv","a") + name=name_box.get() + age=age_box.get() + newrecord=name+","+age+"\n" + file.write(str(newrecord)) + file.close() + name_box.delete(0,END) + age_box.delete(0,END) + name_box.focus() + +def read_list(): + name_list.delete(0,END) + file=list(csv.reader(open("ages.csv"))) + tmp=[] + for row in file: + tmp.append(row) + x=0 + for i in tmp: + data=tmp[x] + name_list.insert(END,data) + x=x+1 + +window=Tk() +window.title("People List") +window.geometry("400x200") + +label1=Label(text="Enter a name: ") +label1.place(x=20, y=20, width=100, height=25) + +name_box=Entry(text="") +name_box.place(x=120, y=20, width=100, height=25) +name_box["justify"]="left" +name_box.focus() + +label2=Label(text="Enter their age: ") +label2.place(x=20, y=50, width=100, height=25) + +age_box=Entry(text="") +age_box.place(x=120, y=50, width=100, height=25) +age_box["justify"]="left" + +button1=Button(text="Add to file", command=save_list) +button1.place(x=250, y=20, width=100, height=25) + +button2=Button(text="Read list", command=read_list) +button2.place(x=250, y=50, width=100, height=25) + +label3=Label(text="Saved names: ") +label3.place(x=20, y=80, width=100, height=25) + +name_list=Listbox() +name_list.place(x=120, y=80, width=230, height=100) + +window.mainloop() \ No newline at end of file From fcd4cfa8bc6e43527c5b66d6fe36d65ec4ce9c7b Mon Sep 17 00:00:00 2001 From: SS Huh Date: Wed, 8 Dec 2021 20:15:04 +0900 Subject: [PATCH 4/7] Add files via upload --- challenges133_138/1.png | Bin 0 -> 82261 bytes challenges133_138/challenge-133_.py | 37 +++++++++++++++++ challenges133_138/challenge-134_.py | 62 ++++++++++++++++++++++++++++ challenges133_138/challenge-135_.py | 20 +++++++++ challenges133_138/challenge-136_.py | 38 +++++++++++++++++ challenges133_138/challenge-137_.py | 48 +++++++++++++++++++++ challenges133_138/challenge-138_.py | 33 +++++++++++++++ 7 files changed, 238 insertions(+) create mode 100644 challenges133_138/1.png create mode 100644 challenges133_138/challenge-133_.py create mode 100644 challenges133_138/challenge-134_.py create mode 100644 challenges133_138/challenge-135_.py create mode 100644 challenges133_138/challenge-136_.py create mode 100644 challenges133_138/challenge-137_.py create mode 100644 challenges133_138/challenge-138_.py diff --git a/challenges133_138/1.png b/challenges133_138/1.png new file mode 100644 index 0000000000000000000000000000000000000000..8c7f7c2b5054cb83d25b00df50897f1a5d120acb GIT binary patch literal 82261 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 bGV}6Z3mfUs8s)a!00000NkvXXu0mjf15ai$ literal 0 HcmV?d00001 diff --git a/challenges133_138/challenge-133_.py b/challenges133_138/challenge-133_.py new file mode 100644 index 0000000..1217eae --- /dev/null +++ b/challenges133_138/challenge-133_.py @@ -0,0 +1,37 @@ +from tkinter import * + +def click(): + name=textbox1.get() + message=str("Hello "+name) + textbox2["text"]=message + +window=Tk() +window.title("Names") +window.geometry("450x350") +#window.wm_iconbitmap("stripes.ico") +window.configure(background="black") + +logo=PhotoImage(file="1.png") +logoimage=Label(image=logo) +logoimage.place(x=100, y=20, width=200, height=150) + +label1=Label(text="Enter your name: ") +label1.place(x=30, y=200) +label1["bg"]="black" +label1["fg"]="white" + +textbox1=Entry(text="") +textbox1.place(x=150, y=200, width=200, height=25) +textbox1["justify"]="center" +textbox1.focus() + +button1=Button(text="Press me", command=click) +button1.place(x=30, y=250, width=120, height=25) +button1["bg"]="yellow" + +textbox2=Message(text="") +textbox2.place(x=150, y=250, width=200, height=25) +textbox2["bg"]="white" +textbox2["fg"]="black" + +window.mainloop() \ No newline at end of file diff --git a/challenges133_138/challenge-134_.py b/challenges133_138/challenge-134_.py new file mode 100644 index 0000000..bba2699 --- /dev/null +++ b/challenges133_138/challenge-134_.py @@ -0,0 +1,62 @@ +from tkinter import * +import random + +def checkans(): + theirans=int(ansbox.get()) + num1=int(num1box["text"]) + num2=int(num2box["text"]) + ans=num1+num2 + if theirans==ans: + img=PhotoImage(file="correct.png") + imgbx.image=img + else: + img=PhotoImage(file="wrong.pn53g") + imgbx.image=img + imgbx["image"]=img + imgbx.update() + +def nextquestion(): + ansbox.delete(0,END) + num1=random.randint(10,50) + num1box["text"]=num1 + num2=random.randint(10,50) + num2box["text"]=num2 + img=PhotoImage(file="") + imgbx.image=img + imgbx["image"]=img + imgbx.update() + + +window=Tk() +window.title("Addition") +window.geometry("250x300") + +num1box=Label(text="0") +num1box.place(x=50, y=30, width=25, height=25) +addsymbl=Message(text="+") +addsymbl.place(x=75, y=30, width=25, height=25) + +num2box=Label(text="0") +num2box.place(x=100, y=30, width=25, height=25) +eqlsymbl=Message(text="=") +eqlsymbl.place(x=125, y=30, width=25, height=25) + +ansbox=Entry(text="") +ansbox.place(x=150, y=30, width=25, height=25) +ansbox["justify"]="center" +ansbox.focus() + +checkbtn=Button(text="Check", command=checkans) +checkbtn.place(x=50, y=60, width=75, height=25) + +nextbtn=Button(text="Next", command=nextquestion) +nextbtn.place(x=130, y=60, width=75, height=25) + +img=PhotoImage(file="") +imgbx=Label(image=img) +imgbx.image=img +imgbx.place(x=25, y=100, width=200, height=150) + +nextquestion() + +window.mainloop() \ No newline at end of file diff --git a/challenges133_138/challenge-135_.py b/challenges133_138/challenge-135_.py new file mode 100644 index 0000000..548f3b1 --- /dev/null +++ b/challenges133_138/challenge-135_.py @@ -0,0 +1,20 @@ +from tkinter import * + +def clicked(): + sel=selectcolour.get() + window.configure(background=sel) + +window=Tk() +window.title("background") +window.geometry("200x200") + +selectcolour=StringVar(window) +selectcolour.set("Grey") + +colourlist=OptionMenu(window,selectcolour, "Grey", "Red", "Blue", "Green", "Yellow") +colourlist.place(x=50,y=30) + +clickme=Button(text="Click me", command=clicked) +clickme.place(x=50, y=150, width=60, height=30) + +window.mainloop() \ No newline at end of file diff --git a/challenges133_138/challenge-136_.py b/challenges133_138/challenge-136_.py new file mode 100644 index 0000000..773865e --- /dev/null +++ b/challenges133_138/challenge-136_.py @@ -0,0 +1,38 @@ +from tkinter import * + +def add_to_list(): + name=namebox.get() + namebox.delete(0,END) + genderselection = gender.get() + gender.set("M/F") + newdata = name + "," + genderselection + "\n" + name_list.insert(END,newdata) + namebox.focus() + +window=Tk() +window.title("People list") +window.geometry("400x400") + +namelbl=Label(text="Enter their name") +namelbl.place(x=50, y=50, width=100, height=25) + +namebox=Entry(text="") +namebox.place(x=150, y=50, width=150, height=25) +namebox.focus() + +genderlbl=Label(text="Select gender") +genderlbl.place(x=50, y=100, width=100, height=25) + +gender=StringVar(window) +gender.set("M/F") + +gendermenu=OptionMenu(window,gender, "M", "F") +gendermenu.place(x=150,y=100) + +name_list=Listbox() +name_list.place(x=150, y=150, width=150, height=100) + +addbtn=Button(text="Add to list", command=add_to_list) +addbtn.place(x=50, y=300, width=100, height=25) + +window.mainloop() \ No newline at end of file diff --git a/challenges133_138/challenge-137_.py b/challenges133_138/challenge-137_.py new file mode 100644 index 0000000..39afa8b --- /dev/null +++ b/challenges133_138/challenge-137_.py @@ -0,0 +1,48 @@ +from tkinter import * + +def add_to_list(): + name=namebox.get() + namebox.delete(0,END) + genderselection = gender.get() + gender.set("M/F") + newdata = name + "," + genderselection + "\n" + name_list.insert(END,newdata) + namebox.focus() + file=open("names.txt","a") + file.write(newdata) + file.close() + +def print_list(): + file=open("names.txt","r") + print(file.read()) + +window=Tk() +window.title("People list") +window.geometry("400x400") + +namelbl=Label(text="Enter their name") +namelbl.place(x=50, y=50, width=100, height=25) + +namebox=Entry(text="") +namebox.place(x=150, y=50, width=150, height=25) +namebox.focus() + +genderlbl=Label(text="Select gender") +genderlbl.place(x=50, y=100, width=100, height=25) + +gender=StringVar(window) +gender.set("M/F") + +gendermenu=OptionMenu(window,gender, "M", "F") +gendermenu.place(x=150,y=100) + +name_list=Listbox() +name_list.place(x=150, y=150, width=150, height=100) + +addbtn=Button(text="Add to list", command=add_to_list) +addbtn.place(x=50, y=300, width=100, height=25) + +printlst=Button(text="Print list", command=print_list) +printlst.place(x=175, y=300, width=100, height=25) + +window.mainloop() \ No newline at end of file diff --git a/challenges133_138/challenge-138_.py b/challenges133_138/challenge-138_.py new file mode 100644 index 0000000..6542e1f --- /dev/null +++ b/challenges133_138/challenge-138_.py @@ -0,0 +1,33 @@ +#Sometimes, it doesn't work with certain error message on Jupyter notebook. +#In case of error, restart IDE and that will do. + +from tkinter import * + +def clicked(): + num=selection.get() + artref=num+".png" + photo=PhotoImage(file=artref) + photobox.image=photo + photobox["image"]=photo + photobox.update() + +window=Tk() +window.title("Art") +window.geometry("400x350") + +art=PhotoImage(file="1.png") +photobox=Label(window, image=art) +photobox.image=art +photobox.place(x=100, y=20, width=200, height=150) + +label=Label(text="Select art number: ") +label.place(x=50, y=200, width=100, height=25) + +selection=Entry(text="") +selection.place(x=200, y=200, width=100, height=25) +selection.focus() + +clickme=Button(text="See art", command=clicked) +clickme.place(x=150, y=250, width=100, height=25) + +window.mainloop() \ No newline at end of file From 0cb8bd29c033413bfdc4ad81812515eaaa278417 Mon Sep 17 00:00:00 2001 From: SS Huh Date: Wed, 8 Dec 2021 20:19:52 +0900 Subject: [PATCH 5/7] Add files via upload --- challenges139-145/BookInfo.db | Bin 0 -> 16384 bytes challenges139-145/challenge-143_.py | 15 +++++++++ challenges139-145/challenge-144_.py | 23 ++++++++++++++ challenges139-145/challenge-145_.py | 46 ++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 challenges139-145/BookInfo.db create mode 100644 challenges139-145/challenge-143_.py create mode 100644 challenges139-145/challenge-144_.py create mode 100644 challenges139-145/challenge-145_.py diff --git a/challenges139-145/BookInfo.db b/challenges139-145/BookInfo.db new file mode 100644 index 0000000000000000000000000000000000000000..f25aa2db0f7f08321c815a5e11ceb68854acc046 GIT binary patch literal 16384 zcmeI&&rTCT7y$6u-7W=$4x-YKs+ojf!2$^yFLH6AjUphmHZjB~nRch`gzXNUog(!{ zJb5v`0T*Avi*KNb_y8sb4j%Q)(do9;7NRF(H2Egk?(F>i=69Q!KDfWi6(c1ft5lKe zXapGsx=XjDHD{dAJ4Gu_`tr{Xv7Q8c&mY8W3QD|Uo1$M5tD5(t0*2!H?xfB*=9 z00@8p2!H?x{CR;r+lt2Habu4wTJYGS5L-d`6Ise-oP37loyFA*35%u%iB8LD!hOZc zOp@G=D#j^E+$Ab!UJ3~!BF{1HA!q__( zhSBO3v|naVDDA>lF!yM+HC=BkS&tT(C@pfSD&gGIvu0o1Nf?OxF53-ip5E1O(z+7i z_hx&{&G~l5($M`)>|y;x@IJy{@CW=xXCQ$92!H?xfB*=900@8p2!H?xfB*>mZGrO< zYhrvoC{jrta?fSy=DC7DW?7SoyK^fuBqyHg@A9JLffC-BX(h*(Sdn?05~sqX-)cW@ zSgC|lrm8~8Ql;6Jv%HYCI&BQ<6-Dq{gumiX_`S|R0s#;J0T2KI5C8!X009sH0T2KI z5cr1#ur*_P8_g%pe1(w)(|5|8RGA_TQUAG5 zl+2HQo;_oug;dxsU^~nwE~j2Vs*OM~**LL? ORDER BY DatePublished""", [selectionyear]) + +for x in cursor.fetchall(): + print(x) + +db.close() \ No newline at end of file diff --git a/challenges139-145/challenge-144_.py b/challenges139-145/challenge-144_.py new file mode 100644 index 0000000..69c0043 --- /dev/null +++ b/challenges139-145/challenge-144_.py @@ -0,0 +1,23 @@ +import sqlite3 + +file = open("Booklist.txt","w") + +with sqlite3.connect("BookInfo.db") as db: + cursor=db.cursor() + +cursor.execute("SELECT Name from Authors") +for x in cursor.fetchall(): + print(x) + +print() +selectauthor=input("Enter an author's name: ") +print() + +cursor.execute("SELECT * from Books WHERE Author=?", [selectauthor]) +for x in cursor.fetchall(): + newrecord=str(x[0])+" - "+x[1]+" - "+x[2]+" - "+str(x[3])+"\n" + file.write(newrecord) + +file.close() + +db.close() \ No newline at end of file diff --git a/challenges139-145/challenge-145_.py b/challenges139-145/challenge-145_.py new file mode 100644 index 0000000..fab2033 --- /dev/null +++ b/challenges139-145/challenge-145_.py @@ -0,0 +1,46 @@ +import sqlite3 +from tkinter import * + +def addtolist(): + newname=sname.get + newgrade=sgrade.get + cursor.execute("INSERT INTO Scores (name,score) VALUES (?,?)", (newname,newgrade)) + db.commit() + sname.delete(0,END) + sgrade.delete(0,END) + sname.focus() + +def clearlist(): + sname.delete(0,END) + sgrade.delete(0,END) + sname.focus() + +with sqlite3.connect("TestScore.db") as db: + cursor=db.cursor() + +cursor.execute("""CREATE TABLE IF NOT EXISTS Scores( + id integer RIMAY KEY, name text, score integer);""") + +window=Tk() +window.title("TestScores") +window.geometry("450x200") + +label1=Label(text="Enter student's name: ") +label1.place(x=30, y=35) +sname=Entry(text="") +sname.place(x=150, y=35, width=200, height=25) +sname.focus() + +label2=Label(text="Enter student's grade: ") +label2.place(x=30, y=80) +sgrade=Entry(text="") +sgrade.place(x=150, y=80, width=200, height=25) +sgrade.focus() + +addbtn=Button(text="Add", command=addtolist) +addbtn.place(x=150, y=120, width=75, height=25) +clearbtn=Button(text="Clear", command=clearlist) +clearbtn.place(x=250, y=120, width=75, height=25) + +window.mainloop() +db.close \ No newline at end of file From d301056019ab3d141e5cc686819ea8429c072f35 Mon Sep 17 00:00:00 2001 From: SS Huh Date: Wed, 8 Dec 2021 20:21:39 +0900 Subject: [PATCH 6/7] Create readme.md --- challenges146_150/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 challenges146_150/readme.md diff --git a/challenges146_150/readme.md b/challenges146_150/readme.md new file mode 100644 index 0000000..62e6010 --- /dev/null +++ b/challenges146_150/readme.md @@ -0,0 +1 @@ +files added by chemineer From 9ac85b64b3cf43f56d21f19d98479c4dd4a9dc68 Mon Sep 17 00:00:00 2001 From: SS Huh Date: Wed, 8 Dec 2021 20:37:31 +0900 Subject: [PATCH 7/7] Add files via upload --- challenges146_150/challenge-146_.py | 57 +++++++ challenges146_150/challenge-147_.py | 92 +++++++++++ challenges146_150/challenge-148_.py | 144 +++++++++++++++++ challenges146_150/challenge-149_.py | 38 +++++ challenges146_150/challenge-150_.py | 230 ++++++++++++++++++++++++++++ 5 files changed, 561 insertions(+) create mode 100644 challenges146_150/challenge-146_.py create mode 100644 challenges146_150/challenge-147_.py create mode 100644 challenges146_150/challenge-148_.py create mode 100644 challenges146_150/challenge-149_.py create mode 100644 challenges146_150/challenge-150_.py diff --git a/challenges146_150/challenge-146_.py b/challenges146_150/challenge-146_.py new file mode 100644 index 0000000..4152396 --- /dev/null +++ b/challenges146_150/challenge-146_.py @@ -0,0 +1,57 @@ +alphabet=["a", "b", "c", "d", "e", "f", "g", "h", "i", +"j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", +"u", "v", "w", "x", "y", "z", " "] + +def get_data(): + word=input("Enter your message: ") + word=word.lower() + num=int(input("Enter a number (1-26): ")) + while num>26 or num==0: + num=int(input("Out of range, Please enter a number (1-26): ")) + data=(word,num) + return(data) + +def make_code(word,num): + new_word="" + for x in word: + y=alphabet.index(x) + y=y+num + if y>26: + y=y-27 + char=alphabet[y] + new_word=new_word +char + print(new_word) + print() + +def decode(word,num): + new_word="" + for x in word: + y=alphabet.index(x) + y=y-num + if y<0: + y=y+27 + char=alphabet[y] + new_word=new_word +char + print(new_word) + print() + +def main(): + again=True + while again==True: + print("1) Make a code") + print("2) Decode a message") + print("3) Quit") + print() + selection=int(input("Enter your selection: ")) + if selection==1: + (word,num)=get_data() + make_code(word,num) + elif selection==2: + (word,num)=get_data() + decode(word,num) + elif selection==3: + again=False + else: + print("Incorrect selection") + +main() diff --git a/challenges146_150/challenge-147_.py b/challenges146_150/challenge-147_.py new file mode 100644 index 0000000..8d787ce --- /dev/null +++ b/challenges146_150/challenge-147_.py @@ -0,0 +1,92 @@ +import random + +def select_col(): + colours=["r", "b", "o", "y", "p", "g", "w"] + c1=random.choice(colours) + c2=random.choice(colours) + c3=random.choice(colours) + c4=random.choice(colours) + data=(c1, c2, c3, c4) + return data + +def tryit(c1, c2, c3, c4): + print("The colours are: (r)ed, (b)lue, (o)range, (y)ellow, (p)ink, (g)reen, (w)hite") + try_again=True + while try_again==True: + u1=input("Enter your choice for place 1: ") + u1=u1.lower() + if u1 !="r" and u1 !="b" and u1 !="o" and u1 !="y" and u1 !="p" and u1 !="g" and u1 !="w": + print("Incorrect selection") + else: + try_again=False + + try_again=True + while try_again==True: + u2=input("Enter your choice for place 2: ") + u2=u2.lower() + if u2 !="r" and u2 !="b" and u2 !="o" and u2 !="y" and u2 !="p" and u2 !="g" and u2 !="w": + print("Incorrect selection") + else: + try_again=False + + try_again=True + while try_again==True: + u3=input("Enter your choice for place 3: ") + u3=u3.lower() + if u3 !="r" and u3 !="b" and u3 !="o" and u3 !="y" and u3 !="p" and u3 !="g" and u3 !="w": + print("Incorrect selection") + else: + try_again=False + + try_again=True + while try_again==True: + u4=input("Enter your choice for place 4: ") + u4=u4.lower() + if u4 !="r" and u4 !="b" and u4 !="o" and u4 !="y" and u4 !="p" and u4 !="g" and u4 !="w": + print("Incorrect selection") + else: + try_again=False + + correct=0 + wrong_place=0 + + if c1==u1: + correct=correct+1 + elif c1==u2 or c1==u3 or c1==u4: + wrong_place=wrong_place+1 + + if c2==u2: + correct=correct+1 + elif c2==u1 or c2==u3 or c2==u4: + wrong_place=wrong_place+1 + + if c3==u3: + correct=correct+1 + elif c3==u1 or c3==u2 or c3==u4: + wrong_place=wrong_place+1 + + if c4==u4: + correct=correct+1 + elif c4==u1 or c4==u2 or c4==u3: + wrong_place=wrong_place+1 + + print("Correct colour in the correct place: ", correct) + print("Correct colour but in the wrong place: ", wrong_place) + print() + + data2=(correct, wrong_place) + return data2 + +def main(): + (c1, c2, c3, c4) = select_col() + score = 0 + play = True + while play == True: + (correct, wrong_place) = tryit(c1, c2, c3, c4) + score=score+1 + if correct==4: + play=False + print("You win!") + print("You took", score, "guesses") + +main() \ No newline at end of file diff --git a/challenges146_150/challenge-148_.py b/challenges146_150/challenge-148_.py new file mode 100644 index 0000000..593dde4 --- /dev/null +++ b/challenges146_150/challenge-148_.py @@ -0,0 +1,144 @@ +import csv + +def get_data(): + file=list(csv.reader(open("passwords.csv"))) + tmp=[] + for x in file: + tmp.append(x) + return tmp + +def create_userID(tmp): + name_again=True + while name_again==True: + userID=input("Enter a new user ID: ") + userID.lower() + inlist=False + row=0 + for y in tmp: + if userID in tmp[row][0]: + print(userID, "has already been allocated") + inlist=True + row=row+1 + if inlist==False: + name_again=False + return userID + +def create_password(): + sclist=["!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "?"] + nclist=["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] + tryagain=True + while tryagain==True: + score=0 + uc=False + lc=False + sc=False + nc=False + password=input("Enter Password: ") + password2=input("Enter password again: ") + length=len(password) + if length>=8: + score=score+1 + for x in password: + if x.islower(): + lc=True + if x.isupper(): + uc=True + if x in sclist: + sc=True + if x in nclist: + ns=True + + if sc==True: + score=score+1 + if lc==True: + score=score+1 + if uc==True: + score=score+1 + if nc==True: + score=score+1 + + if score==1 or score==2: + print("This is a weak password. Try again.") + + if score==3 or score==4: + print("This password could be improved. ") + again=input("Do you want to try for a stronger password? (y/n) ") + again.lower() + if again=="n": + tryagain=False + + if password != password2: + print("Password do not match. File not saved") + main() + else: + return password + +def find_userID(tmp): + ask_name_again=True + userID="" + while ask_name_again == True: + searchID=input("Enter the user ID you are looking for ") + searchID.lower() + inlist=False + row=0 + for y in tmp: + if searchID in tmp[row][0]: + inlist=True + row=row+1 + if inlist==True: + userID=searchID + ask_name_again=False + else: + print(searchID, "is NOT in the list") + return userID + +def change_password(userID,tmp): + if userID!="": + password=create_password() + ID=userID.index(userID) + tmp(ID)[1]=password + file=open("passwords.csv", "w") + x=0 + for row in tmp: + newrecord=tmp[x][0] + "," +tmp[x][1] + "\n" + file.write(newrecord) + x=x+1 + file.close() + +def display_all_userID(): + tmp=get_data() + x=0 + for row in tmp: + print(tmp[x][0]) + x=x+1 + +def main(): + tmp=get_data() + go_again=True + while go_again==True: + print() + print("1) Create a new User ID") + print("2) Change a password") + print("3) Display all User IDs") + print("4) Quit") + print() + + selection=int(input("Enter Selection: ")) + if selection==1: + userID=create_userID(tmp) + password=create_password() + file=open("Passwords.csv","a") + newrecord=userID+","+password+"\n" + file.write(str(newrecord)) + file.close() + elif selection==2: + userID=find_userID(tmp) + change_password(userID,tmp) + elif selection==3: + display_all_userID() + elif selection==4: + go_again=False + else: + print("Incorrect selection") + +main() \ No newline at end of file diff --git a/challenges146_150/challenge-149_.py b/challenges146_150/challenge-149_.py new file mode 100644 index 0000000..0653a10 --- /dev/null +++ b/challenges146_150/challenge-149_.py @@ -0,0 +1,38 @@ +from tkinter import * + +def show_table(): + num=int(num_box.get()) + value=1 + for i in range (1,13): + answer=i*num + num_list.insert(END,(i, "x", num, "=", answer)) + value=value+1 + num_box.delete(0,END) + num_box.focus() + +def clear_list(): + num_box.delete(0,END) + num_list.delete(0,END) + num_box.focus() + +window=Tk() +window.title=("Times Table") +window.geometry("400x280") + +label1=Label(text="Enter a number: ") +label1.place(x=20, y=20, width=100, height=25) + +num_box=Entry(text=0) +num_box.place(x=120, y=20, width=100, height=25) +num_box.focus() + +button1=Button(text="View Times Table", command=show_table) +button1.place(x=250, y=20, width=120, height=25) + +num_list=Listbox() +num_list.place(x=120, y=50, width=100, height=200) + +button2=Button(text="Clear", command=clear_list) +button2.place(x=250, y=50, width=120, height=25) + +window.mainloop() \ No newline at end of file diff --git a/challenges146_150/challenge-150_.py b/challenges146_150/challenge-150_.py new file mode 100644 index 0000000..3804ba0 --- /dev/null +++ b/challenges146_150/challenge-150_.py @@ -0,0 +1,230 @@ +import sqlite3 +from tkinter import * + +with sqlite3.connect("Art.db") as db: + cursor=db.cursor() + +cursor.execute("""CREATE TABLE IF NOT EXISTS Artists(artistid integer PRIMARY KEY, name text, address text, town text, county text, postcode text); +""") + +cursor.execute("""CREATE TABLE IF NOT EXISTS Art(pieceid integer PRIMARY KEY, artistid integer, title text, medium text, price integer); +""") + +def addartist(): + newname=artistname.get() + newaddress=artistadd.get() + newtown=artisttown.get() + newcounty=artistcounty.get() + newpostcode=artistpostcode.get() + cursor.execute("""INSERT INTO Artists(name, address, town, county, postcode) + VALUES (?,?,?,?,?)""",(newname, newaddress, newtown, newcounty, newpostcode)) + db.commit() + artistname.delete(0,END) + artistadd.delete(0,END) + artisttown.delete(0,END) + artistcounty.delete(0,END) + artistpostcode.delete(0,END) + artistname.focus() + +def clearartist(): + artistname.delete(0,END) + artistadd.delete(0,END) + artisttown.delete(0,END) + artistcounty.delete(0,END) + artistpostcode.delete(0,END) + artistname.focus() + +def addart(): + newartname=artname.get() + newtitle=arttitle.get() + newmedium=medium.get() + newprice=artprice.get() + cursor.execute("""INSERT INTO Art(artistid, title, medium, price) + VALUES (?,?,?,?)""",(newartname, newtitle, newmedium, newprice)) + db.commit() + artname.delete(0,END) + arttitle.delete(0,END) + medium.set("") + artprice.delete(0,END) + artistname.focus() + +def clearart(): + artname.delete(0,END) + arttitle.delete(0,END) + medium.set("") + artprice.delete(0,END) + artistname.focus() + +def clearwindow(): + outputwindow.delete(0,END) + +def viewartists(): + cursor.execute("SELECT * FROM Artists") + for x in cursor.fetchall(): + newrecord=str(x[0])+","+str(x[1])+","+str(x[2])+","+str(x[3])+","+str(x[4])+","+x[5]+"\n" + outputwindow.insert(END,newrecord) + +def viewart(): + cursor.execute("SELECT * FROM Art") + for x in cursor.fetchall(): + newrecord=str(x[0])+","+str(x[1])+","+str(x[2])+","+str(x[3])+","+str(x[4])+"\n" + outputwindow.insert(END,newrecord) + +def searchartistoutput(): + selectedartist=searchartist.get() + cursor.execute("SELECT name FROM Artists WHERE artistid=?",[selectedartist]) + for x in cursor.fetchall(): + outputwindow.insert(END,x) + cursor.execute("SELECT * FROM Art WHERE artistid=?",[selectedartist]) + for x in cursor.fetchall(): + newrecord=str(x[0])+","+str(x[1])+","+str(x[2])+","+str(x[3])+","+str(x[4])+"\n" + outputwindow.insert(END,newrecord) + searchartist.delete(0,END) + searchartist.focus() + +def searchmediumoutput(): + selectedmedium=medium2.get() + cursor.execute("SELECT Art.pieceid, Artists.name, Art.title, Art.medium, Art.price FROM Artists, Art WHERE Artists.artistid=Art.artistid AND Art.medium=?",[selectedmedium]) + for x in cursor.fetchall(): + newrecord=str(x[0])+","+str(x[1])+","+str(x[2])+","+str(x[3])+","+str(x[4])+"\n" + outputwindow.insert(END,newrecord) + medium2.set("") + +def searchbyprice(): + minprice=selectmin.get() + maxprice=selectmax.get() + cursor.execute("SELECT Art.pieceid, Artists.name, Art.title, Art.medium, Art.price FROM Artists, Art WHERE Artists.artistid=Art.artistid AND Art.price>=? AND Art.price<=?",[minprice,maxprice]) + for x in cursor.fetchall(): + newrecord=str(x[0])+","+str(x[1])+","+str(x[2])+","+str(x[3])+","+str(x[4])+"\n" + outputwindow.insert(END,newrecord) + selectmin.delete(0,END) + selectmax.delete(0,END) + selectmin.focus() + +def sold(): + file=open("SoldArt.txt","a") + selectedpiece=soldpiece.get() + cursor.execute("SELECT * FROM Art WHERE pieceid=?",[selectedpiece]) + for x in cursor.fetchall(): + newrecord=str(x[0])+","+str(x[1])+","+str(x[2])+","+str(x[3])+","+str(x[4])+"\n" + file.write(newrecord) + file.close() + cursor.execute("DELETE FROM Art WHERE pieceid=?",[selectedpiece]) + db.commit() + +window=Tk() +window.title("Art") +window.geometry("1220x600") + +title1=Label(text="Enter new details: ") +title1.place(x=10, y=10, width=100, height=25) + +artistnamelbl=Label(text="Name: ") +artistnamelbl.place(x=30, y=40, width=80, height=25) +artistname=Entry(text="") +artistname.place(x=110, y=40, width=200, height=25) +artistname.focus() + +artistaddlbl=Label(text="Address: ") +artistaddlbl.place(x=310, y=40, width=80, height=25) +artistadd=Entry(text="") +artistadd.place(x=390, y=40, width=200, height=25) + +artisttownlbl=Label(text="Town: ") +artisttownlbl.place(x=590, y=40, width=80, height=25) +artisttown=Entry(text="") +artisttown.place(x=670, y=40, width=100, height=25) + +artistcountylbl=Label(text="County: ") +artistcountylbl.place(x=770, y=40, width=80, height=25) +artistcounty=Entry(text="") +artistcounty.place(x=850, y=40, width=100, height=25) + +artistpostcodelbl=Label(text="Postcode: ") +artistpostcodelbl.place(x=950, y=40, width=80, height=25) +artistpostcode=Entry(text="") +artistpostcode.place(x=1030, y=40, width=100, height=25) + +addbtn=Button(text="Add Artist", command=addartist) +addbtn.place(x=110, y=80, width=130, height=25) + +clearbtn=Button(text="Clear Artist", command=clearartist) +clearbtn.place(x=250, y=80, width=130, height=25) + +artnamelbl=Label(text="Artist ID: ") +artnamelbl.place(x=30, y=120, width=80, height=25) +artname=Entry(text="") +artname.place(x=110, y=120, width=50, height=25) + +arttitlelbl=Label(text="Title: ") +arttitlelbl.place(x=200, y=120, width=80, height=25) +arttitle=Entry(text="") +arttitle.place(x=280, y=120, width=280, height=25) + +artmediumlbl=Label(text="Medium: ") +artmediumlbl.place(x=590, y=120, width=80, height=25) + +medium=StringVar(window) +artmedium=OptionMenu(window, medium, "Oil", "Watercolour", "Ink", "Acrylic") +artmedium.place(x=670, y=120, width=100, height=25) + +artpricelbl=Label(text="Price: ") +artpricelbl.place(x=770, y=120, width=80, height=25) +artprice=Entry(text="") +artprice.place(x=850, y=120, width=100, height=25) + +addartbtn=Button(text="Add Piece", command=addart) +addartbtn.place(x=110, y=150, width=130, height=25) + +clearartbtn=Button(text="Clear Piece", command=clearart) +clearartbtn.place(x=250, y=150, width=130, height=25) + +outputwindow=Listbox() +outputwindow.place(x=10, y=200, width=1000, height=350) + +clearoutputwindow=Button(text="Clear output", command=clearwindow) +clearoutputwindow.place(x=10, y=200, width=1000, height=350) + +viewallartists=Button(text="View All Artists", command=viewartists) +viewallartists.place(x=1020, y=230, width=155, height=25) + +viewallart=Button(text="View All Art", command=viewart) +viewallart.place(x=1020, y=260, width=155, height=25) + +searchartist=Entry(text="") +searchartist.place(x=1020, y=300, width=50, height=25) + +searchartistbtn=Button(text="Search by Artist", command=searchartistoutput) +searchartistbtn.place(x=1075, y=300, width=100, height=25) + +medium2=StringVar(window) + +searchmedium=OptionMenu(window, medium2, "Oil", "Watercolour", "Ink", "Acrylic") +searchmedium.place(x=1020, y=330, width=100, height=25) + +searchmediumbtn=Button(text="Search", command=searchmediumoutput) +searchmediumbtn.place(x=1125, y=330, width=50, height=25) + +minlbl=Label(text="Min: ") +minlbl.place(x=1020, y=360, width=75, height=25) + +maxlbl=Label(text="Max: ") +minlbl.place(x=1100, y=360, width=75, height=25) + +selectmin=Entry(text="") +selectmin.place(x=1020, y=380, width=75, height=25) + +selectmax=Entry(text="") +selectmax.place(x=1100, y=380, width=75, height=25) + +searchpricebtn=Button(text="Search by Price", command=searchbyprice) +searchpricebtn.place(x=1020, y=410, width=155, height=25) + +soldpiece=Entry(text="") +soldpiece.place(x=1020, y=450, width=50, height=25) + +soldbtn=Button(text="Sold", command=sold) +soldbtn.place(x=1075, y=450, width=100, height=25) + +window.mainloop() +db.close() \ No newline at end of file