(Week 5)Python程式設計:從入門到實踐(習題9-1至9-15選做)
9-1 餐館
建立一個名為Restaurant的類,其方法__init__()設定兩個屬性:restaurant_name和cuisine_type.建立一個名為describe_restaurant() 的方法和一個名為open_restaurant() 的方法,其中前者列印前述兩項資訊,而後者列印一條訊息,指出餐館正在營業.根據這個類建立一個名為restaurant 的例項,分別列印其兩個屬性, 再呼叫前述兩個方法.
class Restaurant(): def __init__(self, name, type): self.restaurant_name = name self.cuisine_type = type def describe_restaurant(self): print(self.restaurant_name + ' sells ' + self.cuisine_type) def open_restaurant(self): print(self.restaurant_name + 'open!') res = Restaurant('Chaoshan Restaurant', 'Chaocai') print(res.restaurant_name, res.cuisine_type) res.describe_restaurant() res.open_restaurant()
('Chaoshan Restaurant', 'Chaocai')
Chaoshan Restaurant sells Chaocai
Chaoshan Restaurantopen!
9-4 就餐人數
①在為完成練習9-1而編寫的程式中,新增一個名為number_served的屬性,並將其預設值設定為0.根據這個類建立一個名為restaurant的例項;列印有多少人在這家餐館就餐過,然後修改這個值並再次列印它.
②新增一個名為set_number_served()的方法,它讓你能夠設定就餐人數. 呼叫這個方法並向它傳遞一個值,然後再次列印這個值.
③新增一個名為increment_number_served()的方法,它讓你能夠將就餐人數遞增.呼叫這個方法並向它傳遞一個這樣的值:你認為這家餐館每天可能接待的就餐人數.
class Restaurant(): def __init__(self, name, type): self.restaurant_name = name self.cuisine_type = type self.number_served = 0 def describe_restaurant(self): print(self.restaurant_name + ' sells ' + self.cuisine_type) def open_restaurant(self): print(self.restaurant_name + 'open!') def set_number_served(self, num): self.number_served = num def increment_number_served(self, num): self.number_served += num restaurant = Restaurant('Chaoshan Restaurant', 'Chaocai') restaurant.number_served = 100 print(restaurant.number_served) restaurant.set_number_served(200) print(restaurant.number_served) restaurant.increment_number_served(100) print(restaurant.number_served)
100
200
300
9-9 電瓶升級
在本節最後一個electric_car.py版本中,給Battery 類新增一個名為upgrade_battery() 的方法. 這個方法檢查電瓶容量,如果它不是85,就將它設定為85.建立一輛電瓶容量為預設值的電動汽車,呼叫方法get_range(),然後對電瓶進行升級,並再次呼叫get_range() . 你會看到這輛汽車的續航里程增加了.
class Car():'''Car類'''
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
self.odometer_reading = mileage
def increment_odometer(self, miles):
self.odometer_reading += miles
class ElectricCar(Car):'''電瓶車類'''
def __init__(self, make, model, year):
super().__init__(make, model, year)
self.battery = Battery() #增加電瓶
class Battery():'''電瓶類'''
def __init__(self, battery_size=70):
self.battery_size = battery_size
def describe_battery(self):
print("This car has a " + str(self.battery_size) + "-kWh battery.")
def upgrade_battery(self, size):
self.battery_size = size
def get_range(self):
if self.battery_size == 70:
range = 240
elif self.battery_size == 85:
range = 270
print("This car can go approximately " + str(range))
ebay = ElectricCar('AA', 'BB', 2016)
ebay.battery.describe_battery()
ebay.battery.get_range()
ebay.battery.upgrade_battery(85)
ebay.battery.describe_battery()
ebay.battery.get_range()
This car has a 70-kWh battery.
This car can go approximately 240
This car has a 85-kWh battery.
This car can go approximately 270
9-10 匯入Restaurant類
將最新的Restaurant類儲存在一個模組中.在另一個檔案中,匯入Restaurant類,建立一個Restaurant例項,並呼叫Restaurant 的一個方法, 以確認import 語句正確無誤.
#res.py
class Restaurant():
def __init__(self, name, type):
self.restaurant_name = name
self.cuisine_type = type
self.number_served = 0
def describe_restaurant(self):
print(self.restaurant_name + ' sells ' + self.cuisine_type)
def open_restaurant(self):
print(self.restaurant_name + 'open!')
def set_number_served(self, num):
self.number_served = num
def increment_number_served(self, num):
self.number_served += num
from res import Restaurant
restaurant = Restaurant('Chaoshan Restaurant', 'Chaocai')
restaurant.set_number_served(200)
print(restaurant.number_served)
200
>>>
9-14 骰子
①模組random 包含以各種方式生成隨機數的函式,其中的randint() 返回一個位於指定範圍內的整數。
②請建立一個Die 類,它包含一個名為sides 的屬性,該屬性的預設值為6. 編寫一個名為roll_die() 的方法,它列印位於1和骰子面數之間的隨機數. 建立一個6面的骰子, 再擲10次. 建立一個10面的骰子和一個20面的骰子, 並將它們都擲10次.
import random
class Die():
def __init__(self, dim = 6):
self.sizes = dim
def roll_die(self):
print(random.randint(1,self.sizes), end = ' ')
die6 = Die(6)
for _ in range(10):
die6.roll_die()
print()
die10 = Die(10)
for _ in range(10):
die10.roll_die()
print()
die20 = Die(20)
for _ in range(10):
die20.roll_die()
6 2 4 3 1 4 6 3 4 4
10 1 9 5 9 7 10 6 1 1
20 13 6 2 13 18 4 7 10 2
>>>