If you had the following code in a file named test.py
:
if __name__ == "__main__":
print("This is a test, it is only a test.")
else:
print("This is a test of: " + __name__)
What would be printed in the console if you:
Ran the program, e.g. via the “green arrow” in Thonny
This is a test, it is only a test
Typed “import test” into the console
This is a test of: test
Recall that when we run with the green arrow __name__
is "__main__"
and
when the file is imported, __name__
is set to the name of the file
without the “.py” at the end.
For program with the following usage message, what will be the length of
sys.argv
when the user supplies the correct number of command-line
arguments.
usage: python3 time_shift.py <input file> <output file> <hours>
The program takes 3 arguments so len(sys.argv)
should be 4 (the first
entry is always the program name).
You’re planning on writing a program print_files.py
that can take one or
more files as command-line arguments and will do something with each file
(for example, print the contents).
Write the portion of the program that ensures that whenever this program is executed with the wrong number of parameters, it prints out the usage of the program:
$ python3 print_files.py
usage: python3 print_files.py <file1> <file2> ...
To get started, write code such that if the user does enter one or more files, the program prints out the name of each of the files entered:
$ python3 print_files.py some_file another_file and_another_file
some_file
another_file
and_another_file
import sys
if __name__ == "__main__":
if len(sys.argv) <= 1:
print("usage: python3 print_files.py <file1> <file2> ...")
else:
# Print out the names of all the entered files, but
# don't print out the item at index 0, since it's the program name
for f in sys.argv[1:]:
print(f)
The following code prints out two variables separated by a comma (","
) and
followed by a blank line. Rewrite this code more concisely using the print
function’s optional arguments.
print(str(key) + "," + str(value))
print()
We use the sep
and end
arguments to accomplish the above with a single
print statement. We are taking advantage of the fact that print
can take
a variable number of positional arguments.
print(str(key), str(value), sep=",", end="\n\n")
We can make this even more concise by taking advantage of the fact that
print
automatically converts its arguments to strings.
print(key, value, sep=",", end="\n\n")
Consider the following program in a file name “test.py”.
import sys
print(sys.argv[0], sys.argv[int(sys.argv[1])])
What will be printed when this program is invoked as:
python3 test.py 0 a b c
test.py test.py
python3 test.py 2 a b c
test.py a
python3 test.py 1 a b c
test.py 1
This is the docstring for the get
method on dictionaries.
get(...)
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
The second argument for get
is optional, e.g. { 1: 2}.get(5)
evaluates
to None
. Implement a function named my_get
as a replacement for get
(without using get
). Your function should take a dictionary, a key and an
optional value as parameters and return the same result as get
.
def my_get(dictionary, key, value=None):
if key in dictionary:
return dictionary[key]
else:
return value
Writing a program that could take one or two command-line arguments. If the second argument is not present, the value should default to 12. For testing purposes, just print the two values used by the program. For example:
$ python3 test.py test.txt
test.txt
12
$ python3 test.py test.txt 5
test.txt
5
if __name__ == "__main__":
# Print the first command line argument
print(sys.argv[1])
# Use the second command line parameter or the default value
if len(sys.argv) == 3:
value = sys.argv[2]
else:
value = 12
print(value)