高编作业(五)

第九章作业

9-1 餐馆 :创建一个名为Restaurant 的类,其方法 _ init _() 设置两个属性:restaurant_name 和cuisine_type 。创建一个名为describe_restaurant() 的方法和一个名为open_restaurant() 的方法,其中前者打印前述两项信息,而后者打印一条消息,指出餐馆正在营业。
根据这个类创建一个名为restaurant 的实例,分别打印其两个属性,再调用前述两个方法。

9-2 三家餐馆 :根据你为完成练习9-1而编写的类创建三个实例,并对每个实例调用方法describe_restaurant() 。

class Restaurant(object):
    def __init__(self, name, types):
        self.restaurant_name = name
        self.cuisine_type = types
    def describe_restaurant(self):
        print("Restaurant name is %s.\nCuisine type is %s."%(self.restaurant_name, self.cuisine_type))
    def open_restaurant(self):
        print("Open restaurant.")

# 9-1
a = Restaurant('AAAA', 'French')
print(a.restaurant_name)
print(a.cuisine_type)
a.describe_restaurant()
a.open_restaurant()

# 9-2
b = Restaurant('BBBB', 'British')
c = Restaurant('CCCC', 'Chinese')
d = Restaurant('DDDD', 'Janpenese')
b.describe_restaurant()
c.describe_restaurant()
d.describe_restaurant()

result1
9-4 就餐人数 :在为完成练习9-1而编写的程序中,添加一个名为number_served 的属性,并将其默认值设置为0。根据这个类创建一个名为restaurant 的实例;打印有多少人在这家餐馆就餐过,然后修改这个值并再次打印它。
添加一个名为set_number_served() 的方法,它让你能够设置就餐人数。调用这个方法并向它传递一个值,然后再次打印这个值。
添加一个名为increment_number_served() 的方法,它让你能够将就餐人数递增。调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数。

class Restaurant(object):
    def __init__(self, name, types):
        self.restaurant_name = name
        self.cuisine_type = types
        self.number_served = 0

    def describe_restaurant(self):
        print("Restaurant name is %s.\nCuisine type is %s."%(self.restaurant_name, self.cuisine_type))

    def open_restaurant(self):
        print("Open restaurant.")

    def set_number_served(self, num):
        self.number_served = num

    def increment_number_served(self, num):
        self.number_served += num

a = Restaurant("AAAA", "Chinese")
a.number_served = 10
print(a.number_served)
a.set_number_served(20)
print(a.number_served)
a.increment_number_served(20)
print(a.number_served)

result2
9-6 冰淇淋小店 :冰淇淋小店是一种特殊的餐馆。编写一个名为IceCreamStand 的类,让它继承你为完成练习9-1或练习9-4而编写的Restaurant 类。这两个版本的Restaurant 类都可以,挑选你更喜欢的那个即可。添加一个名为flavors 的属性,用于存储一个由各种口味的冰淇淋组成的列表。
编写一个显示这些冰淇淋的方法。创建一个IceCreamStand 实例,并调用这个方法。

class Restaurant(object):
    def __init__(self, name, types):
        self.restaurant_name = name
        self.cuisine_type = types
        self.number_served = 0

    def describe_restaurant(self):
        print("Restaurant name is %s.\nCuisine type is %s."%(self.restaurant_name, self.cuisine_type))

    def open_restaurant(self):
        print("Open restaurant.")

    def set_number_served(self, num):
        self.number_served = num

    def increment_number_served(self, num):
        self.number_served += num

class IceCreamStand(Restaurant):
    def __init__(self, name, types):
        super().__init__(name, types)
        self.flavors = ['Ice-cream', 'Sundae', 'Popsicle', 'Frozen yogurt']

    def show_flavor(self):
        print(", ".join(self.flavors))

a = IceCreamStand("AAAA", 'Chinese')
a.show_flavor()

result3
9-10 导入Restaurant 类 :将最新的Restaurant 类存储在一个模块中。在另一个文件中,导入Restaurant 类,创建一个Restaurant 实例,并调用Restaurant 的一个方法,以确认import 语句正确无误。

# Restaurant.py中的类定义见上一题代码
from Restaurant import Restaurant as R

a = R('AAAA', 'Chinese')
a.describe_restaurant()

第十章作业

10-1 Python学习笔记 :在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python知识,其中每一行都以“In Python you can”打头。将这个文件命名为learning_python.txt,并将其存储到为完成本章练习而编写的程序所在的目录中。
编写一个程序,它读取这个文件,并将你所写的内容打印三次:第一次打印时读取整个文件;第二次打印时遍历文件对象;第三次打印时将各行存储在一个列表中,再在with 代码块外打印它们。

info = []
with open("learning_python.txt") as fp:
    print(fp.read())
fp.close()
print("------------------------------------")
with open("learning_python.txt") as fp:
    for x in fp.readlines():
        print(x.strip())
fp.close()
print("------------------------------------")
with open("learning_python.txt") as fp:
    info = fp.read().split("\n")
fp.close()
print("\n".join(info))

result4
10-3 访客 :编写一个程序,提示用户输入其名字;用户作出响应后,将其名字写入到文件guest.txt中。

name = input("Please input your name\n")
with open("guest.txt", 'w') as fp:
    fp.write(name + '\n')

result5
result6
10-4 访客名单 :编写一个while 循环,提示用户输入其名字。用户输入其名字后,在屏幕上打印一句问候语,并将一条访问记录添加到文件guest_book.txt中。确保这个文件中的每条记录都独占一行。

with open("guest_book.txt", 'w') as fp:
    name = ""
    while True:
        name = input("Please input your name\n")
        if name=="q":
            break
        fp.write(name + '\n')
        print("Hello", name)
fp.close()

result7 result8
10-6 加法运算 :提示用户提供数值输入时,常出现的一个问题是,用户提供的是文本而不是数字。在这种情况下,当你尝试将输入转换为整数时,将引发TypeError 异常。编写一个程序,提示用户输入两个数字,再将它们相加并打印结果。在用户输入的任何一个值不是数字时都捕获TypeError 异常,并打印一条友好的错误消息。对你编写的程序进行测试:先输入两个数字,再输入一些文本而不是数字。
10-7 加法计算器 :将你为完成练习10-6而编写的代码放在一个while 循环中,让用户犯错(输入的是文本而不是数字)后能够继续输入数字。

# 经过尝试,这种情况下抛出的异常应为ValueError
while True:
    a = input("Please input the first number\n")
    if a=='q':
        break
    b = input("Please input the second number\n")
    try:
        c = int(a) + int(b)
    except ValueError:
        print("ValueError!")
    else:
        print("The result is %d."%c)

result9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值