1. 程式人生 > >(Week 5)Python程式設計:從入門到實踐(習題9-1至9-15選做)

(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 
>>>