首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
CSCA08代做、代写Python设计编程
项目预算:
开发周期:
发布时间:
要求地区:
Assignment 1
CSCA08 Assignment 1: The Store
Due Date: June 14, 2024 at 6pm.
Goals of this Assignment
Use the Function Design Recipe (?wrap=1)
(/download?download_frd=1) to plan,
implement, and test functions.
Write function bodies using variables, numeric types, strings, and conditional statements. (You
can do this whole assignment with only the concepts from Weeks 1, 2, and 3 of the course.)
Learn to use Python 3, Wing 101, provided starter code, a checker module, and other tools.
Starter Code
For this assignment, you are provided some files, including Python starter code files. Please
download the Assignment 1 files (h?wrap=1)
(h/download?download_frd=1) and extract the zip
archive.
There are two starter code Python files and a Python program that helps you check (not fully
test!) your solutions for Python style violations:
store.py
This file contains some code that sets up your use of constants from constants.py, solutions
for some required functions for you to use as examples, as well as headers and docstrings
(but not bodies) for some functions you are required to write, to help you get started. Your
job is to complete this file.
constants.py
This file contains some useful constants that you should use in your solution. You will not
modify this file.
a1_checker.py
This is a checker program that you should use to check your code. See below for more
information.
Assignment 1: CSCA08H3 Y LEC01 20245:Introduction to Computer Science I
1/10
Constants
Constants are special variables whose values should not change once assigned. A different
naming convention (uppercase pothole) is used for constants, so that programmers know to not
change their values. For example, in the starter code, the constant AGE is assigned the value of 4
and this value should never change in your code. When writing your code, if you need to use the
index at which a customer s string representation contains their age, you should use AGE and not
the value 4. The same goes for the other constant values.
Using constants simplifies code modifications and improves readability and changeability. For
example, if we later decide to change the index at which a product s string representation contains
their ID, we will only have to make the changes in one place, rather than throughout the program.
This also makes our code more readable.
You should read the file constants.py carefully to understand the purpose of each defined
constant. You must use these constants in your code and not the literal values. For example, you
must use AGE instead of 4 to earn full marks.
The Store
In this assignment, you will write functions to represent a store. In this store, there are products,
customers, and shopping lists.
A product is represented by a string, where each piece of the string will represent different bits of
information about the product. This string will contain the following information:
The product ID
How many of the product are available to purchase (current inventory)
What type of discount is associated with the product
The product s price
A customer will also be represented by a string. This string will contain the following information:
The customer ID
The customer s age
The customer s budget
A shopping list will also be represented by a string, containing the following information:
A product ID
How many of the product to purchase
Products, customers, and shopping lists
Assignment 1: CSCA08H3 Y LEC01 20245:Introduction to Computer Science I
2/10
A valid product will have 12 characters. The index ranges of a product are explained below:
Characters at indices from PID to PID+3, inclusive, represent the product ID. These four
characters will be digits.
Characters at indices from INV to INV+1, inclusive, represent the current product inventory.
These two characters will be digits. For single-digit inventories, the character at the index INV
will be 0 .
Characters at indices from DISC to DISC+2, inclusive, represent the type of discount for this
product. These 3 characters will be letters. Specifically, there are 4 types of discounts, each
relevant for a specific customer age range (in years, inclusive): ALL (any age), TEE (13-19),
SEN (65+), and NON (no discount at all). Each of these discounts will apply the discount
rate, DISCOUNT_RATE.
Characters at indices PRICE to PRICE+2, inclusive, represent the product s price. These three
characters will be digits. For single-digit prices, the characters from indices PRICE to
PRICE+1, inclusive, will be 00 . For double-digit prices, the character at index PRICE will be
0 .
A couple examples of valid products below:
Assuming PID = 0, INV = 4, DISC = 6, PRICE = 9, a product represented by
372908ALL147 has an ID of 3729 , a current inventory of 8, will be discounted for
customers of any age, and is priced at $147.
Assuming PID = 5, INV = 3, DISC = 9, PRICE = 0, a product represented by
032990184TEE has an ID of 0184 , a current inventory of 99, will be discounted for
customers between the ages of 13-19, inclusive, and is priced at $32.
A valid customer will have 9 characters. The index ranges of a customer are explained below:
Characters at indices from CID to CID+3, inclusive, represent the customer ID. These four
characters will be letters.
Characters at indices from AGE to AGE+1, inclusive, represent the customer s age. These two
characters will be digits. For single-digit ages, the character at the index AGE will be 0 .
Characters at indices from BUDGET to BUDGET+2, inclusive, represent the customer s
budget. These 3 characters will be digits. For single-digit budgets, the characters from indices
BUDGET to BUDGET+1, inclusive, will be 00 . For double-digit budgets, the character at
index BUDGET will be 0 .
A couple examples of valid customers below:
Assuming CID = 0, AGE = 4, BUDGET = 6, a customer represented by MARK17008 has
an ID of MARK , is 17 years old, and has a budget of $8.
Assuming CID = 5, AGE = 0, BUDGET = 2, a customer represented by 64999ABCD has
an ID of ABCD , is 64 years old, and has a budget of $999.
A valid shopping list will have 6 characters. The index ranges of a shopping list are explained
below:
Assignment 1: CSCA08H3 Y LEC01 20245:Introduction to Computer Science I
3/10
Characters at indices from SPID to SPID+3, inclusive, represent the product ID. These four
characters will be digits.
Characters at indices from PURCHASE_NUM to PURCHASE_NUM+1, inclusive, represent
how many of the product to purchase. These two characters will be digits. For single-digit
purchases, the character at the index PURCHASE_NUM will be 0 .
A couple examples of valid shopping lists below:
Assuming SPID = 0, PURCHASE_NUM = 4, a shopping list represented by 018427 asks
to buy 27 of the product with an ID of 0184 .
Assuming SPID = 2, PURCHASE_NUM = 0, a shopping list represented by 043309 asks
to buy 4 of the product with an ID of 3309 .
What to do
In the starter code file store.py, complete the following function definitions. Note that some are
already provided for you to use as examples! Use the Function Design Recipe that you have
been learning in this course. We have included the type contracts in the following table; please
read through the table to understand how the functions will be used.
We will be evaluating your docstrings in addition to your code. You must include at least two
examples in each docstring. You will need to paraphrase the full descriptions of the functions to
get an appropriate docstring description. Your docstring examples should be valid doctests we
will run them as part of the evaluation of your program.
Functions to write for A1
Function Name:
(Parameter types) ->
Return type
Description (paraphrase to get a proper
docstring description)
get_pid:
(str) -> str
The parameter represents a product. The
function should return the ID of the given
product.
You may assume the given product is valid.
get_inventory:
(str) -> int
The parameter represents a product. The
function should return the current inventory of
the given product.
You may assume the given product is valid.
get_discount: The parameter represents a product. The
function should return the type of discount for
Assignment 1: CSCA08H3 Y LEC01 20245:Introduction to Computer Science I
4/10
(str) -> str the given product.
You may assume the given product is valid.
get_price:
(str) -> int
The parameter represents a product. The
function should return the price of the given
product.
You may assume the given product is valid.
get_cid:
(str) -> str
The parameter represents a customer. The
function should return the ID of the given
customer.
You may assume the given customer is valid.
get_age:
(str) -> int
The parameter represents a customer. The
function should return the age of the given
customer.
You may assume the given customer is valid.
get_budget:
(str) -> int
The parameter represents a customer. The
function should return the budget of the given
customer.
You may assume the given customer is valid.
get_spid:
(str) -> str
The parameter represents a shopping list.
The function should return the product ID of
the given shopping list.
You may assume the given shopping list is
valid.
get_purchase_num:
(str) -> int
The parameter represents a shopping list.
The function should return how many of the
product to purchase for the given shopping
list.
You may assume the given shopping list is
valid.
Assignment 1: CSCA08H3 Y LEC01 20245:Introduction to Computer Science I
5/10
check_discount_eligibility:
(str, str) -> bool
The first parameter represents a product. The
second parameter represents a customer.
The function should return True if and only if
this customer is eligible for a discount on this
product.
You may assume the given product and
customer are valid.
calc_discounted_price:
(str, str) -> int
The first parameter represents a product. The
second parameter represents a customer.
The function should return the price of the
given product after any discounts the given
customer is eligible for, rounded to the
nearest integer.
You may assume the given product and
customer are valid.
calc_total_price:
(str, str, str) -> int
The first parameter represents a product. The
second parameter represents a customer.
The third parameter represents a shopping
list. This function should return the total price
of the given product after any discounts this
customer is eligible for, according to the
number of products noted on the given
shopping list, rounded to the nearest integer.
You may assume the given product,
customer, and shopping list are valid. You
may assume the given product has the same
ID as the product ID on the given shopping
list.
Hint: use your completed
calc_discounted_price function.
check_available_inventory:
(str, str) -> bool
The first parameter represents a product. The
second parameter represents a shopping list.
This function should return True if and only if
the store has enough current inventory of the
given product to fulfil the amount of it to be
bought on the given shopping list.
Assignment 1: CSCA08H3 Y LEC01 20245:Introduction to Computer Science I
6/10
You may assume the given product and
shopping list are valid. You may assume the
given product has the same ID as the product
ID on the given shopping list.
within_budget:
(str, str, str) -> bool
The first parameter represents a product. The
second parameter represents a customer.
The third parameter represents a shopping
list. This function should return True if and
only if the given customer has enough budget
to purchase the amount of the given product
on their given shopping list.
You may assume the given product,
customer, and shopping list are valid. You
may assume the given product has the same
ID as the product ID on the given shopping
list.
checkout:
(str, str, str) -> bool
The first parameter represents a product. The
second parameter represents a customer.
The third parameter represents a shopping
list. This function should return True if and
only if the given customer can successfully
check out, ie the given customer has enough
budget to purchase the amount of the given
product on their given shopping list and there
is enough current inventory of the given
product in the store.
You may assume the given product,
customer, and shopping list are valid. You
may assume the given product has the same
ID as the product ID on the given shopping
list.
change_inventory:
(str, str) -> str
The first parameter represents a product. The
second parameter represents a shopping list.
This function returns a new product string in
the same format as the given product with an
updated inventory based on how many of the
product are being bought as per the given
shopping list. If there isn t enough inventory,
Assignment 1: CSCA08H3 Y LEC01 20245:Introduction to Computer Science I
7/10
the purchase will not be made, ie the
inventory should not change.
You may assume the given product and
shopping list are valid. You may assume the
given product has the same ID as the product
ID on the given shopping list.
change_price:
(str, int) -> str
The first parameter represents a product. The
second parameter represents a price. This
function returns a new product string in the
same format as the given product with an
updated price, as given.
You may assume the given product is valid.
You may assume the given price is valid for a
product string.
compare_products:
(str, str) -> str
The first parameter represents a product,
product1 . The second parameter represents
another product, product2 . This function
returns the product ID of the better of the
two given products. product1 is the better
product if and only if:
Each digit of product1 s ID is greater
than the respective digit of product2 s ID,
except for the third digit
The current inventory of product1 is at
least as much as the current inventory of
product2
The price of product1 is lower than that
of product2
You may assume the given products are
valid.
Using Constants
As we discuss in section Constants above, your code should make use of the provided constants.
If the value of one of those constants were changed, and your program rerun, your functions
should work with those new values.
Assignment 1: CSCA08H3 Y LEC01 20245:Introduction to Computer Science I
8/10
For example, if AGE were changed, then your functions should work according to the new index at
which a customer s age is stored in their string representation. Using constants in your code
means that this happens automatically.
Your docstring examples should reflect the given values of the constants in the provided starter
code, and do not need to change.
No Input or Output
Your store.py file should contain the starter code, plus the function definitions specified
above. store.py must not include any calls to the print and input functions. Do not add
any import statements. Also, do not include any function calls or other code outside of the function
definitions.
A1 Checker
We are providing a checker module (a1_checker.py) that tests two things:
whether your code follows the Python style guidelines
(https://www.utsc.utoronto.ca/~atafliovich/csca08/assignments/a1/python_style_guide.html) , and
whether your functions are named correctly, have the correct number of parameters, and
return the correct types.
To run the checker, open a1_checker.py and run it. Note: the checker file should be in
the same directory as your store.py, as provided in the starter code zip file. Be sure to scroll up to
the top and read all the messages!
If the checker passes for both style and types:
Your code follows the style guidelines.
Your function names, number of parameters, and return types match the assignment
specification. This does not mean that your code works correctly in all situations. We will
run a different set of tests on your code once you hand it in, so be sure to thoroughly test your
code yourself before submitting.
If the checker fails, carefully read the message provided:
It may have failed because your code did not follow the style guidelines. Review the error
description(s) and fix the code style. Please see the PyTA documentation
(https://www.cs.toronto.edu/~david/pyta/) for more information about errors.
It may have failed because:
you are missing one or more functions,
one or more of your functions are misnamed,
one or more of your functions have incorrect number or types of parameters, or
Assignment 1: CSCA08H3 Y LEC01 20245:Introduction to Computer Science I
9/10
one of more of your functions return values of types that do not match the assignment
specification.
Read the error messages to identify the problematic functions, review the function specifications
in the handout, and fix your code.
Make sure the checker passes before submitting.
Marking
These are the aspects of your work that may be marked for A1:
Coding style (20%):
Make sure that you follow Python style guidelines
(https://www.utsc.utoronto.ca/~atafliovich/csca08/assignments/a1/python_style_guide.html)
that we have introduced and the Python coding conventions that we have been using
throughout the semester. Although we do not provide an exhaustive list of style rules, the
checker tests for style are complete, so if your code passes the checker, then it will earn
full marks for coding style with one exception: docstrings will be evaluated separately. For
each occurrence of a PyTA error, one mark (out of 20) deduction will be applied. For
example, if a C0301 (line-too-long) error occurs 3 times, then 3 marks will be deducted.
All functions, including helper functions, should have complete docstrings including
preconditions when you think they are necessary and at least two valid examples.
Correctness (80%):
Your functions should perform as specified. Correctness, as measured by our tests, will count for
the largest single portion of your marks. Once your assignment is submitted, we will run additional
tests not provided in the checker. Passing the checker does not mean that your code will earn full
marks for correctness.
Note that for full marks all docstring examples you provide should run without producing
errors.
What to hand in
The very last thing you do before submitting should be to run the checker program one
last time.
Otherwise, you could make a small error in your final changes before submitting that causes your
code to receive zero for correctness.
Submit store.py on MarkUs (this will become available soon!). Remember that spelling of
filenames, including case, counts: your file must be named exactly as above.
Assignment 1: CSCA08H3 Y LEC01 20245:Introduction to Computer Science I
10/10
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代做ceng0013 design of a pro...
2024-11-13
代做mech4880 refrigeration a...
2024-11-13
代做mcd1350: media studies a...
2024-11-13
代写fint b338f (autumn 2024)...
2024-11-13
代做engd3000 design of tunab...
2024-11-13
代做n1611 financial economet...
2024-11-13
代做econ 2331: economic and ...
2024-11-13
代做cs770/870 assignment 8代...
2024-11-13
代写amath 481/581 autumn qua...
2024-11-13
代做ccc8013 the process of s...
2024-11-13
代写csit040 – modern comput...
2024-11-13
代写econ 2070: introduc2on t...
2024-11-13
代写cct260, project 2 person...
2024-11-13
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!