Python练习 Chapter 8

8-1 消息 : 编写一个名为display_message() 的函数, 它打印一个句子, 指出你在本章学的是什么。 调用这个函数, 确认显示的消息正确无误。

def display_message():
    print("In this chapter, we will learn function of Python.")

display_message()

结果:

In this chapter, we will learn function of Python.

8-2 喜欢的图书 : 编写一个名为favorite_book() 的函数, 其中包含一个名为title 的形参。 这个函数打印一条消息, 如One of my favorite books is Alice in Wonderland 。 调用这个函数, 并将一本图书的名称作为实参传递给它。

def favorite_book(title):
    print("One of my favourite books is " + title + '.')

favorite_book("Alice in Wonderland")

结果:

One of my favourite books is Alice in Wonderland.
8-3 T 恤 : 编写一个名为 make_shirt() 的函数, 它接受一个尺码以及要印到 T 恤上的字样。 这个函数应打印一个句子, 概要地说明 T 恤的尺码和字样。
使用位置实参调用这个函数来制作一件
T 恤; 再使用关键字实参来调用这个函数。

def make_shirt(size, letter):
    print("\nHere is the information of your T-shirt.")
    print("Size: " + size)
    print("Letter: " + letter)

make_shirt('M', "I'm Chinese")
make_shirt(letter = "I'm Chinese", size = 'M')

结果:

Here is the information of your T-shirt.
Size: M
Letter: I'm Chinese

Here is the information of your T-shirt.
Size: M
Letter: I'm Chinese

8-4 大号T恤 : 修改函数make_shirt() , 使其在默认情况下制作一件印有字样“I love Python”的大号T恤。 调用这个函数来制作如下T恤: 

一件印有默认字样的大号T恤、一件印有默认字样的中号T恤和一件印有其他字样的T恤(尺码无关紧要) 。

def make_shirt(size='L', letter='I love Python'):
    print("\nHere is the information of your T-shirt.")
    print("Size: " + size)
    print("Letter: " + letter)

make_shirt()
make_shirt('M')
make_shirt(letter="I'm Chinese")

结果:

Here is the information of your T-shirt.
Size: L
Letter: I love Python

Here is the information of your T-shirt.
Size: M
Letter: I love Python

Here is the information of your T-shirt.
Size: L
Letter: I'm Chinese
8-5 城市 : 编写一个名为 describe_city() 的函数, 它接受一座城市的名字以及该城市所属的国家。 这个函数应打印一个简单的句子, 如 Reykjavik is in Iceland 。 给用于存储国家的形参指定默认值。 为三座不同的城市调用这个函数, 且其中至少有一座城市不属于默认国家。
def describe_city(city, country='China'):
    print(city + " is in " + country + '.')
describe_city('Guangzhou')
describe_city('Shanghai')
describe_city('London', 'UK')

结果:

Guangzhou is in China.
Shanghai is in China.
London is in UK.
8-6 城市名 : 编写一个名为 city_country() 的函数, 它接受城市的名称及其所属的国家。 这个函数应返回一个格式类似于下面这样的字符串: "Santiago, Chile"

至少使用三个城市-国家对调用这个函数, 并打印它返回的值。

def city_country(city, country):
    return city + ", " + country

print(city_country("Shanghai", "China"))
print(city_country("Tokyo", "Japan"))
print(city_country("London", "UK"))

结果

Shanghai, China
Tokyo, Japan
London, UK

8-7 专辑 : 编写一个名为make_album() 的函数, 它创建一个描述音乐专辑的字典。 这个函数应接受歌手的名字和专辑名, 并返回一个包含这两项信息的字典。 使用这个函数创建三个表示不同专辑的字典, 并打印每个返回的值, 以核实字典正确地存储了专辑的信息。给函数make_album() 添加一个可选形参, 以便能够存储专辑包含的歌曲数。 如果调用这个函数时指定了歌曲数, 就将这个值添加到表示专辑的字典中。 调用这个函数, 并至少在一次调用中指定专辑包含的歌曲数。

def make_album(singer, title, songs=0):
    if songs == 0:
        return {"Singer": singer, "Title": title}
    else:
        return {"Singer": singer, "Title": title, "Songs": songs}

print(make_album("Ariana Grande/Zedd", "Break Free"))
print(make_album("Jay Chou", "等你下课", 1))
print(make_album("Jessie J", "Domino", 1))
    

结果:

{'Singer': 'Ariana Grande/Zedd', 'Title': 'Break Free'}
{'Singer': 'Jay Chou', 'Title': '等你下课', 'Songs': 1}
{'Singer': 'Jessie J', 'Title': 'Domino', 'Songs': 1}

8-8 用户的专辑 : 在为完成练习 8-7 编写的程序中, 编写一个 while 循环, 让用户输入一个专辑的歌手和名称。 获取这些信息后, 使用它们来调用函数 make_album() , 并将创建的字典打印出来。 在这个 while 循环中, 务必要提供退出途径。
def make_album(singer, title, songs=0):
    if songs == 0:
        return {"Singer": singer, "Title": title}
    else:
        return {"Singer": singer, "Title": title, "Songs": songs}

print(make_album("Ariana Grande/Zedd", "Break Free"))
print(make_album("Jay Chou", "等你下课", 1))
print(make_album("Jessie J", "Domino", 1))
    
while True:
    singer = input("Please enter singer's name: ")
    album = input("Please enter the album's name: ")
    print(make_album(singer, album))
    ask = input("Do you still want to continue? (yes/no) ")
    if ask == "no":
        break

结果:

{'Singer': 'Ariana Grande/Zedd', 'Title': 'Break Free'}
{'Singer': 'Jay Chou', 'Title': '等你下课', 'Songs': 1}
{'Singer': 'Jessie J', 'Title': 'Domino', 'Songs': 1}
Please enter singer's name: Jessie J
Please enter the album's name: Alive
{'Singer': 'Jessie J', 'Title': 'Alive'}
Do you still want to continue? (yes/no) no

8-9 魔术师 : 创建一个包含魔术师名字的列表, 并将其传递给一个名为show_magicians() 的函数, 这个函数打印列表中每个魔术师的名字。

def show_magicians(magicians):
    for magician in magicians:
        print(magician)

magicians = ['Alice', 'Bob', 'David']
show_magicians(magicians)

结果:

Alice
Bob
David

8-10 了不起的魔术师 : 在你为完成练习8-9而编写的程序中, 编写一个名为make_great() 的函数, 对魔术师列表进行修改, 在每个魔术师的名字中都加入字样“the Great”。 调用函数show_magicians() , 确认魔术师列表确实变了。

def show_magicians(magicians):
    for magician in magicians:
        print(magician)

def make_great(magicians):
    #直接使用for循环不能修改里面的值
    i = 0
    while magicians[i] != magicians[-1]:
        magicians[i] = 'the Great ' + magicians[i]
        i += 1
    magicians[-1] = 'the Great ' + magicians[-1]
        
magicians = ['Alice', 'Bob', 'David']
make_great(magicians)
show_magicians(magicians)

结果:

the Great Alice
the Great Bob
the Great David

8-11 不变的魔术师 : 修改你为完成练习 8-10 而编写的程序, 在调用函数 make_great() 时, 向它传递魔术师列表的副本。 由于不想修改原始列表, 请返回修改后的列表, 并将其存储到另一个列表中。 分别使用这两个列表来调用 show_magicians() , 确认一个列表包含的是原来的魔术师名字, 而另一个列表包含的是添加了字样 “the Great” 的魔术师名字。
def show_magicians(magicians):
    for magician in magicians:
        print(magician)

def make_great(magicians):
    #直接使用for循环不能修改里面的值
    i = 0
    while magicians[i] != magicians[-1]:
        magicians[i] = 'the Great ' + magicians[i]
        i += 1
    magicians[-1] = 'the Great ' + magicians[-1]
    return magicians
        
magicians = ['Alice', 'Bob', 'David']

changed_magicians = make_great(magicians[:])
show_magicians(changed_magicians)
show_magicians(magicians)

结果:

the Great Alice
the Great Bob
the Great David
Alice
Bob
David

8-12 三明治 : 编写一个函数, 它接受顾客要在三明治中添加的一系列食材。 这个函数只有一个形参(它收集函数调用中提供的所有食材) , 并打印一条消息, 对顾客点的三明治进行概述。 调用这个函数三次, 每次都提供不同数量的实参。

def make_sandwich(*foods):
    print("\nMake a sandwich with the following foods")
    for food in foods:
        print("- " + food)

make_sandwich('tuna')
make_sandwich('tomatoes', 'lecture', 'roast chicken')
make_sandwich('egg', 'butter')

结果:

Make a sandwich with the following foods
- tuna

Make a sandwich with the following foods
- tomatoes
- lecture
- roast chicken

Make a sandwich with the following foods
- egg
- butter

8-13 用户简介 : 复制前面的程序user_profile.py, 在其中调用build_profile() 来创建有关你的简介; 调用这个函数时, 指定你的名和姓, 以及三个描述你的键-值对。

def build_profile(first, last, **user_info):
    """创建一个字典, 其中包含我们知道的有关用户的一切"""
    profile = {}
    profile['first_name'] = first
    profile['last_name'] = last
    for key, value in user_info.items():
        profile[key] = value
    return profile

user_profile = build_profile('albert', 'einstein',
    location='princeton',
    field='physics')
print(user_profile)

my_profile = build_profile('Toffc', 'Chan', age = 60, weight = '60kg', height = '170 cm')
print(my_profile)

结果:

{'first_name': 'albert', 'last_name': 'einstein', 'location': 'princeton', 'field': 'physics'}
{'first_name': 'Toffc', 'last_name': 'Chan', 'age': 60, 'weight': '60kg', 'height': '170 cm'}

8-14 汽车 : 编写一个函数, 将一辆汽车的信息存储在一个字典中。 这个函数总是接受制造商和型号, 还接受任意数量的关键字实参。 这样调用这个函数: 提供必不可少的信息, 以及两个名称 值对, 如颜色和选装配件。 这个函数必须能够像下面这样进行调用:
car = make_car('subaru', 'outback', color='blue', tow_package=True)
打印返回的字典, 确认正确地处理了所有的信息。
def make_car(manufacture, type, **others):
    car = {}
    car['manufacture'] = manufacture
    car['type'] = type
    for key, value in others.items():
        car[key] = value
    return car

my_car =  make_car('subaru', 'outback', color='blue', tow_package=True)
print(my_car)
结果:
{'manufacture': 'subaru', 'type': 'outback', 'color': 'blue', 'tow_package': True}

8-15 打印模型 : 将示例print_models.py中的函数放在另一个名为printing_functions.py的文件中; 在print_models.py的开头编写一条import 语句, 并修改这个文件以使用导入的函数。

printing_functions.py

def print_models(unprinted_designs, completed_models):
    """
    模拟打印每个设计, 直到没有未打印的设计为止
    打印每个设计后, 都将其移到列表completed_models中
    """
    while unprinted_designs:
        current_design = unprinted_designs.pop()
# 模拟根据设计制作3D打印模型的过程
    print("Printing model: " + current_design)
    completed_models.append(current_design)

def show_completed_models(completed_models):
    """显示打印好的所有模型"""
    print("\nThe following models have been printed:")
    for completed_model in completed_models:
        print(completed_model)
print_models.py

import printing_functions 

unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']
completed_models = []
printing_functions.print_models(unprinted_designs, completed_models)
printing_functions.show_completed_models(completed_models)

结果:

Printing model: iphone case

The following models have been printed:
iphone case
8-16 导入 : 选择一个你编写的且只包含一个函数的程序, 并将这个函数放在另一个文件中。 在主程序文件中, 使用下述各种方法导入这个函数, 再调用它:
import module_name
from module_name import function_name
from module_name import function_name as fn
import module_name as mn

from module_name import *

hello.py

def hello_world():
    print("Hello world!")

5ways.py

import hello
hello.hello_world()

from hello import hello_world
hello_world()

from hello import hello_world as say_hello_world
say_hello_world()

import hello as greeting
greeting.hello_world()

from hello import * 
hello_world()

结果:

Hello world!
Hello world!
Hello world!
Hello world!
Hello world!





  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值