Nyckelord: if-satsen, Input

Beräkna antal kakelplattor
Du ska hjälpa företaget Kakelplattan AB att skriva ett program som beräknar hur många kakelpaket, kakelfix, samt säckar kakelfog som hantverkaren behöver ha med sig till varje kund. Programmet ska fråga vad det är för typ av arbete samt hur många kvadratmeter det är.
Programmet kan hantera tre olika typer av arbeten, Badrum ( B ), Hall ( H ) och Kök ( K ).
Ett paket kakelplattor innehåller 32 stycken plattor, en säck kakelfix väger 5 kg och en säck kakelfog väger 3 kg.
Ett badrum behöver per kvadratmeter
- Kakelplattor: 15 st
- Kakelfix: 0,7 kg
- Kakelfog: 0,4 kg
En hall behöver per kvadratmeter
- Kakelplattor: 8
- Kakelfix: 0,3 kg
- Kakelfog: 0,25 kg
Ett kök behöver per kvadratmeter
- Kakelplattor: 12 st
- Kakelfix: 0,2 kg
- Kakelfog: 0,15 kg
Notera att beräkningarna måste avrundas uppåt eftersom hantverkaren inte kan ta med sig halva paket till kunden. Exempelvis, om svaret blir 6,1 paket kakelplattor så ska programmet avrunda till 7 paket kakelplattor så att hantverkaren inte får för lite material med sig.
Ledtråd
Använd klassen input för att mata in ett värde från användaren. Använd sedan if-satser för att möta alla kriterium. Använd math.ceil() för att avrunda ett tal uppåt.
Lösning
Svar:
import math
work = input("Vad för typ av arbete är det? Ange B för badrum H för hall och K för kök: ")
if not (work == "B" or work == "H" or work == "K"):
print("Fel input, starta om programmet och försök igen")
else:
kvm = float(input("Ange antal kvadratmeter: "))
if work == "B" and kvm > 0:
kakelPlattor = math.ceil((15 * kvm) / 32)
kakelFix = math.ceil((0.7 * kvm) / 5)
kakelFog = math.ceil((0.4 * kvm) / 3)
print(f"Ta med {kakelPlattor} Kakelpaket, {kakelFix} paket Kakelfix samt {kakelFog} säckar Kakelfog: ")
elif work =="H" and kvm > 0:
kakelPlattor = math.ceil((8 * kvm) / 32)
kakelFix = math.ceil((0.3 * kvm) / 5)
kakelFog = math.ceil((0.25 * kvm) / 3)
print(f"Ta med {kakelPlattor} Kakelpaket, {kakelFix} paket Kakelfix samt {kakelFog} säckar Kakelfog: ")
elif work =="K" and kvm > 0:
kakelPlattor = math.ceil((12 * kvm) / 32)
kakelFix = math.ceil((0.2 * kvm) / 5)
kakelFog = math.ceil((0.15 * kvm) / 3)
print(f"Ta med {kakelPlattor} Kakelpaket, {kakelFix} paket Kakelfix samt {kakelFog} säckar Kakelfog: ")
else:
print("Fel input, starta om programmet och försök igen")
Förklaring:
Vi frågar först användaren efter vilken typ av arbete det är med hjälp av funktionen input(). Vi kontrollerar om inmatningen är giltig och ber därefter om en ny input. Eftersom vi frågar efter antal kvadratmeter så konverterar vi inputen från en string till en float (flyttal). Vi beräknar sedan hur mycket material som behövs i varje if-sats. Använd math.ceil() för att avrunda ett tal uppåt till närmsta heltal.