Lab 1
Byungjoo Lee
Yonsei University
AIC2100 AI Programming with Python
Lab 1 AIC2100
2
You must follow the specification thorougly!
• Any typos (including whitespace and linebreak) will result in a point deduction.
• If you’re asked to write the comment or docstring, you must add them.
• If some Python libraries are prohibited, importing them will result in 0 points.
• Depending on the lab content, additional rules can be added.
• Please read the specification document carefully and submit your code.
• We won't accept appeals for point deductions based on misinterpreting the lab specification
documentation.
• If any specification is unclear, please post your question on the Q&A board.
Lab 1 AIC2100
3
Please refer to the guidelines noted in previous labs. They remain applicable for this and
subsequent labs.
Any updates in guidelines will be announced again.
Coding guideline
Lab 1 AIC2100
4
Notation
• To clearly instruct the lab specifications, (1) we use “˽” to depict a whitespace (blank)
character and (2) “¤” for a “\n” (newline) character.
• Underlined text refers to the user input (will be demonstrated again in a further lab).
• New notations will be demonstrated additionally on there first mention.
Lab 1 AIC2100
5
One important note about automated archiving
• In lab0, the automated archive code used the incorrect folder name format “{student_id}”.
• It should have been “lab{X}_{student_id}”. (Sorry)
• Don’t worry, we did not deduct your point with this since it is our mistake.
• In the slides explaning the automated archive code (ap_lab0.pdf p.15-16), we specified the
wrong format, while in the slide explaning manual archiving (p. 17), we specified the correct
format.
• We revised the code and update it to LearnUs, even though it is outdated.
• TL;DR
• If you want to use automated archiving, just use our provided code. You don’t need to
revise it on your own.
• If you manually archived in Lab 0, “lab{X}_{student_id}” foldername is correct.
Lab 1 AIC2100
6
Problem 1
Write a program that allows the user to enter any integer base and integer exponent, and displays
the value of the base raised to that exponent. Your program should work as shown below.
Note 1. You do not have to consider faulty input. More specifically, we will test your program for
integer inputs only.
Note 2. The integer base and exponent will be non-negative.
This program needs to ask two times for input from the user. The input prompt with the second
input() command depends on the input from the first input() command. This is highlighted in the
following example:
What˽base?˽10¤
What˽power˽of˽10?˽4¤
10˽to˽the˽power˽of˽4˽is˽10000¤
Lab 1 AIC2100
7
Problem 1
Here are some examples.
What˽base?˽0¤
What˽power˽of˽0?˽5¤
0˽to˽the˽power˽of˽5˽is˽0¤
What˽base?˽2¤
What˽power˽of˽2?˽10¤
2˽to˽the˽power˽of˽10˽is˽1024¤
What˽base?˽5¤
What˽power˽of˽5?˽0¤
5˽to˽the˽power˽of˽0˽is˽1¤
What˽base?˽-25¤
What˽power˽of˽-25?˽3.7¤
You don’t need to consider non-integer inputs.
Lab 1 AIC2100
8
Problem 1
FAQ
Q. What is 0
0?
A. Mathematically, it converges to 1 and Python will output 1 too.
Lab 1 AIC2100
9
Problem 2
Write a program that allows the user to enter a base integer and a four-digit number, and displays
its value in base 10. Each digit should be entered one per line, starting with the leftmost digit, as
shown below. This program also needs to ask several times for input from the user. The output
depends on the input from input() command. This is highlighted in the following example:
Enter˽the˽base˽integer:˽2¤
Enter˽leftmost˽digit:˽1¤
Enter˽the˽next˽digit:˽0¤
Enter˽the˽next˽digit:˽0¤
Enter˽the˽last˽digit:˽1¤
Your˽input˽is˽1001˽in˽base˽2¤
The˽value˽is˽9˽in˽base˽10¤
Example 1
Enter˽the˽base˽integer:˽5¤
Enter˽leftmost˽digit:˽0¤
Enter˽the˽next˽digit:˽3¤
Enter˽the˽next˽digit:˽4¤
Enter˽the˽last˽digit:˽2¤
Your˽input˽is˽0342˽in˽base˽5¤
The˽value˽is˽97˽in˽base˽10¤
Example 2
Lab 1 AIC2100
10
Problem 2
Note 1. You can assume that the base integer is integer from 2 to 10 and four-digit numbers are
non-negative integers.
Note 2. You do not have to consider faulty inputs. There are two cases.
- Invalid base integer input (non-integer or out-of-range)
- Invalid four-digit number (non-integer or exceeding base integer)
Note 3. You don’t need to omit starting zeros when printing your input digit numbers (e.g., if your
input is 0011, then print 0011, not 11). See example 2 in the previous slide.
Lab 1 AIC2100
11
Problem 3
Write a program in which the user can enter any number of positive and negative integer values,
that displays the number of positive values entered and their summation, as well as the negative
values. Your program should work in following conditions.
1. Exclude all numbers that aboslute value is greater than 100 (i.e., 𝑥 > 100).
2. Your program should stop taking the user input and print the results when 0 is entered.
3. The format of printed output differs by whether the number of entered positive/negative integer
is 0 or not.
4. You don’t need to consider faulty inputs (non-integer or -0).
Hint. You can use sum() function.
See the examples on the next slides.
Lab 1 AIC2100
12
Problem 3
Your˽number:˽5¤
Your˽number:˽-32¤
Your˽number:˽105¤
Your˽number:˽31¤
Your˽number:˽-52¤
Your˽number:˽-25234¤
Your˽number:˽0¤
There˽are˽2˽positive˽integer(s)˽and˽the˽sum˽is˽36¤
There˽are˽2˽negative˽integer(s)˽and˽the˽sum˽is˽-84¤
Example 1 – Normal case
Lab 1 AIC2100
13
Problem 3
Your˽number:˽5¤
Your˽number:˽-1002¤
Your˽number:˽15¤
Your˽number:˽31¤
Your˽number:˽0¤
There˽are˽3˽positive˽integer(s)˽and˽the˽sum˽is˽51¤
No˽negative˽integer˽entered¤
Example 2 – Empty negative integer list
Lab 1 AIC2100
14
Problem 3
Your˽number:˽-22¤
Your˽number:˽12345¤
Your˽number:˽-99¤
Your˽number:˽-6¤
Your˽number:˽0¤
No˽positive˽integer˽entered¤
There˽are˽3˽negative˽integer(s)˽and˽the˽sum˽is˽-127¤
Example 3 – Empty positive integer list
Lab 1 AIC2100
15
Problem 3
Your˽number:˽0¤
No˽positive˽integer˽entered¤
No˽negative˽integer˽entered¤
Example 4 – Immediate termination
Lab 1 AIC2100
16
Problem 4
Write a program that calculates the least common multiple (LCM, 최소공배수) of two input positive
integer.
Note 1. You can assume that the input integers are always greater than 1.
Note 2. You do not have to consider faulty inputs.
Note 3. You are not allowed to use any library (including standard one)
Hint 1. Find the greatest common divisor (GCD, 최대공약수) first.
Hint 2. LCM can be computed as the multiple of two integers divided by their GCD.
To compute GCD, we strongly suggest you to use Euclidean algorithm (유클리드 호제법).
Lab 1 AIC2100
17
Problem 4
Input˽integer˽1:˽3¤
Input˽integer˽2:˽4¤
The˽least˽common˽multiple˽of˽3˽and˽4˽is˽12¤
Input˽integer˽1:˽16¤
Input˽integer˽2:˽36¤
The˽least˽common˽multiple˽of˽16˽and˽36˽is˽144¤
Input˽integer˽1:˽1024¤
Input˽integer˽2:˽395¤
The˽least˽common˽multiple˽of˽1024˽and˽395˽is˽404480¤
Input˽integer˽1:˽72¤
Input˽integer˽2:˽80¤
The˽least˽common˽multiple˽of˽72˽and˽80˽is˽720¤
Lab 1 AIC2100
18
Problem 5
Write a program that displays how many images can be stored on a given size USB drive. The
size of the USB drive is to be entered by the user in gigabytes (GB). The number of images that
can be stored must be calcaulted for GIF, JPEG, PNG, and TIFF image file formats. Follow the
below output format.
There are several notes you should follow in this problem.
Enter˽USB˽size˽(GB):˽1¤
˽11184˽image(s)˽in˽GIF˽format˽can˽be˽stored¤
˽18641˽image(s)˽in˽JPEG˽format˽can˽be˽stored¤
˽˽5965˽image(s)˽in˽PNG˽format˽can˽be˽stored¤
˽˽˽372˽image(s)˽in˽TIFF˽format˽can˽be˽stored¤
Lab 1 AIC2100
19
Problem 5
Assumption 1: All the images have a resolution of 800×600 pixels.
Assumption 2: The compression rate and color depth of each image format is set as below table.
Follow these steps to compute the total number of bytes required to sotre 1 image.
1. Compute number of pixels.
2. Compute number of bytes to represent lossless image (i.e., multiply color depth byte)
3. Compress the image (i.e., divide it by compress rate).
Format Color depth Compression
GIF 1 byte 5:1
JPEG 3 byte 25:1
PNG 3 byte 8:1
TIFF 6 byte 1:1 (n/a)
Lab 1 AIC2100
20
Problem 5
Note 1. Do not report partial images (e.g., 5.5 images). The number of image must be integer.
Note 2. You are allowed to use Python 3 math module (it is standard library) for this problem only.
Note 3. Assume that 1GB is 2
30 bytes.
Note 4. You can assume that USB size input is always positive integer.
Note 4. The number of images should be displayed in 6-digit fieldwidth (see example in slide 18)
Note 5. For larger USB drives, a fieldwidth of 6 may be insufficient to accommodate the number of
images. In such a case it is permissible to exceed the 6-digit fieldwidth (see below example).
Enter˽USB˽size˽(GB):˽64¤
715827˽image(s)˽in˽GIF˽format˽can˽be˽stored¤
1193046˽image(s)˽in˽JPEG˽format˽can˽be˽stored¤
381774˽image(s)˽in˽PNG˽format˽can˽be˽stored¤
˽23860˽image(s)˽in˽TIFF˽format˽can˽be˽stored¤
Lab 1 AIC2100
21
Marking Criteria
• Score is only given to programs that compile and produce the correct output with Python version
3.
• No points for programs that are named wrongly. Please refer to the following slide for the
required file names.
• Points are deducted for programs that produce warnings.
• Please pay particular attention to the requested output format of your programs. Deviating from
the requested output format results in points deductions.
Lab 1 AIC2100
22
Plagiarism
• Plagiarism (Cheating)
– This is an individual assignment. All or some submissions are checked for plagiarism.
• We will not inform you which problems will be checked.
– Once detected, measures will be taken for all students involved in the plagiarism incident
(including the ``source'' of the plagiarized code).
Lab 1 AIC2100
23
• Please prepare the files for the programming problems. The names of the files, their due
dates, and the archive file names are given in the table above.
• Please upload your archive file by the stated due date on LearnUs.
• Please pay attention to file names.
• Putting files into archives has been explained in the Lab 0 specification.
Deliverables, Due Date and Submission
Problem File name Due Archive name
1 lab1_p1.py
Monday
April 8, 2024,
23:59
lab1_<student id>.zip
2 lab1_p2.py
3 lab1_p3.py
4 lab1_p4.py
5 lab1_p5.py
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。