CALCULATOR FOOTPRINT CARBON

12
CARBON FOOTPRINT CALCULATOR BROUGHT TO YOU BY CODE CLUB AUSTRALIA POWERED BY TELSTRA FOUNDATION SUBMIT AND BE COUNTED AT MOONHACK.COM BURMESE

Transcript of CALCULATOR FOOTPRINT CARBON

Page 1: CALCULATOR FOOTPRINT CARBON

CARBONFOOTPRINT

CALCULATOR

BROUGHT TO YOU BY CODE CLUB AUSTRALIA POWERED BY TELSTRA FOUNDATION

SUBMIT AND BE COUNTED ATMOONHACK.COM

BURMESE

Page 2: CALCULATOR FOOTPRINT CARBON

Carbon Calculator

แ€™แ€แ€†แ€€

Our personal contribution to the worldโ€™s carbon emissions is called our Carbon Footprint. If there is

too much carbon being produced the world will continue to heat beyond repair.

แ€€แ€™แ€˜แ€ฌแ€€แ€€ แ€ผแ€ธ แ แ€€แ€ฌแ€—แ€”แ€‘แ€แ€œแ€„แ€แ€ผแ€„แ€ผแ€ธแ€™ แ€ฌแ€ผแ€ธแ€แ€„ แ€€แ€ปแ€”แ€•แ€ แ แ€แ€€แ€šแ€›แ€ฑ แ€•แ€ซแ€แ€„แ€•แ€แ€žแ€แ€แ€ผแ€„แ€ผแ€ธแ€€ แ€€แ€ปแ€”แ€•แ€ แ

Carbon Footprint แ€€แ€ฌแ€—แ€”แ€›แ€แ€ผแ€ฑแ€ฌ แ€Ÿ แ€›แ€ผแ€ฑแ€ซแ€žแ€Šแ‹ แ€กแ€€แ€šแ แ€€แ€ฌแ€—แ€”แ€€ แ€กแ€œแ€”แ€กแ€€แ€ปแ€ปแ€‘แ€แ€œแ€•แ€•แ€ซแ€€

แ€€แ€™แ€˜แ€ฌแ€€แ€€ แ€ผแ€ธแ€žแ€Š แ€แ€•แ€”แ€œแ€Šแ€แ€•แ€„แ€†แ€„แ€”แ€„แ€žแ€Š แ€กแ€›แ€แ€ผแ€กแ€›แ€”แ€‘แ€€ แ€›แ€€ แ€ฌแ€œแ€”แ แ€กแ€•แ€œแ€”แ€€แ€œแ€ฌแ€•แ€ซแ€™แ€Šแ‹

There are a number of tools online that help us to measure our carbon footprint, which can also help

us to better understand how to lessen our impact on the planet.

แ€€แ€ปแ€”แ€•แ€ แ แ€€แ€ฌแ€—แ€”แ€›แ€แ€ผแ€ฑแ€ฌแ€€ แ€แ€„แ€ผแ€ธแ€แ€ฌแ€”แ€„แ€žแ€Š แ€€แ€ฑแ€šแ€ฌแ€™ แ€ฌแ€ผแ€ธ แ€› แ€•แ€ซแ€žแ€Šแ‹ แŽแ€„แ€ผแ€ธแ€ แ€žแ€Š แ€€แ€™แ€˜แ€ฌแ€›แ€แ€™แ€กแ€›แ€•แ€ฑแ€ซ

แ€€แ€ปแ€”แ€•แ€ แ€™แ€Šแ€™แ€ป แ€žแ€€แ€›แ€ฑแ€ฌแ€€แ€™แ€› แ€žแ€Šแ€€ แ€•แ€™ แ€”แ€ฌแ€ผแ€ธแ€œแ€Šแ€œแ€ฌแ€›แ€ฑแ€ฑแ€” แ€€แ€Š แ€›แ€•แ€ผแ€ธแ€”แ€„แ€žแ€Šแ‹

What you will make แ€žแ€„ แ€แ€•แ€ผแ€œแ€•แ€ฑแ€™แ€Šแ€กแ€ฑแ€ฌแ‹

In this project, we will create a simplified carbon footprint calculator that can help people to

understand their personal impact.

แ€šแ€ผ แ€•แ€›แ€ฑแ€ฌแ€‚ แ€€แ€แ€„ แ€œแ€กแ€™ แ€ฌแ€ผแ€ธแ€€ แ€žแ€ แ แ€แ€€แ€šแ€›แ€ฑ แ€žแ€€แ€›แ€ฑแ€ฌแ€€แ€”แ€„แ€™แ€€ แ€”แ€ฌแ€ผแ€ธแ€œแ€Šแ€œแ€ฌแ€›แ€กแ€ฌแ€„

แ€€แ€Š แ€›แ€•แ€ผแ€ธแ€”แ€„แ€žแ€Š แ€›แ€ผแ€ธแ€› แ€„แ€ผแ€ธแ€œแ€šแ€€แ€›แ€žแ€ฌ แ€€แ€ฌแ€—แ€”แ€›แ€แ€ผแ€ฑแ€ฌแ€‚แ€แ€”แ€ผแ€ธแ€แ€€แ€ฑแ€€แ€แ€ฑแ€ผแ€€ แ€€แ€ปแ€”แ€•แ€ แ€–แ€”แ€ แ€ผแ€ธแ€ฑแ€•แ€ซแ€™แ€šแ‹

Page 3: CALCULATOR FOOTPRINT CARBON

What you will learn แ€žแ€„ แ€›แ€œแ€œแ€ฌแ€ฑแ€™แ€Š แ€กแ€ฑแ€ฌแ€™ แ€ฌแ€ผแ€ธแ‹

โ€ข Loop through data in a list

โ€ข Sum values based on user input

โ€ข Dynamically format strings

โ€ข Validate input

โ€ข List แ€แ€ฑแ€ผแ€กแ€แ€„แ€ผแ€ธแ€› data แ€™ แ€ฌแ€ผแ€ธแ€€ loop แ€•แ€แ€แ€ผแ€„แ€ผแ€ธแ‹

โ€ข User input แ€›แ€•แ€ฑแ€ซ แ€™แ€แ€Šแ แ€แ€”แ€–แ€ผแ€ธแ€™ แ€ฌแ€ผแ€ธแ€€ แ€›แ€•แ€ซแ€„แ€ผแ€ธแ€แ€ผแ€„แ€ผแ€ธแ‹

โ€ข แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธ(String)แ€™ แ€ฌแ€ผแ€ธแ€€

What you will need HARDWARE โ€“ a computer capable of accessing Trinket online. You do not need a Raspberry Pi to

complete this project.

DOWNLOADS

Starter Code - https://trinket.io/embed/python/d504a518be

Additional notes for educators Here is a link to the completed project - https://trinket.io/python/bd3506101e

Step 1: List the questions and answers แ€กแ€›แ€™แ€ผแ€ธแŠแ€กแ€›แ€แ€–แ€™ แ€ฌแ€ผแ€ธแ€€ List แ€ฑแ€ฌแ€ฑแ€„แ€ผแ€ธแ€แ€•แ€ผแ€ฑแ€แ€ผแ€„แ€ผแ€ธ

First, we want to ask the user some questions, and provide them with the possible answers that will

allow us to measure their carbon footprint.

แ€•แ€‘แ€™แ€†แ€ปแ€ผแ€ธ แ€€แ€ปแ€”แ€•แ€ แ€กแ€›แ€”แ€” แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€€ แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€กแ€ผ แ€ผแ€ป แ€›แ€™แ€ผแ€ธแ€ฑแ€•แ€ซแ€™แ€šแ‹แ€’ แ€›แ€”แ€ฌแ€€ แ€žแ€ แ€€ แ€แ€–แ€ฑแ€”แ€„แ€›แ€ผ แ€› แ€›แ€žแ€ฌ

แ€กแ€›แ€แ€–แ€™ แ€ฌแ€ผแ€ธ แ€›แ€‘แ€ฌแ€€แ€•แ€ปแ€›แ€•แ€ผแ€ธแ€• แ€ผแ€ธ แ€žแ€ แ€ฑ แ€€แ€ฌแ€—แ€”แ€›แ€แ€ผแ€ฑแ€ฌ แ€แ€„แ€ผแ€ธแ€แ€ฌแ€™ แ€ฌ แ€แ€–แ€ฑแ€•แ€ซแ€แ€šแ‹

โ€ข Open the starter project at https://trinket.io/embed/python/d504a518be

โ€ข แ€šแ€ผ Link แ€กแ€แ€„แ€ผแ€ธ แ€€แ€”แ€ฅ แ€ผแ€ธแ€•แ€›แ€ฑแ€ฌแ€‚ แ€€แ€€ แ€–แ€„แ€•แ€ซ - https://trinket.io/embed/python/d504a518be

โ€ข On the left is your code window, on the right is the result of your code. You can click the

โ€œRunโ€ button to run your code. Youโ€™ll notice that the first 2 lines have already been written

for you.

โ€ข แ€˜แ€šแ€แ€ผแ€™แ€ผแ€ธแ€žแ€Š แ€žแ€„ แ€€แ€’แ€›แ€ฑแ€ผแ€ธแ€ฑแ€™แ€šแ€›แ€”แ€ฑแ€ฌแ€แ€–แ€ฑแ€•แ€• แ€ผแ€ธ แ€Šแ€ฌแ€แ€ผแ€™แ€ผแ€ธแ€žแ€Š แ€žแ€„ แ€€แ€’แ€ฑแ€œแ€ฌแ€’แ€€

แ€แ€•แ€žแ€™แ€Šแ€›แ€”แ€ฑแ€ฌแ€แ€–แ€ฑแ€žแ€Šแ‹ โ€œRunโ€ แ€ผแ€œแ€แ€€ แ€” แ€•แ แ€žแ€„แ€€แ€’แ€€ แ€กแ€œแ€•แ€œแ€•แ€ผแ€„แ€ผแ€ธแ€”แ€„แ€žแ€Šแ‹ แ€•แ€‘แ€™แ€†แ€ปแ€ผแ€ธ แ‚

แ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€€ แ€žแ€„แ€กแ€แ€€ แ€›แ€ฑแ€ผแ€ธแ€‘แ€ฌแ€ผแ€ธแ€•แ€• แ€ผแ€ธแ€แ€–แ€ฑแ€žแ€Šแ€€ แ€žแ€แ€‘แ€ฌแ€ผแ€ธแ€™แ€•แ€ซแ€œแ€™แ€™แ€šแ‹

Page 4: CALCULATOR FOOTPRINT CARBON

The first line tells us to use version 3 of Python, the second gets the data for our carbon

calculator.

แ€•แ€‘แ€™แ€แ€ฑแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€€ Python แ€—แ€ฌแ€ผแ€ธแ€› แ€„แ€ผแ€ธ แƒ แ€€ แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€™แ€šแ€กแ€› แ€€แ€ฌแ€„แ€ผแ€ธ แ€›แ€แ€•แ€ฌแ€‘แ€ฌแ€ผแ€ธแ€แ€ฌแ€•แ€ซแ‹

แ€’แ€แ€šแ€แ€ฑแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€€ Carbon calculator แ€€แ€›แ€” แ€›แ€’แ€แ€ฌแ€€ แ€ฑแ€šแ€‘แ€ฌแ€ผแ€ธแ€แ€ฌ แ€แ€–แ€ฑแ€•แ€ซแ€แ€šแ‹

โ€ข Our data consists of a series of questions, with each of the answers given a value for how

much carbon weโ€™re using.

โ€ข แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€ฑ แ€›แ€’แ€แ€ฌแ€™ แ€ฌ แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€ฑ แ€ผแ€ธแ€ฑ แ€ผแ€ธแ€œแ€€ แ€•แ€ซแ€› แ€•แ€ซแ€แ€šแ‹ แ€กแ€›แ€แ€–แ€แ€ฑแ€ผแ€ผ แ€„แ€ผแ€ธแ€† แ€™ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€

แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€™แ€ป แ€€แ€ฌแ€—แ€”แ€•แ€™แ€ฌแ€แ€กแ€แ€€ แ€žแ€แ€™ แ€แ€‘แ€ฌแ€ผแ€ธแ€•แ€• แ€ผแ€ธ แ€แ€–แ€ฑแ€แ€šแ‹

โ€ข Letโ€™s start by listing out all the questions. To do this, weโ€™ll write a โ€˜forโ€™ loop that will give us

each of the questions in turn:

โ€ข แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€€ List แ€แ€•แ€ผแ€œแ€•แ€แ€ผแ€„แ€ผแ€ธแ€แ€–แ€„ แ€ฑแ€แ€„แ€ฑแ€›แ€กแ€ฌแ€„แ‹ แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€แ€ฑแ€ผแ€ผ แ€„แ€ผแ€ธแ€† แ€‘แ€€แ€œแ€ฌแ€”แ€„แ€– โ€˜forโ€™

loop แ€แ€ฑแ€ผแ€€ แ€›แ€ฑแ€ผแ€ธแ€ฑแ€•แ€ซแ€™แ€šแ‹

โ€ข We want to write out each question. To do this, weโ€™ll use the โ€˜printโ€™ command:

โ€ข แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€แ€„แ€ผแ€ธแ€€ แ€ฑแ€ฌแ€žแ€ฌแ€ผแ€ธแ€‘แ€€แ€œแ€ฌแ€›แ€ฑแ€ผ แ€„แ€แ€ฌ แ€แ€–แ€ฑแ€แ€šแ‹ แ€’แ€ซ แ€กแ€แ€€แ€› แ€€แ€ฌแ€„ โ€˜printโ€™ command แ€€

แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€ฑแ€•แ€ซแ€™แ€šแ‹

โ€ข Run your program using the โ€˜Runโ€™ button. In your Result window, you should see a list of

questions.

โ€ข โ€˜Runโ€™ แ€ผแ€œแ€แ€€ แ€” แ€•แ€•แ€• แ€ผแ€ธ แ€žแ€„แ€ฑ แ€•แ€›แ€‚แ€ฑแ€™แ€€ แ€กแ€œแ€•แ€ผแ€„แ€ผแ€ธแ€œแ€€แ€แ€กแ€ผแ€ซแ€™ แ€ฌ แ€ฑแ€œแ€ฌแ€’แ€แ€•แ€žแ€ฑแ€ฌแ€›แ€”แ€ฑแ€ฌแ€™ แ€ฌ

แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธ List แ€€ แ€แ€™แ€„แ€ฑแ€™ แ€ฌแ€•แ€ซแ‹

โ€ข For each question, we want to list out the answers. Add a second loop that outputs all the

possible answers to the question:

Page 5: CALCULATOR FOOTPRINT CARBON

โ€ข แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€แ€ฑแ€ผแ€ผ แ€„แ€ผแ€ธแ€† แ€กแ€แ€€ แ€กแ€›แ€แ€–แ€™ แ€ฌแ€ผแ€ธแ€€ list แ€แ€•แ€ผแ€œแ€•แ€ผ แ€„แ€•แ€ซแ€แ€šแ‹ แ€’แ€ซแ€› แ€€แ€ฌแ€„ แ€แ€–แ€ฑแ€”แ€„แ€›แ€ผ แ€› แ€

แ€กแ€›แ€แ€–แ€™ แ€ฌแ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€€ แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€แ€„แ€ผแ€ธแ€™ แ€ฌ แ€‘แ€Šแ€›แ€ฑแ€– แ€’แ€แ€šแ€กแ€€แ€€แ€™ loop แ€แ€ฑแ€ผ แ€‘แ€•แ€‘แ€Šแ€ฑแ€•แ€ซแ€™แ€šแ‹

โ€ข We want to number our answers to give the user something easy to type in. First, we need

to set an initial value for our number:

โ€ข แ€กแ€›แ€แ€–แ€™ แ€ฌแ€ผแ€ธแ€€ แ€”แ€ปแ€•แ€ซแ€แ€ฑแ€ฅแ€แ€ผแ€„แ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€แ€–แ€„ แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€กแ€›แ€”แ€” แ€›แ€ฑแ€ผแ€ธแ€ผ แ€šแ€ฑ แ€œแ€šแ€€แ€›แ€ฑแ€ผ แ€„แ€•แ€ซแ€แ€šแ‹

แ€’แ€ซแ€› แ€€แ€ฌแ€„ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€”แ€ปแ€•แ€ซแ€แ€กแ€แ€€ แ€€แ€”แ€ฅ แ€ผแ€ธแ€แ€”แ€–แ€ผแ€ธ แ€€ แ€žแ€แ€™ แ€แ€– แ€œแ€•แ€ซแ€แ€šแ‹

When programming we often use the letter โ€˜iโ€™ to indicate a counting number.

แ€€แ€’แ€›แ€ฑแ€ผแ€ธแ€แ€กแ€ผแ€ซแ€™ แ€ฌ i แ€ฑแ€ฌแ€œแ€ปแ€ผแ€ธแ€€ แ€›แ€ฑแ€แ€€แ€‚แ€แ€”แ€ผแ€ธแ€กแ€แ€–แ€ฑ แ€™ แ€€แ€ฌแ€ผแ€” แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€›แ€œ แ€› แ€•แ€ซแ€แ€šแ‹

โ€ข Next, we need to increase the value of โ€˜iโ€™ every time we go around our answer for loop:

โ€ข แ€’ แ€›แ€”แ€ฌแ€€ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€แ€–แ€กแ€แ€€ Loop แ€•แ€แ€แ€„แ€ผแ€ธ i แ€แ€”แ€–แ€ผแ€ธแ€€ แ€แ€ผแ€ธแ€žแ€ฌแ€ผแ€ธแ€›แ€ฑแ€– แ€œแ€•แ€ซแ€แ€šแ‹

โ€ข Now we can add this to the text of our answer:

โ€ข แ€’ i แ€แ€”แ€–แ€ผแ€ธแ€€ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€แ€– แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€กแ€แ€„แ€ผแ€ธแ€™ แ€ฌ แ€‘แ€•แ€›แ€•แ€ซแ€„แ€ผแ€ธแ€‘แ€Šแ€”แ€„แ€•แ€ซแ€แ€šแ‹

โ€ข Run your program. You should now get all of the questions with numbered answers.

โ€ข แ€žแ€„แ€•แ€›แ€‚แ€ฑแ€™แ€€ run แ€œแ€€แ€•แ€ซแ‹ แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€™ แ€ฌแ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€กแ€แ€€ แ€”แ€ปแ€•แ€ซแ€แ€ฑแ€ฅแ€กแ€œแ€€แ€กแ€›แ€แ€–แ€™ แ€ฌแ€ผแ€ธแ€€ แ€ฑแ€› แ€™ แ€ฌ

แ€แ€–แ€ฑแ€•แ€ซแ€แ€šแ‹

Step 2: Totalling it all up Next, we will get all the userโ€™s responses and total up their emissions.

แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€” แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€‘แ€ปแ€™ แ€แ€” แ€แ€•แ€”แ€ผ แ€€แ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€€ แ€ฑแ€šแ€•แ€• แ€ผแ€ธ แ€žแ€ แ€ฑ (แ€€แ€ฌแ€—แ€”)แ€‘แ€แ€œแ€„แ€™แ€•แ€™แ€ฌแ€

แ€€ แ€ฑแ€ฑแ€›แ€•แ€ซแ€„แ€ผแ€ธแ€ฑแ€•แ€ซแ€™แ€šแ‹

โ€ข Now that weโ€™re asking the user a question, we need to get their answer. Add the following

code to ask the user for their answer and store it in the variable named โ€œresponseโ€:

Page 6: CALCULATOR FOOTPRINT CARBON

โ€ข แ€šแ€ผ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€€ แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€‘แ€ป แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€›แ€™แ€ผแ€ธแ€•แ€• แ€ผแ€ธแ€žแ€Šแ€›แ€”แ€ฌแ€€ แ€กแ€›แ€แ€–แ€€ แ€œแ€€แ€ผแ€ปแ€ฑแ€”

แ€œแ€กแ€•แ€•แ€ซแ€แ€šแ‹ แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€ž แ แ€กแ€›แ€แ€–แ€€ แ€›แ€™แ€ผแ€ธแ€แ€™แ€”แ€ผแ€ธแ€•แ€• แ€ผแ€ธ โ€œresponseโ€ แ€†แ€žแ€Š variable แ€กแ€แ€„แ€ผแ€ธ

แ€žแ€™แ€ผแ€ธแ€†แ€Šแ€ผแ€ธแ€žแ€Š code แ€€ แ€›แ€กแ€ฌแ€€แ€•แ€ซแ€กแ€แ€„แ€ผแ€ธ แ€‘แ€•แ€‘แ€Šแ€•แ€ซแ‹

โ€ข For the question, we want to get the carbon amount from the relevant answer. Add the

code to print out the amount of carbon:

โ€ข แ€กแ€›แ€แ€–แ€™ แ€แ€†แ€„ แ€€แ€ฌแ€—แ€”แ€•แ€™แ€ฌแ€แ€€ แ€ฑแ€› แ€ผ แ€„แ€•แ€ซแ€แ€šแ‹ แ€€แ€ฌแ€—แ€”แ€•แ€™แ€ฌแ€ แ€€ print แ€‘แ€แ€›แ€•แ€ผแ€ธแ€ฑแ€” แ€›แ€กแ€ฌแ€€แ€•แ€ซ

code แ€€ แ€‘แ€•แ€‘แ€Šแ€•แ€ซแ‹

โ€ข Run your program. What happens when you try and put in a response? You probably get an

error saying:

โ€ข แ€•แ€›แ€‚แ€ฑแ€™ แ€€ run แ€œแ€€แ€แ€กแ€ผแ€ซแ€™ แ€ฌ แ€™แ€Šแ€ž แ€›แ€žแ€ฌ แ€แ€” แ€แ€•แ€”แ€™ แ€ฑแ€› แ€•แ€ซแ€žแ€œ แ‹ แ€žแ€„แ€กแ€›แ€”แ€”

แ€›แ€กแ€ฌแ€€แ€•แ€ซแ€กแ€แ€„แ€ผแ€ธ error แ€ฑแ€›แ€€แ€ฌแ€„แ€ผแ€ธแ€ฑแ€”แ€„แ€•แ€ซแ€œแ€™แ€™แ€šแ‹

โ€ข The reason we get this error is because the input command gives us a string (text) instead of

an integer (number). We need to convert our response into a number before we can use it:

โ€ข แ€กแ€†แ€•แ€ซ error แ€ฑแ€› แ€ แ€กแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€ฑแ€„แ€ผแ€ธแ€€ input command แ€€ integer (แ€‚แ€แ€”แ€ผแ€ธ) แ€กแ€ฑแ€ฌแ€ผแ€ธ string

(แ€ฑแ€ฌแ€žแ€ฌแ€ผแ€ธ) แ€€ แ€‘แ€แ€›แ€•แ€ผแ€ธแ€›แ€žแ€ฌแ€› แ€€แ€ฌแ€„ แ€แ€–แ€ฑแ€žแ€Šแ‹ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€” แ€กแ€›แ€แ€–แ€€ แ€กแ€žแ€ปแ€ผแ€ธแ€™แ€แ€•แ€ผแ€ผแ€„

number(แ€‚แ€แ€”แ€ผแ€ธ)แ€กแ€แ€–แ€ฑ แ€›แ€แ€•แ€ฌแ€„แ€ผแ€ธแ€œแ€– แ€œแ€•แ€ซแ€แ€šแ‹

โ€ข Run your program again. Thatโ€™s better.

โ€ข แ€•แ€›แ€‚แ€ฑแ€™แ€€ แ€‘แ€•แ€™แ€ป run แ€•แ€ซแ‹ แ€•แ€™แ€›แ€€แ€ฌแ€„แ€ผแ€ธแ€™แ€”แ€ แ€ฑแ€œแ€’ แ€ฑแ€•แ€ซแ€œแ€™แ€™แ€šแ‹

โ€ข Instead of showing the amount of carbon after each step, we want to keep a running tally

and display it after weโ€™ve asked all the questions. First, we need to initialise our total to 0

before we start our question loop:

โ€ข แ€€แ€ฌแ€—แ€”แ€•แ€™แ€ฌแ€แ€€ แ€แ€†แ€„แ€ผ แ€„แ€ผแ€ธแ€† แ€แ€„แ€ผแ€ธ แ€แ€•แ€žแ€ผ แ€„แ€ผแ€ธแ€‘แ€€ แ€ฑแ€ฑแ€›แ€•แ€ซแ€„แ€ผแ€ธแ€กแ€›แ€”แ€แ€–แ€„ แ€žแ€™แ€ผแ€ธแ€†แ€Šแ€ผแ€ธแ€‘แ€ฌแ€ผแ€ธแ€•แ€• แ€ผแ€ธ

แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€™ แ€ฌแ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€€ แ€›แ€™แ€ผแ€ธแ€•แ€• แ€ผแ€ธแ€›แ€”แ€ฌแ€€ แ€แ€•แ€žแ€œแ€•แ€ซแ€žแ€Šแ‹ แ€•แ€‘แ€™แ€†แ€ปแ€ผแ€ธ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€” แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธ

Page 7: CALCULATOR FOOTPRINT CARBON

Loop แ€€ แ€™แ€ฑแ€แ€„แ€™ แ€ฑแ€ฑแ€›แ€•แ€ซแ€„แ€ผแ€ธแ€แ€”แ€–แ€ผแ€ธ แ€€ แ€žแ€Š(0) แ€กแ€แ€–แ€ฑ แ€žแ€แ€™ แ€แ€ฑแ€”แ€œแ€•แ€ซแ€แ€šแ‹

โ€ข Instead of printing out the amount of carbon used after each question, we want to add it to

the total:

โ€ข แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€แ€ผแ€ผ แ€„แ€ผแ€ธแ€† แ€กแ€•แ€• แ€ผแ€ธแ€™ แ€ฌ แ€€แ€ฌแ€—แ€”แ€•แ€™แ€ฌแ€ แ€€ แ€แ€•แ€žแ€™แ€Šแ€กแ€ฑแ€ฌแ€ผแ€ธ แŽแ€„แ€ผแ€ธแ€แ€”แ€–แ€ผแ€ธแ€€ แ€ฑแ€ฑแ€›แ€•แ€ซแ€„แ€ผแ€ธแ€แ€”แ€–แ€ผแ€ธ

(total) แ€‘แ€ž แ€›แ€•แ€ซแ€„แ€ผแ€ธแ€‘แ€Šแ€ฑแ€•แ€ซแ€™แ€šแ‹

โ€ข Finally, we want to print this out after weโ€™ve finished looping through the questions:

โ€ข แ€›แ€”แ€ฌแ€€แ€†แ€ปแ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€แ€–แ€„ แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€™ แ€ฌแ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€›แ€™แ€ผแ€ธแ€•แ€• แ€ผแ€ธแ€žแ€Šแ€›แ€”แ€ฌแ€€ แŽแ€„แ€ผแ€ธแ€ฑแ€ฑแ€›แ€•แ€ซแ€„แ€ผแ€ธแ€แ€”แ€–แ€ผแ€ธแ€€ แ€แ€•แ€žแ€•แ€ซแ€™แ€šแ‹

Note that we donโ€™t have any spaces in front of line 16. The spaces are called โ€˜indentingโ€™ and

they tell Python that a command is in the loop. We donโ€™t want our print statement to be in

the loop, so we donโ€™t want it to be indented. Make sure this code is right against the edge.

แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€”แ€ปแ€•แ€ซแ€ แแ† แ€แ€„ แ€™แ€Šแ€žแ€Š space (แ€€แ€€แ€œแ€•) แ€™ แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€กแ€›แ€› แ€ปแ€แ€„ แ€› แ€™แ€›แ€”แ€žแ€Šแ€€

แ€žแ€แ€แ€•แ€ผแ€•แ€ซแ‹ แ€กแ€†แ€•แ€ซ space (แ€€แ€€แ€œแ€•แ€™ แ€ฌแ€ผแ€ธ)แ€€ โ€˜indentingโ€™ แ€œ แ€›แ€ผแ€ฑแ€ซแ€›แ€แ€ฑแ€ซ แ€•แ€• แ€ผแ€ธ แŽแ€„แ€ผแ€ธแ€ แ€€ command

แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€แ€ฑแ€ผแ€žแ€Š Loop แ€กแ€แ€„แ€ผแ€ธแ€› แ€žแ€Š แ€€ Python แ€กแ€ฌแ€ผแ€ธ แ€›แ€แ€•แ€ฌแ€แ€•แ€•แ€ซแ€žแ€Šแ‹ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€”

print แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€€ Loop แ€กแ€แ€„แ€ผแ€ธแ€™ แ€ฌ แ€› แ€™แ€›แ€”แ€›แ€ฑแ€ผ แ€„แ€แ€กแ€แ€€ แŽแ€„แ€ผแ€ธแ€€ indent แ€แ€•แ€ผแ€œแ€•แ€ฑแ€”แ€™แ€œแ€•แ€ซ แ‹

แ€กแ€†แ€•แ€ซ code แ€žแ€Š แ€กแ€ฑแ€”แ€ผแ€ธแ€” แ€„ แ€€แ€•แ€œ แ€€แ€› แ€›แ€”แ€– แ€›แ€žแ€ผ แ€ฌแ€•แ€ซแ€›แ€ฑแ‹

โ€ข Run your program. You should be able to answer all of the questions and get an answer at

the end.

โ€ข แ€žแ€„แ แ€•แ€›แ€‚แ€ฑแ€™แ€€ run แ€•แ€ซแ‹ แ€žแ€„แ€กแ€›แ€”แ€” แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€™ แ€ฌแ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€€ แ€›แ€แ€–แ€†แ€”แ€„แ€™ แ€ฌ แ€แ€–แ€ฑแ€•แ€• แ€ผแ€ธ แ€กแ€†แ€ปแ€ผแ€ธแ€™ แ€ฌ

แ€กแ€›แ€แ€–แ€แ€ฑแ€ผ แ€ฑแ€› แ€•แ€ซแ€œแ€™แ€™แ€šแ‹

โ€ข Currently, the program is just spitting out a number. Letโ€™s make that number a bit more user

friendly. Update your print line to the following to give your user some context to the

number:

โ€ข แ€šแ€ผ แ€•แ€›แ€‚แ€ฑแ€™แ€กแ€›แ€”แ€” แ€‚แ€แ€”แ€ผแ€ธแ€ฑแ€œแ€’แ€€แ€žแ€ฌ แ€‘แ€แ€›แ€•แ€ผแ€ธแ€•แ€ซแ€›แ€žแ€ผแ€ธแ€แ€šแ‹ แ€’แ€ซแ€› แ€€แ€ฌแ€„ แ€’ แ€ฑแ€œแ€’แ€€

แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€กแ€แ€€ แ€•แ€กแ€†แ€„แ€›แ€แ€•แ€›แ€กแ€ฌแ€„แ€แ€•แ€„แ€†แ€„แ€›แ€•แ€ผแ€ธ แ€€แ€ฑ แ‹ แ€žแ€„แ€ฑ print แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€€ แ€›แ€กแ€ฌแ€€แ€•แ€ซ

Page 8: CALCULATOR FOOTPRINT CARBON

code แ€กแ€แ€„แ€ผแ€ธ แ€‚แ€แ€”แ€ผแ€ธแ€กแ€แ€•แ€„ แ€กแ€แ€ผแ€ฌแ€ผแ€ธแ€›แ€žแ€ฌแ€ฑแ€€แ€ฌแ€ผแ€ธแ€ฑแ€™ แ€ฌแ€ผแ€ธ แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€›แ€•แ€ผแ€ธแ€ฑแ€” update แ€แ€•แ€ผแ€œแ€•แ€•แ€ซแ‹

โ€ข Run your program again. You should now get the total CO2 emitted displayed in a readable

format.

โ€ข แ€žแ€„แ€•แ€›แ€‚แ€ฑแ€™แ€€ แ€›แ€”แ€ฌแ€€แ€แ€€แ€€แ€™ run แ€•แ€ซแ‹ แ€žแ€„แ€กแ€›แ€”แ€แ€–แ€„ แ€ฑแ€ฑแ€›แ€•แ€ซแ€„แ€ผแ€ธ CO2 แ€‘แ€แ€œแ€แ€™แ€•แ€™แ€ฌแ€ แ€€

แ€–แ€แ€›แ€ฑแ€œแ€šแ€€แ€›แ€žแ€ฌ แ€•แ€ปแ€ฑแ€ปแ€แ€–แ€„ แ€แ€™แ€„แ€ฑแ€•แ€ซแ€œแ€™แ€™แ€šแ‹

Step 3: Input validation You have a working CO2 calculator, but what happens if the user enters a number that the program

isnโ€™t expecting, or something that isnโ€™t a number at all? Did you see an error called โ€œIndexErrorโ€? In

the next step weโ€™ll validate the user input so that if they enter something incorrect, it doesnโ€™t crash

the whole program.

แ€žแ€„แ€™ แ€ฌ แ€กแ€œแ€•แ€œแ€•แ€›แ€”แ€•แ€• แ€แ€–แ€ฑแ€ CO2 calculator แ€แ€ฑแ€ผ แ€› แ€›แ€”แ€•แ€ซแ€•แ€• แ‹แ€’แ€ซแ€›แ€•แ€™แ€š แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€€ แ€•แ€›แ€‚แ€ฑแ€™แ€€

แ€œแ€€แ€ผแ€ปแ€™แ€‘แ€ฌแ€ผแ€ธแ€›แ€žแ€ฌ แ€€แ€”แ€ผแ€ธแ€‚แ€แ€”แ€ผแ€ธแ€แ€ฑแ€ผแ€ผ(แ€ž ) แ€€แ€”แ€ผแ€ธแ€‚แ€แ€”แ€ผแ€ธแ€™แ€Ÿแ€แ€žแ€Šแ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€แ€ฑแ€ผแ€ผแ€€

แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€›แ€žแ€ฌแ€กแ€ผแ€ซ แ€™แ€Šแ€€แ€ž แ€™ แ€ผแ€ผแ€ธ แ€แ€–แ€ฑแ€•แ€ฌแ€ผแ€ธแ€•แ€ซแ€žแ€œแ‹ โ€œIndexErrorโ€ แ€Ÿ แ€›แ€ผแ€ฑแ€ซแ€›แ€žแ€ฌ แ€แ€•แ€ฟแ€”แ€ฌแ€™ แ€ผแ€ผแ€ธแ€€

แ€แ€™แ€„แ€›แ€แ€ปแ€ฑแ€•แ€ซแ€žแ€œแ€ฌแ€ผแ€ธแ‹ แ€›แ€”แ€ฌแ€€แ€แ€ฑแ€†แ€„แ€แ€„ แ€™ แ€ฌแ€ผแ€ธแ€šแ€„แ€ผแ€ธแ€›แ€žแ€ฌแ€กแ€ฑแ€ฌแ€แ€ฑแ€ผแ€ผ แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€•แ€ซแ€€ แ€•แ€›แ€‚แ€ฑแ€™แ€แ€ฑแ€ผแ€œแ€ปแ€ผแ€ธแ€€

แ€แ€•แ€ฟแ€”แ€ฌแ€™แ€แ€–แ€ฑแ€•แ€ฌแ€ผแ€ธแ€›แ€ฑแ€ฑแ€” แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€” แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€™แ€€ แ€ฑ แ€ฑแ€ฑแ€ฑแ€•แ€ซแ€œแ€™แ€™แ€šแ‹

โ€ข The first step in validation is to tell the user what is expected. Letโ€™s tell our user what is

expected of them when you ask them for their answer:

โ€ข แ€ฑ แ€ฑแ€ฑแ€ฑแ€ฌแ€™ แ€ฌ แ€•แ€‘แ€™แ€กแ€†แ€„แ€กแ€›แ€”แ€” แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€€ แ€˜แ€ฌแ€›แ€ แ€แ€–แ€Šแ€žแ€„แ€ผแ€ธแ€– แ€›แ€™แ€ปแ€ฌแ€œแ€„แ€‘แ€ฌแ€ผแ€ธแ€แ€šแ€†แ€แ€ฌ

แ€›แ€แ€•แ€ฌแ€– แ€œแ€•แ€ซแ€แ€šแ‹ แ€’แ€ซแ€› แ€€แ€ฌแ€„ แ€žแ€ แ€† แ€€ แ€กแ€›แ€แ€–แ€€ แ€›แ€™แ€ผแ€ธแ€แ€กแ€ผแ€ซ แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€€ แ€˜แ€ฌแ€›แ€

แ€›แ€™แ€ปแ€ฌแ€œแ€„แ€‘แ€ฌแ€ผแ€ธแ€แ€šแ€†แ€แ€ฌ แ€€แ€€แ€ผแ€แ€„แ€›แ€แ€•แ€ฌแ€ฑแ€•แ€ซแ€™แ€šแ‹

The โ€˜formatโ€™ command might be a little confusing, but for now all you need to know is that it

replaces โ€˜{}โ€™ with the number stored in โ€˜iโ€™.

โ€˜formatโ€™ command แ€€ แ€กแ€”แ€Šแ€ผแ€ธแ€„แ€š แ€”แ€ฌแ€ผแ€ธแ€œแ€Šแ€ฑแ€ผแ€€แ€•แ€ซแ€œแ€™แ€™แ€šแ‹ แ€’แ€ซแ€›แ€•แ€™แ€š โ€˜{}โ€™ แ€แ€„แ€ผแ€ธแ€€ แ€‚แ€แ€”แ€ผแ€ธแ€€

โ€˜iโ€™ แ€แ€”แ€–แ€ผแ€ธแ€” แ€กแ€ฑแ€ฌแ€ผแ€ธแ€‘แ€ผแ€ธแ€– แ€ฑแ€ฌ แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€แ€šแ€œ แ€• แ€กแ€ผ แ€žแ€‘แ€ฌแ€ผแ€ธแ€ฑแ€„ แ€กแ€†แ€„แ€›แ€แ€•แ€•แ€ซแ€แ€šแ‹

โ€ข Run your program. You might notice that the range given is one larger than the number of

options. Oh no! We can fix this substituting โ€œi-1โ€ instead of โ€œiโ€ in format:

โ€ข แ€žแ€„ แ€•แ€›แ€‚แ€ฑแ€™แ€€ run แ€•แ€ซแ‹ แ€›แ€•แ€ผแ€ธแ€‘แ€ฌแ€ผแ€ธแ€ range แ€กแ€แ€„แ€ผแ€ธแ€™ แ€ฌ แ€แ€ฑ แ€‘แ€€แ€•แ€ แ€‚แ€แ€”แ€ผแ€ธแ€›แ€ฑแ€ผแ€ธแ€ผ แ€šแ€™

แ€แ€–แ€ฑแ€›แ€”แ€แ€ฌแ€€ แ€›แ€แ€ปแ€ฑแ€•แ€ซแ€œแ€™แ€™แ€šแ‹ แ€’แ€ซแ€€ แ€›แ€แ€–แ€› แ€„แ€ผแ€ธแ€– แ€กแ€แ€€ format แ€›แ€”แ€ฑแ€ฌแ€™ แ€ฌ โ€œIโ€ แ€กแ€ฑแ€ฌแ€ผแ€ธ โ€œi-1โ€ แ€€

Page 9: CALCULATOR FOOTPRINT CARBON

แ€กแ€ฑแ€ฌแ€ผแ€ธแ€‘แ€ผแ€ธแ€ฑแ€•แ€ซแ€™แ€šแ‹

โ€ข Run your program again. Thatโ€™s better!

โ€ข แ€•แ€›แ€‚แ€ฑแ€™แ€€ แ€‘แ€•แ€™แ€ป run แ€•แ€ซ แ‹ แ€•แ€™แ€›แ€€แ€ฌแ€„แ€ผแ€ธแ€™แ€”แ€œแ€ฌแ€แ€ฌ แ€›แ€แ€ปแ€ฑแ€•แ€ซแ€œแ€™แ€™แ€šแ‹

โ€ข Now weโ€™re telling the user what to enter, they should get it right, but just because they

should get it right, it doesnโ€™t mean they will! Everyone makes mistakes, and some people

will deliberately try and break programs (thatโ€™s one of the ways that hackers can break into

computers). We still need to check that the input is valid.

โ€ข แ€šแ€ผ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€€ แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€ž แ€€ แ€˜แ€ฌแ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€ฑแ€™แ€šแ€†แ€แ€ฌ แ€›แ€แ€•แ€ฌแ€›แ€”แ€แ€กแ€แ€„แ€ผแ€ธ

แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€กแ€›แ€”แ€” แ€™ แ€”แ€™ แ€”แ€€แ€”แ€€แ€” แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€”แ€„แ€•แ€ซแ€แ€šแ‹ แ€’แ€ซแ€›แ€•แ€™แ€šแ€œ แ€ฑแ€แ€™แ€ผ แ€ฑแ€›แ€žแ€ผแ€ธแ€•แ€ซแ€˜แ€ผแ€ธ แ‹

แ€œแ€แ€„แ€ผแ€ธแ€€ แ€กแ€™ แ€ฌแ€ผแ€ธแ€›แ€ แ€œแ€•แ€”แ€„แ€•แ€ซแ€แ€šแ‹ แ€กแ€ผ แ€ผแ€ปแ€œแ€›แ€แ€€ แ€™แ€ฑแ€Šแ€ฑแ€šแ€• แ€กแ€™ แ€ฌแ€ผแ€ธแ€แ€•แ€ผแ€œแ€•แ€™แ€•แ€• แ€ผแ€ธ แ€•แ€›แ€‚แ€ฑแ€™แ€€

แ€– แ€€แ€ฑ แ€ผแ€ธแ€™แ€แ€ฌแ€™ แ€ผแ€ผแ€ธแ€›แ€ แ€› แ€”แ€„แ€•แ€ซแ€แ€šแ‹ แ€’แ€ซแ€› แ€€แ€ฌแ€„ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€” แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€™ input แ€€

แ€™ แ€”แ€€แ€”แ€แ€ผแ€„แ€ผแ€ธแ€› /แ€™แ€› แ€ฑแ€ฑแ€›แ€†แ€ผแ€ธแ€– แ€œแ€กแ€•แ€•แ€ซแ€แ€šแ‹

โ€ข Letโ€™s start by checking that a number is actually entered before we tell python to convert it

into a number:

โ€ข แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€” input แ€€ แ€‚แ€แ€”แ€ผแ€ธแ€กแ€แ€–แ€ฑ แ€™แ€›แ€แ€•แ€ฌแ€„แ€ผแ€ธแ€œแ€™ แ€กแ€†แ€•แ€ซ แ€‚แ€แ€”แ€ผแ€ธแ€€ แ€กแ€™ แ€”แ€แ€€แ€š

แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€แ€ผแ€„แ€ผแ€ธแ€› /แ€™แ€› แ€€ แ€ฑแ€แ€„แ€ฑแ€ฑแ€›แ€†แ€ผแ€ธแ€ฑแ€›แ€กแ€ฌแ€„แ‹

Note that weโ€™ve indented line 14 to the next level to tell Python that itโ€™s inside the if

statement.

แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€”แ€ปแ€•แ€ซแ€ แแ„ แ€™ แ€ฌ if statement แ€กแ€แ€„แ€ผแ€ธ แ€› แ€› แ€€แ€ฌแ€„แ€ผแ€ธ แ€žแ€žแ€ฌแ€ฑแ€” indent

(แ€€แ€€แ€œแ€•แ€แ€ผแ€ฌแ€ผแ€ธแ€‘แ€ฌแ€ผแ€ธแ€žแ€Š) แ€€ แ€žแ€แ€แ€•แ€ผแ€•แ€ซแ‹

โ€ข If the user enters something that isnโ€™t a digit, we should tell them that they need to enter a

number:

โ€ข แ€กแ€€แ€šแ€›แ€ฑแ€ป แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€กแ€›แ€”แ€แ€–แ€„ แ€‚แ€แ€”แ€ผแ€ธ แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€แ€ผแ€„แ€ผแ€ธ แ€™แ€แ€•แ€ผแ€•แ€ซแ€€ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€แ€–แ€„

แ€‚แ€แ€”แ€ผแ€ธแ€€แ€žแ€ฌ แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€– แ€œแ€› แ€€แ€ฌแ€„แ€ผแ€ธ แ€›แ€กแ€ฌแ€€แ€•แ€ซแ€กแ€แ€„แ€ผแ€ธ แ€กแ€žแ€›แ€•แ€ผแ€ธแ€ฑแ€•แ€ซแ€™แ€šแ‹

โ€ข Next, we need to validate the number, to ensure that itโ€™s in the right range, only then will

we add the number to the total. Add the โ€˜ifโ€™ below, and indent the existing โ€˜total +=โ€™ line:

โ€ข แ€‘ แ€›แ€”แ€ฌแ€€ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€” แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€›แ€žแ€ฌ แ€‚แ€แ€”แ€ผแ€ธแ€žแ€Š แ€™ แ€”แ€€แ€”แ€›แ€žแ€ฌ range แ€กแ€แ€„แ€ผแ€ธแ€แ€„

แ€› แ€›แ€”แ€žแ€Šแ€€ แ€ฑแ€ฑแ€›แ€†แ€ผแ€ธแ€ฑแ€”แ€œแ€žแ€Šแ‹ แ€žแ€Šแ€›แ€”แ€ฌแ€€แ€™ แ€กแ€†แ€•แ€ซ แ€‚แ€แ€”แ€ผแ€ธแ€€ แ€ฑแ€ฑแ€›แ€•แ€ซแ€„แ€ผแ€ธแ€แ€”แ€–แ€ผแ€ธ total แ€‘แ€ž

Page 10: CALCULATOR FOOTPRINT CARBON

แ€›แ€•แ€ซแ€„แ€ผแ€ธแ€‘แ€Šแ€™แ€Šแ‹ แ€›แ€กแ€ฌแ€€แ€แ€„แ€แ€•แ€‘แ€ฌแ€ผแ€ธแ€žแ€Šแ€กแ€แ€„แ€ผแ€ธ โ€˜ifโ€™ แ€›แ€”แ€ฌแ€€แ€†แ€€แ€แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€™ แ€ฌแ€ผแ€ธแ€€ แ€‘แ€Šแ€•แ€ซแ‹

โ€˜total +=โ€™ แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€แ€„ indent แ€แ€•แ€ผแ€œแ€•แ€•แ€ซแ‹

โ€ข Run your program. What happens if the user enters something wrong? It doesnโ€™t break the

program anymore, but it just goes on to ask the next question, and so wonโ€™t give an accurate

result. We want to ask the user the question again and again until they give a valid response.

โ€ข แ€žแ€„แ แ€•แ€›แ€‚แ€ฑแ€™แ€€ run แ€•แ€ซ แ‹ แ€กแ€€แ€šแ แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€€ แ€กแ€™ แ€ฌแ€ผแ€ธแ€แ€ฑแ€ผแ€‘แ€Šแ€•แ€ซแ€€ แ€™แ€Šแ€ž แ€แ€–แ€ฑแ€•แ€ซแ€žแ€œ?

แŽแ€„แ€ผแ€ธแ€žแ€Š แ€•แ€›แ€‚แ€ฑแ€™แ€€ แ€™แ€– แ€€แ€ฑ แ€ผแ€ธแ€›แ€แ€ฌแ€›แ€žแ€ฌแ€œแ€Šแ€ผแ€ธ แ€›แ€”แ€ฌแ€€แ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€€แ€žแ€ฌ

แ€†แ€€แ€œแ€€แ€›แ€™แ€ผแ€ธแ€™แ€Šแ€แ€–แ€ฑแ€›แ€žแ€ฌแ€› แ€€แ€ฌแ€„ แ€™ แ€”แ€€แ€”แ€›แ€žแ€ฌแ€กแ€›แ€แ€– แ€ฑแ€› แ€™แ€Š แ€™แ€Ÿแ€แ€•แ€ซแ‹ แ€‘ แ€› แ€€แ€ฌแ€„

แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€žแ€Š แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€กแ€›แ€”แ€แ€–แ€„ แ€™ แ€”แ€€แ€”แ€›แ€žแ€ฌ แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€™ แ€™แ€แ€–แ€ฑแ€™แ€ผ แ€„แ€ผแ€ธ

แ€กแ€†แ€•แ€ซแ€›แ€™แ€ผแ€ธแ€ผแ€”แ€ผแ€ธแ€€แ€žแ€ฌ แ€‘แ€•แ€ผแ€ซแ€‘แ€•แ€ผแ€ซ แ€›แ€™แ€ผแ€ธแ€แ€™แ€”แ€ผแ€ธแ€ฑแ€”แ€œแ€กแ€•แ€žแ€Šแ‹

โ€ข To achieve this, weโ€™ll use a while loop. This will keep looping through until the condition is

satisfied (in this case, we get a valid response). Start by initialising a Boolean variable:

โ€ข แ€‘แ€ž แ€แ€–แ€ฑแ€›แ€ฑแ€ฑแ€” แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€แ€–แ€„ while loop แ€€ แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€ฑแ€œแ€™แ€™แ€Šแ‹

แ€™ แ€”แ€€แ€”แ€›แ€žแ€ฌแ€กแ€›แ€แ€ผแ€กแ€›แ€”แ€™แ€แ€–แ€ฑแ€™แ€ผ แ€„แ€ผแ€ธ (แ€™ แ€”แ€€แ€”แ€›แ€žแ€ฌ แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€™ แ€™แ€แ€–แ€ฑแ€™แ€ผ แ€„แ€ผแ€ธ) แŽแ€„แ€ผแ€ธแ€žแ€Š

แ€‘แ€•แ€ผแ€ซแ€‘แ€•แ€ผแ€ซ looping แ€•แ€แ€›แ€”แ€œแ€™แ€™แ€šแ‹ Boolean variable (แ€กแ€™ แ€ฌแ€ผแ€ธ/แ€กแ€™ แ€”แ€ฑ แ€ฑแ€ฑแ€›แ€žแ€ฌ variable) แ€แ€–แ€„

แ€ฑแ€แ€„แ€•แ€ซแ‹

We will assume a response is not valid until weโ€™ve checked everything required to tell us

that it is.

แ€œแ€กแ€•แ€žแ€Šแ€™ แ€ฌแ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€€ แ€ฑ แ€ฑแ€ฑแ€™แ€™แ€•แ€• แ€ผแ€ธแ€™แ€ผ แ€„แ€ผแ€ธ แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€™ แ€€ แ€™ แ€ฌแ€ผแ€ธแ€šแ€„แ€ผแ€ธแ€žแ€Šแ€Ÿ แ€€แ€”แ€ฅ แ€ผแ€ธ

แ€šแ€†แ€‘แ€ฌแ€ผแ€ธแ€•แ€ซแ€™แ€šแ‹

โ€ข Our while loop will run all of our validations:

Page 11: CALCULATOR FOOTPRINT CARBON

โ€ข While loop แ€กแ€แ€„แ€ผแ€ธแ€แ€„ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ แ€ฑแ€ฑแ€›แ€†แ€ผแ€ธแ€™แ€™ แ€ฌแ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€€ run แ€•แ€ซแ€™แ€šแ‹

Note that weโ€™ve indented everything up to line 21 to another level. You can do this by

highlighting all of the code between lines 14-21 that you want to indent and pressing the

TAB key.

แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€”แ€ปแ€•แ€ซแ€ แ‚แ แ€กแ€‘ แ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€€ indent แ€แ€•แ€ผแ€œแ€•แ€‘แ€ฌแ€ผแ€ธแ€ฑแ€”แ€œแ€กแ€•แ€žแ€Šแ‹ แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธ แแ„ แ€™ แ‚แ

แ€กแ€แ€„แ€ผแ€ธแ€› code แ€™ แ€ฌแ€ผแ€ธแ€กแ€ฌแ€ผแ€ธแ€œแ€ปแ€ผแ€ธแ€€ select แ€แ€•แ€ผแ€œแ€•แ€‘แ€ฌแ€ผแ€ธแ€•แ€ซแ‹ แ€กแ€†แ€•แ€ซแ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€™ แ€ฌแ€ผแ€ธแ€แ€„ highlight

แ€แ€–แ€ฑแ€›แ€”แ€œแ€™แ€™แ€Šแ‹ แ€‘แ€กแ€ผแ€ซ indent แ€แ€•แ€ผแ€œแ€•แ€ฑแ€”แ€กแ€แ€€ TAB key แ€€ แ€” แ€•แ€•แ€ซแ‹

โ€ข If you run your program now, you will be stuck in an endless loop, because we never set

valid to True. Letโ€™s do that if our number is between the correct range:

โ€ข แ€žแ€„แ€กแ€›แ€”แ€แ€–แ€„ แ€•แ€›แ€‚แ€ฑแ€™แ€€ แ€šแ€ผ run แ€•แ€ซแ€€ แ€กแ€†แ€ปแ€ผแ€ธแ€™แ€žแ€แ€”แ€„แ€›แ€žแ€ฌ loop แ€กแ€แ€„แ€ผแ€ธแ€แ€„

แ€•แ€แ€™แ€›แ€”แ€œแ€™แ€™แ€Šแ‹ แ€กแ€˜แ€šแ€› แ€€แ€ฌแ€„แ€†แ€›แ€žแ€ฌ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€žแ€Š valid แ€€ True แ€กแ€แ€–แ€ฑ

แ€™แ€žแ€แ€™ แ€แ€ผแ€›แ€žแ€ฌแ€› แ€€แ€ฌแ€„ แ€แ€–แ€ฑแ€แ€šแ‹ แ€‘ แ€› แ€€แ€ฌแ€„ แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€™ แ€‚แ€แ€”แ€ผแ€ธแ€žแ€Š

แ€™ แ€”แ€€แ€”แ€›แ€žแ€ฌ range แ€กแ€แ€„แ€ผแ€ธแ€แ€„ แ€› แ€•แ€ซแ€€ valid แ€€ True แ€กแ€แ€–แ€ฑ แ€žแ€แ€™ แ€แ€•แ€ซแ‹

Note that weโ€™ve moved line 23 out of the if statement and the while loop by decreasing the

indent by two levels. We did this by using the backspace at the beginning of the line.

แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€กแ€™ แ€ แ‚แƒ แ€€ if statement แ€” แ€„ while loop แ€ แ แ€กแ€แ€•แ€„แ€–แ€€แ€ž indent level แ‚แ€ผ

แ€›แ€”แ€ฌแ€€แ€ž แ€›แ€ฑแ€ป แ€แ€ผแ€„แ€ผแ€ธแ€แ€–แ€„ แ€›แ€แ€•แ€ฌแ€„แ€ผแ€ธแ€œแ€‘แ€ฌแ€ผแ€ธแ€žแ€Šแ‹ แ€ฑแ€ฌแ€› แ€€แ€ฌแ€„แ€ผแ€ธแ€กแ€ฑแ€แ€„ backspace แ€” แ€•แ€แ€ผแ€„แ€ผแ€ธแ€แ€–แ€„ แ€›แ€”แ€ฌแ€€แ€ž

แ€›แ€ฑแ€ปแ€•แ€ซแ€žแ€Šแ‹

โ€ข If the user enters a number outside of the correct range, we should tell them what theyโ€™ve

done wrong:

Page 12: CALCULATOR FOOTPRINT CARBON

โ€ข แ€กแ€€แ€šแ แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€กแ€›แ€”แ€แ€–แ€„ แ€™ แ€”แ€€แ€”แ€›แ€žแ€ฌ range แ€กแ€แ€•แ€„แ€–แ€€แ€› แ€‚แ€แ€”แ€ผแ€ธแ€แ€ฑแ€ผแ€€ แ€‘แ€Šแ€™แ€•แ€ซแ€€

แ€€แ€ปแ€”แ€›แ€แ€ฌแ€ แ€กแ€›แ€”แ€แ€–แ€„ แ€™ แ€ฌแ€ผแ€ธแ€šแ€„แ€ผแ€ธแ€›แ€”แ€› แ€€แ€ฌแ€„แ€ผแ€ธ แ€›แ€–แ€ฌแ€แ€•แ€ฑแ€•แ€ซแ€™แ€šแ‹

โ€ข Run your program. It should now be working and correctly validating user responses.

โ€ข แ€žแ€„แ€ฑ แ€•แ€›แ€‚แ€ฑแ€™แ€€ run แ€•แ€ซ แ‹ แŽแ€„แ€ผแ€ธแ€žแ€Š แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ แ€‘แ€Šแ€žแ€„แ€ผแ€ธแ€™แ€™ แ€ฌแ€ผแ€ธแ€กแ€›แ€•แ€ฑแ€ซ แ€™ แ€”แ€€แ€”แ€ฑแ€ฌ

แ€ฑ แ€ฑแ€ฑแ€•แ€• แ€ผแ€ธแ€›แ€”แ€ฌแ€€ แ€›แ€€แ€ฌแ€„แ€ผแ€ธแ€ฑแ€ฌ แ€กแ€œแ€•แ€œแ€•แ€›แ€”แ€•แ€ซแ€œแ€™แ€™แ€šแ‹

Congratulations- แ€‚แ€แ€šแ€แ€™แ€ผแ€ธแ€›แ€แ€™แ€ฌแ€€แ€แ€ผแ€„แ€ผแ€ธ

You have finished the project. You can try one of our other projects or continue with the challenges

below.

แ€žแ€„แ€กแ€›แ€”แ€แ€–แ€„ แ€•แ€›แ€ฑแ€ฌแ€‚ แ€€แ€€ แ€›แ€กแ€ฌแ€„แ€แ€™แ€„แ€ฑแ€ฌ แ€•แ€• แ€ผแ€ธแ€†แ€ปแ€ผแ€ธแ€žแ€ฌแ€ผแ€ธแ€•แ€ซแ€•แ€• แ‹ แ€กแ€แ€ผแ€ฌแ€ผแ€ธแ€›แ€žแ€ฌแ€•แ€›แ€ฑแ€ฌแ€‚ แ€€แ€™ แ€ฌแ€ผแ€ธแ€€

แ€†แ€€แ€œแ€€แ€€แ€€แ€ผแ€ผแ€ธแ€ฑแ€ฌแ€ผแ€ธแ€”แ€„แ€•แ€ซแ€žแ€Š (แ€ž แ€™แ€Ÿแ€) แ€›แ€กแ€ฌแ€€แ€แ€„แ€›แ€–แ€ฌแ€แ€•แ€‘แ€ฌแ€ผแ€ธแ€žแ€Š แ€ฑแ€”แ€›แ€ผแ€ฑแ€ซแ€™แ€™ แ€ฌแ€ผแ€ธแ€€

แ€†แ€€แ€œแ€€แ€›แ€แ€–แ€› แ€„แ€ผแ€ธแ€”แ€„แ€žแ€Šแ‹

Donโ€™t forget to talk with an adult about registering for Moonhack and downloading your certificate

at Moonhack.com

Moonhack แ€กแ€แ€€ register แ€ฑแ€ฌแ€ฑแ€„แ€ผแ€ธแ€›แ€•แ€ผแ€ธแ€žแ€„แ€ผแ€ธแ€ฑแ€” แ€žแ€„แ แ€กแ€•แ€‘แ€”แ€ผแ€ธแ€žแ€€ แ€›แ€แ€•แ€ฌแ€– แ€™แ€›แ€™แ€•แ€ซแ€” แ‹ แ€žแ€„แ€กแ€แ€€

แ€‚แ€แ€แ€•แ€ผแ€œแ€€แ€™ แ€แ€€ Moonhack.com แ€™ แ€แ€†แ€„ แ€›แ€’แ€ซแ€„แ€ผแ€ธแ€œแ€’แ€ฑแ€šแ€”แ€„แ€•แ€ซแ€žแ€Šแ‹

Challenge: On repeat - แ€ฑแ€”แ€›แ€ผแ€ฑแ€ซแ€™

Can you loop through the entire program so that multiple people can use the carbon calculator

without having to reset it every time?

แ€กแ€ผ แ€”แ€แ€„แ€ผแ€ธ แ€•แ€›แ€‚แ€ฑแ€™แ€€ reset แ€ผ แ€ฑแ€” แ€™แ€œแ€• แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€žแ€™ แ€ฌแ€ผแ€ธ(แ€ฑแ€ฌ) แ€™ แ€€แ€ฌแ€—แ€” calculator แ€€

แ€†แ€€แ€แ€€แ€กแ€žแ€ปแ€ผแ€ธแ€แ€•แ€ผแ€”แ€„แ€ฑแ€” แ€žแ€„แ€กแ€›แ€”แ€แ€–แ€„ แ€•แ€›แ€‚แ€ฑแ€™แ€แ€ฑแ€ผแ€œแ€ปแ€ผแ€ธแ€€ loop แ€•แ€แ€”แ€„แ€•แ€ซแ€žแ€œแ€ฌแ€ผแ€ธแ‹

Advanced Challenge: Graph the result Can you graph the carbon footprints of your classmates? If you want to graph it in Python, check out

the Popular Pets Code Club project.

แ€žแ€„แ แ€กแ€แ€”แ€ผแ€ธแ€›แ€–แ€ฌแ€™ แ€ฌแ€ผแ€ธแ€ฑ แ€€แ€ฌแ€—แ€”แ€›แ€แ€ผแ€ฑแ€ฌ (carbon footprint) แ€™ แ€ฌแ€ผแ€ธแ€€ graph แ€•แ€ปแ€›แ€–แ€ฌแ€”แ€„แ€•แ€ซแ€žแ€œแ€ฌแ€ผแ€ธ? Python

แ€แ€„ graph แ€•แ€ปแ€แ€•แ€ผแ€œแ€•แ€ผ แ€„แ€•แ€ซแ€€ Popular Pets Code Club project แ€€ แ€€แ€Šแ€›แ€•แ€ซแ‹