python入门_day5_Chap8_函数

8.1定义函数
1.一个简单的 打招呼的函数

def greet_user():
#显示简单的问候语
    name=input('what is your name?')
    print('hello! '+name)


greet_user()

2.向函数传递信息

def greet_user(username):
    print('hello! '+username.title())


greet_user('MingJing')

3.实参和形参
在上述代码中:
username是形参
形参函数完成其工作时所需的信息
‘MingJing’是实参;
实参是调用函数时传递给函数的信息

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

def favorite_book(bookname):
    print('one of my favotite books is '+bookname.title())
    
bookname=input('输入你喜欢的书名')
favorite_book(bookname)
8.2 传递实参
def describe_pet(pet_name,animal_type='dog'):
    print('\n I have a '+animal_type+'.')
    print('My '+animal_type+"'s name is "+pet_name.title()+'.')

describe_pet(pet_name='willie')
describe_pet(pet_name='harry',animal_type='hamster')
describe_pet(animal_type='hamster',pet_name='harry')

运行结果:
在这里插入图片描述
练习
1.T恤 :编写一个名为make_shirt() 的函数,它接受一个尺码以及要印到T恤上的字样。这个函数应打印一个句子,概要地说明T恤的尺码和字样。 使用位置实参调用这个函数来制作一件T恤;再使用关键字实参来调用这个函数

def make_shirt(size='m',font='hello '):
    print('size of the T-shirt is '+size+'. Font is '+font)

make_shirt()

2.大号T恤 :修改函数make_shirt() ,使其在默认情况下制作一件印有字样“I love Python”的大号T恤。调用这个函数来制作如下T恤:一件印有默认字样的大号T 恤、一件印有默认字样的中号T恤和一件印有其他字样的T恤(尺码无关紧要)

def make_shirt(size='l',font='i love python'):
    print('size of the T-shirt is '+size+'. Font is '+font)

make_shirt()
make_shirt(size='m',)
make_shirt('s','i love huahua')

3.城市 :编写一个名为describe_city() 的函数,它接受一座城市的名字以及该城市所属的国家。这个函数应打印一个简单的句子,如Reykjavik is in Iceland 。给用于存储国家的形参指定默认值。为三座不同的城市调用这个函数,且其中至少有一座城市不属于默认国家。

def describe_city(city_name='paris',country='France'):
    print(city_name+' is in '+country)
    
descirbe_city()
describe_city('Rekyjavik','Iceland')
describe_city(city_name='Wuhan',country='China')

运行结果:
在这里插入图片描述

8.3返回值

1.让实参变成可选的
并非所有的人都有中间名,但如果你调用这个函数时只提供了名和姓,它将不能正确地运行。为让中间名变成可选的,可给实参middle_name 指定一个默认值——空字 符串,并在用户没有提供中间名时不使用这个实参。为让get_name() 在没有提供中间名时依然可行,可给实参middle_name 指定一个默认值——空字符串, 并将其移到形参列表的末尾:

def get_name(first_name,last_name,middle_name=''):
    if middle_name:
        full_name=first_name+' '+middle_name+' '+last_name
    else:
        full_name=first_name+' '+last_name
    return full_name.title()

musician=get_name('jimmy','hendrix')
print(musician)

musician=get_name('john','hooker','lee')
print(musician)

运行结果:
在这里插入图片描述

2.返回字典

def build_person(first_name,last_name,age=''):
    person={'first':first_name,'last':last_name}
    if age:
        person['age']=age
    return person

musician=build_person('chenyu','hua')
print(musician)

musician=build_person('chenyu','hua',age=27)
print(musician)

运行结果:
在这里插入图片描述
3.使用函数和while循环

问候用户

def get_name(first_name,last_name):
    full_name=first_name+' '+last_name
    return full_name.title()

while True:
    print('\n Please tell me your name:')
    print("(enter 'quit' to quit)")

    f_name=input('enter your first name: ')
    if f_name=='quit':
        break
    l_name=input('enter your last name: ')
    if l_name=='quit':
        break;

    name=get_name(f_name,l_name)
    print('\n Hello, '+name+' !')

练习
1.专辑 :编写一个名为make_album() 的函数,它创建一个描述音乐专辑的字典。这个函数应接受歌手的名字和专辑名,并返回一个包含这两项信息的字典。使 用这个函数创建三个表示不同专辑的字典,并打印每个返回的值,以核实字典正确地存储了专辑的信息。

def make_album(name,album):
    albums={'name':name,'album':album}
    return albums

album_0=make_album('huachenyu','yilei')
album_1=make_album('TaylorSwift','lover')
album_2=make_album('duizhang','yexing')

print(album_0)
print(album_1)
print(album_2)

运行结果:
在这里插入图片描述
给函数make_album() 添加一个可选形参,以便能够存储专辑包含的歌曲数。如果调用这个函数时指定了歌曲数,就将这个值添加到表示专辑的字典中。调用这个 函数,并至少在一次调用中指定专辑包含的歌曲数。

def make_album(name,album,num=''):
    albums={'name':name,'album':album}
    if num:
        albums['num']=num
    return albums

album_0=make_album('huachenyu','yilei')
album_1=make_album('TaylorSwift','lover','1')
album_2=make_album('duizhang','yexing','5')

print(album_0)
print(album_1)
print(album_2)

在这里插入图片描述

8.4传递列表

1.简单例子
和列表中每一个人问好。

def greet_users(names):
    for name in names:
        msg='hello,'+name.title()+'!'
        print(msg)


usernames=['huahua','E.T.','mingjing']
greet_users(usernames)

运行结果:
在这里插入图片描述
2.在函数中修改列表
将列表传递给函数后,函数就可对其进行修改。
在函数中对这个列表所做的任何修改都是永久性的。

3D打印机的代码:

unprinted_designs=['iphone','robot','haier']
completed_models=[]

while unprinted_designs:
    current_design=unprinted_designs.pop()

    print('Printing models:'+current_design)
    completed_models.append(current_design)

print('\n The following models have been printed:')
for completed_model in completed_models:
    print(completed_model)

运行结果:
在这里插入图片描述
两个操作:将当前在打印模型的操作 和遍历已完成模型的操作
它们将编写两个函数,使上述代码更加有效率。

def print_models(unprinted_designs,completed_models):
    while unprinted_designs:
        current_design=unprinted_designs.pop()
        completed_models.append(current_design)

def show_completed_models(completed_models):
    for completed_model in completed_models:
        print(completed_model)

unprinted_designs=['iphone','robot','haier']
completed_models=[]

print_models(unprinted_designs,completed_models)
show_completed_models(completed_models)

2.禁止函数修改列表
将列表的副本传递给函数
function_name(list_name[:])
切片表示法[:] 创建列表的副本。

在print_models.py中,如果不想清空未打印的设计列表,可像下面这样调用print_models() :
print_models(unprinted_designs[:], completed_models)

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

magicians=['hudini','harry','liuqian']

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


show_magicians(magicians)

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

magicians=['hudini','harry','liuqian']

def show_magicians(magicians):
    for magician in magicians:
        magician='The Great '+magician
        print(magician)


show_magicians(magicians)

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

magicians=['hudini','harry','liuqian']
great_magicians=[]
def show_magicians(magicians):
    for magician in magicians:
        magician='The Great '+magician
        great_magicians.append(magician)
        print(magician)


show_magicians(magicians[:])
print(magicians)
print(great_magicians)

运行结果:

在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用: 在看关于卡尔曼滤波的教程时,提到了一个文件chap1_27f.m,这个文件仿真结果没有问题,但是输出的结果都是关于变量Y(n)的。用户想知道是否有办法可以显示出变量X(n)的变化过程。 引用: 在尝试在Simulink中运行文件时,出现了一个错误信息,指出在flag=1调用期间,由S-Function返回的状态导数必须是长度为4的实向量。用户在flag=1中保持了长度为4,并且使用了实代数方程,但仍然出现了复杂向量的问题。用户想知道为什么会出现这个问题。 关于第一个问题,根据提供的引用内容,无法得知matlab中chap5_3f是什么。请提供更多关于chap5_3f的信息,我将尽力提供帮助。 关于第二个问题,根据引用,出现的错误信息是由于S-Function返回的状态导数的长度不匹配。这可能是因为在flag=1调用中的实向量的长度与期望的长度不一致。建议仔细检查代码中与S-Function相关的部分,确保状态导数的长度正确,并且与S-Function的要求相匹配。如果问题仍然存在,请提供更多关于代码和错误消息的信息,以便我能够提供更具体的帮助。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [卡尔曼滤波求教-chap1_27f.m](https://download.csdn.net/download/weixin_39841856/11536026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [倒立摆系统的 S 函数文件:S 函数 simulink 错误:在 flag=1 调用期间必须是长度为 4 的实向量...-matlab开发](https://download.csdn.net/download/weixin_38742954/19223894)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值