Learning Circle : python #3 - ex15 ~ ex21
This commit is contained in:
parent
b68eb529a1
commit
1db776ff5b
19 changed files with 318 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
* 2020-05-22
|
||||||
|
**** TODO Lecture content
|
||||||
|
- Same structure as "Python #2"
|
||||||
|
- Exercises 15-22
|
||||||
|
**** Lecture material
|
||||||
|
- Available on https://cloud.ungleich.ch/s/435FyfrQyEq6oF3
|
||||||
* 2020-05-20
|
* 2020-05-20
|
||||||
*** Python #2:
|
*** Python #2:
|
||||||
**** DONE Lecture content
|
**** DONE Lecture content
|
||||||
|
|
19
youngjin.han/python-the-hard-way/ex15.py
Normal file
19
youngjin.han/python-the-hard-way/ex15.py
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
from sys import argv # include argv
|
||||||
|
|
||||||
|
script, filename = argv # define a argument
|
||||||
|
|
||||||
|
txt = open(filename) # open the file
|
||||||
|
|
||||||
|
print(f"Here's your file {filename}:") # print a script
|
||||||
|
print(txt.read()) # read and print the text from the file
|
||||||
|
|
||||||
|
txt.close()
|
||||||
|
|
||||||
|
print("Type the filename again:") # print a script
|
||||||
|
file_again = input("> ") # input from stdin
|
||||||
|
|
||||||
|
txt_again = open(file_again) # open the file
|
||||||
|
|
||||||
|
print(txt_again.read()) # read and print the text from the file
|
||||||
|
|
||||||
|
txt_again.close()
|
3
youngjin.han/python-the-hard-way/ex15_sample.txt
Normal file
3
youngjin.han/python-the-hard-way/ex15_sample.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
This is stuff I typed into a file.
|
||||||
|
It is really cool stuff.
|
||||||
|
Lots and lots of fun to have in here.
|
41
youngjin.han/python-the-hard-way/ex16.py
Normal file
41
youngjin.han/python-the-hard-way/ex16.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
from sys import argv
|
||||||
|
|
||||||
|
script, filename = argv
|
||||||
|
|
||||||
|
print(f"We're going to erase {filename}.")
|
||||||
|
print("If you don't want that, hit CTRL-C (^C).")
|
||||||
|
print("If you do want that, hit RETURN.")
|
||||||
|
|
||||||
|
input("?")
|
||||||
|
|
||||||
|
print("Opening the file...")
|
||||||
|
target = open(filename, 'w')
|
||||||
|
|
||||||
|
print("Truncating the file. Goodbye!")
|
||||||
|
target.truncate()
|
||||||
|
|
||||||
|
print("Now I'm going to ask you for three lines.")
|
||||||
|
|
||||||
|
line1 = input("line 1: ")
|
||||||
|
line2 = input("line 2: ")
|
||||||
|
line3 = input("line 3: ")
|
||||||
|
|
||||||
|
print("I'm going to write these to the file.")
|
||||||
|
|
||||||
|
#target.write(line1)
|
||||||
|
#target.write("\n")
|
||||||
|
#target.write(line2)
|
||||||
|
#target.write("\n")
|
||||||
|
#target.write(line3)
|
||||||
|
#target.write("\n")
|
||||||
|
target.write(f"""{line1}
|
||||||
|
{line2}
|
||||||
|
{line3}
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
print("And finally, we close it.")
|
||||||
|
target.close()
|
||||||
|
|
||||||
|
txt = open(filename)
|
||||||
|
print(txt.read())
|
3
youngjin.han/python-the-hard-way/ex16_file_write.txt
Normal file
3
youngjin.han/python-the-hard-way/ex16_file_write.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
1234
|
||||||
|
5678
|
||||||
|
90-=
|
|
@ -0,0 +1,3 @@
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
line3
|
28
youngjin.han/python-the-hard-way/ex17.py
Normal file
28
youngjin.han/python-the-hard-way/ex17.py
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
from sys import argv
|
||||||
|
from os.path import exists
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
script, from_file, to_file = argv
|
||||||
|
|
||||||
|
print(f"Copying from {from_file} to {to_file}")
|
||||||
|
|
||||||
|
#open(to_file, 'w').write(open(from_file).read())
|
||||||
|
shutil.copyfile(from_file, to_file)
|
||||||
|
|
||||||
|
# we could do these two on one line, how?
|
||||||
|
#in_file = open(from_file)
|
||||||
|
#indata = in_file.read()
|
||||||
|
|
||||||
|
#print(f"The input file is {len(indata)} bytes long")
|
||||||
|
|
||||||
|
#print(f"Does the output file exist? {exists(to_file)}")
|
||||||
|
#print("Ready, hit RETURN to continue, CTRL-C to abort.")
|
||||||
|
#input()
|
||||||
|
|
||||||
|
#out_file = open(to_file, 'w')
|
||||||
|
#out_file.write(indata)
|
||||||
|
|
||||||
|
print("Alright, all done.")
|
||||||
|
|
||||||
|
#out_file.close()
|
||||||
|
#in_file.close()
|
1
youngjin.han/python-the-hard-way/ex17_new2_test.txt
Normal file
1
youngjin.han/python-the-hard-way/ex17_new2_test.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
This is a test file.
|
1
youngjin.han/python-the-hard-way/ex17_new3_test.txt
Normal file
1
youngjin.han/python-the-hard-way/ex17_new3_test.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
This is a test file.
|
1
youngjin.han/python-the-hard-way/ex17_new_test.txt
Normal file
1
youngjin.han/python-the-hard-way/ex17_new_test.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
This is a test file.
|
1
youngjin.han/python-the-hard-way/ex17_test.txt
Normal file
1
youngjin.han/python-the-hard-way/ex17_test.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
This is a test file.
|
23
youngjin.han/python-the-hard-way/ex18.py
Normal file
23
youngjin.han/python-the-hard-way/ex18.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# this one is like your scripts with argv
|
||||||
|
def print_two(*args):
|
||||||
|
arg1, arg2 = args
|
||||||
|
print(f'arg1: {arg1}, arg2: {arg2}')
|
||||||
|
|
||||||
|
# ok, that *args is actually pointless, we can just do this
|
||||||
|
def print_two_again(arg1, arg2):
|
||||||
|
print(f"arg1: {arg1}, arg2: {arg2}")
|
||||||
|
|
||||||
|
# this just takes one argument
|
||||||
|
def print_one(arg1):
|
||||||
|
print(f"arg1: {arg1}")
|
||||||
|
|
||||||
|
# this one takes no arguments
|
||||||
|
def print_none():
|
||||||
|
print("I got nothin'.")
|
||||||
|
|
||||||
|
|
||||||
|
print_two("Zed","Shaw")
|
||||||
|
print_two_again("Zed","Shaw")
|
||||||
|
print_one("First!")
|
||||||
|
|
||||||
|
print_none()
|
63
youngjin.han/python-the-hard-way/ex19.py
Normal file
63
youngjin.han/python-the-hard-way/ex19.py
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
def cheese_and_crackers(cheese_count, boxes_of_crackers): # define a function
|
||||||
|
print(f"You have {cheese_count} cheeses!") # print cheese_count
|
||||||
|
print(f"You have {boxes_of_crackers} boxes of crackers!") # print boxex_of_crackers
|
||||||
|
print("Man that's enough for a party!") # print a script
|
||||||
|
print("Get a blanket.\n") # print a script
|
||||||
|
|
||||||
|
def my_f(arg1, arg2):
|
||||||
|
total = arg1 + arg2
|
||||||
|
print(f"arg1: {arg1}, arg2: {arg2}, total: {total}")
|
||||||
|
|
||||||
|
print("We can just give the function numbers directly:") # print a script
|
||||||
|
cheese_and_crackers(20, 30) # call the function
|
||||||
|
|
||||||
|
|
||||||
|
print("OR, we can use variables from our script:") # print a script
|
||||||
|
amount_of_cheese = 10 # define a value
|
||||||
|
amount_of_crackers = 50 # define a value
|
||||||
|
|
||||||
|
cheese_and_crackers(amount_of_cheese, amount_of_crackers) # call the function
|
||||||
|
|
||||||
|
|
||||||
|
print("We can even do math inside too:") # print a script
|
||||||
|
cheese_and_crackers(10 + 20, 5 + 6) # call the function
|
||||||
|
|
||||||
|
|
||||||
|
print("And we can combine the two, variables and math:") # print a script
|
||||||
|
cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000) # call the function
|
||||||
|
|
||||||
|
my_f(1, 2)
|
||||||
|
my_f(2*4, 8/2)
|
||||||
|
my_f("2*4", "8/2")
|
||||||
|
my_f("not", "bad")
|
||||||
|
|
||||||
|
n_arg1 = 1
|
||||||
|
n_arg2 = 2
|
||||||
|
|
||||||
|
my_f(n_arg1, n_arg2)
|
||||||
|
|
||||||
|
s_arg1 = "good"
|
||||||
|
s_arg2 = "luck"
|
||||||
|
|
||||||
|
my_f(s_arg1, s_arg2)
|
||||||
|
|
||||||
|
t_arg1 = 8/2+3
|
||||||
|
t_arg2 = 8%2
|
||||||
|
|
||||||
|
my_f(t_arg1, t_arg2)
|
||||||
|
|
||||||
|
|
||||||
|
m_a1 = """line1
|
||||||
|
line2
|
||||||
|
line3
|
||||||
|
"""
|
||||||
|
m_a2 = """line4
|
||||||
|
line5
|
||||||
|
line6
|
||||||
|
"""
|
||||||
|
my_f(m_a1, m_a2)
|
||||||
|
|
||||||
|
my_f(open("test.txt").read(), open("test.txt").read())
|
||||||
|
|
||||||
|
f = "{} {}"
|
||||||
|
my_f(f.format(1, 2), f.format(3, 4))
|
35
youngjin.han/python-the-hard-way/ex20.py
Normal file
35
youngjin.han/python-the-hard-way/ex20.py
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
from sys import argv # import argv
|
||||||
|
|
||||||
|
script, input_file = argv # define argv
|
||||||
|
|
||||||
|
def print_all(f): # define a function
|
||||||
|
print(f.read()) # print all
|
||||||
|
|
||||||
|
def rewind(f): # define a function
|
||||||
|
f.seek(0) # jump the starting point of a file
|
||||||
|
|
||||||
|
def print_a_line(line_count, f): # define a function
|
||||||
|
print(line_count, f.readline()) # pinrt a line on the file
|
||||||
|
|
||||||
|
current_file = open(input_file) # open a file
|
||||||
|
|
||||||
|
print("First let's print the whole file:\n") # print a script
|
||||||
|
|
||||||
|
print_all(current_file) # call the function
|
||||||
|
|
||||||
|
print("Now let's rewind, kind of like a tape.") # print a script
|
||||||
|
|
||||||
|
rewind(current_file) # call the function
|
||||||
|
|
||||||
|
print("Let's print three lines:") # print a script
|
||||||
|
|
||||||
|
current_line = 1 # define a value
|
||||||
|
print_a_line(current_line, current_file) # call the function
|
||||||
|
|
||||||
|
#current_line = current_line + 1 # define a value
|
||||||
|
current_line += 1
|
||||||
|
print_a_line(current_line, current_file) # call the function
|
||||||
|
|
||||||
|
#current_line = current_line + 1 # define a value
|
||||||
|
current_line += 1
|
||||||
|
print_a_line(current_line, current_file) # call the function
|
3
youngjin.han/python-the-hard-way/ex20_test.txt
Normal file
3
youngjin.han/python-the-hard-way/ex20_test.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
This is line 1
|
||||||
|
This is line 2
|
||||||
|
This is line 3
|
33
youngjin.han/python-the-hard-way/ex21.py
Normal file
33
youngjin.han/python-the-hard-way/ex21.py
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
def add(a, b):
|
||||||
|
print(f"ADDING {a} + {b}")
|
||||||
|
return a + b
|
||||||
|
|
||||||
|
def subtract(a, b):
|
||||||
|
print(f"SUBTRACTING {a} - {b}")
|
||||||
|
return a - b
|
||||||
|
|
||||||
|
def multiply(a, b):
|
||||||
|
print(f"MULTIPLYING {a} * {b}")
|
||||||
|
return a * b - b
|
||||||
|
|
||||||
|
def divide(a, b):
|
||||||
|
print(f"DIVIDING {a} / {b}")
|
||||||
|
return a / b
|
||||||
|
|
||||||
|
|
||||||
|
print("Let's do some math with just functions!")
|
||||||
|
|
||||||
|
age = add(30, 5)
|
||||||
|
height = subtract(78, 4)
|
||||||
|
weight = multiply(90, 2)
|
||||||
|
iq = divide(100, 2)
|
||||||
|
|
||||||
|
print(f"Age: {age}, Height: {height}, Weight: {weight}, IQ: {iq}")
|
||||||
|
|
||||||
|
|
||||||
|
# A puzzle for the extra credit, type it in anyway.
|
||||||
|
print("Here is a puzzle.")
|
||||||
|
|
||||||
|
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
|
||||||
|
|
||||||
|
print("That becomes: ", what, "Can you do it by hand?")
|
22
youngjin.han/python-the-hard-way/ex22.py
Normal file
22
youngjin.han/python-the-hard-way/ex22.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import sys
|
||||||
|
script, input_encoding, error = sys.argv
|
||||||
|
|
||||||
|
def main(language_file, encoding, errors):
|
||||||
|
line = language_file.readline()
|
||||||
|
|
||||||
|
if line:
|
||||||
|
print_line(line, encoding, errors)
|
||||||
|
return main(language_file, encoding, errors)
|
||||||
|
|
||||||
|
|
||||||
|
def print_line(line, encoding, errors):
|
||||||
|
next_lang = line.strip()
|
||||||
|
raw_bytes = next_lang.encode(encoding, errors=errors)
|
||||||
|
cooked_string = raw_bytes.decode(encoding, errors=errors)
|
||||||
|
|
||||||
|
print(raw_bytes, "<===>", cooked_string)
|
||||||
|
|
||||||
|
|
||||||
|
languages = open("languages.txt", encoding="utf-8")
|
||||||
|
|
||||||
|
main(languages, input_encoding, error)
|
3
youngjin.han/python-the-hard-way/test.txt
Normal file
3
youngjin.han/python-the-hard-way/test.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
Mary had a little lamb
|
||||||
|
Its fleece was white as snow
|
||||||
|
It was also tasty
|
|
@ -1,3 +1,32 @@
|
||||||
|
* 2020-05-22
|
||||||
|
** note
|
||||||
|
- ex15.py
|
||||||
|
- The argument method is better than using stdin. becouse bash-completion could be used.
|
||||||
|
- python3.8 shell
|
||||||
|
- >>> filename=input()
|
||||||
|
- ex15_sample.txt
|
||||||
|
- >>> txt = open(filename)
|
||||||
|
- >>> txt_script = txt.read()
|
||||||
|
- >>> print(txt_script)
|
||||||
|
- This is stuff I typed into a file.
|
||||||
|
- It is really cool stuff.
|
||||||
|
- Lots and lots of fun to have in here
|
||||||
|
- ex16.py
|
||||||
|
- 'w' is to open a file on write mode.
|
||||||
|
- If a file is openned with 'w', target.truncate() should not be need. the 'w' mode always overwrite a file.
|
||||||
|
- ex17.py
|
||||||
|
- cat is concatenate files to stdout
|
||||||
|
- If file.close() is not called, the file which is openned by python chould not be modified on orther programs.
|
||||||
|
- ex18.py
|
||||||
|
- none
|
||||||
|
- ex19.py
|
||||||
|
- none
|
||||||
|
- ex20.py
|
||||||
|
- file.seek is to move to new file posotion
|
||||||
|
- ex21.py
|
||||||
|
-
|
||||||
|
- ex22.py
|
||||||
|
-
|
||||||
* 2020-05-20
|
* 2020-05-20
|
||||||
** note
|
** note
|
||||||
- ex8.py
|
- ex8.py
|
||||||
|
@ -15,7 +44,6 @@
|
||||||
- none
|
- none
|
||||||
- ex14.py
|
- ex14.py
|
||||||
- none
|
- none
|
||||||
|
|
||||||
* 2020-05-18
|
* 2020-05-18
|
||||||
** note
|
** note
|
||||||
- ex1.py
|
- ex1.py
|
||||||
|
|
Loading…
Reference in a new issue