有想一起学Python,遇到问题想一起交流探讨的,请私信我联系方式,一个人学习还是有点累!遇到问题全靠度娘,据说遇到问题得尽量google...
今天看了会儿java,发现学习Python对学习java还是有帮助的,当初学习java觉得好难,就放弃了,学习Python暂时还没觉得很难,学的也比较开心,此书超级适合小白啊,加油学。学完Python后,再返回来学习java, 说不定效果更好!!!
函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回
今天看了会儿java,发现学习Python对学习java还是有帮助的,当初学习java觉得好难,就放弃了,学习Python暂时还没觉得很难,学的也比较开心,此书超级适合小白啊,加油学。学完Python后,再返回来学习java, 说不定效果更好!!!
函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回
的值被称为返回值。可使用return语句将值返回到调用函数的代码行。
8.3 返回值
8.3.1 返回简单值
情景:定义一个函数,变量为姓和名,返回整洁的姓名。
eg:
def get_formatted_name(first_name,last_name):
full_name = first_name + ' ' + last_name
return full_name.title()
musician = get_formatted_name('jimi','hendrix')
print(musician)
op:
Jimi Hendrix
注意:1. 就输出结果而言,print("Jimi Hendrix")即可完成,但在需要分别存储大量名和姓的
大型程序中,像get_formatted_name()这样的函数非常有用。
8.3.2 让实参变成可选的
有时候,需要让实参变成可选的,这样使用函数的人就只需在必要时才提供额外的信息。可
使用默认值来让实参变成可选的。
情景:定义一个函数,变量为姓,中间名,名,如果有中间名就输出全名,如果没有中间名,只输出姓名。
eg:
def get_formatted_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_formatted_name('jimi','hendrix')
print(musician)
op:
Jimi Hendrix
注意:1. 若让实参middle_name可选,给其指定一个默认值-空字符串,在用户没有没有提供
中间名时,不使用这个实参。
2.让get_formatted_name()在没有提供中间名时依然可行, 可给实参middle_name指定
一个默认值——空字符串,并将其移到形参列表的末尾。
8.3.3 返回字典
函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。
情景:返回一个人的字典。
eg:
def build_person(first_name,last_name):
person = {'first':first_name,
'last':last_name}
return person
musician = build_person('jimi','hendrix')
print(musician)
op:
{'first': 'jimi', 'last': 'hendrix'}
还可以扩展此函数,比如添加年龄,职业等信息,如下:
eg:
def build_person(first_name,last_name,age = ''):
person = {'first':first_name,
'last':last_name,
'age':age}
return person
musician = build_person('jimi','hendrix','30')
print(musician)
op:
{'first': 'jimi', 'last': 'hendrix', 'age': 29}
8.3.4 结合使用函数和while循环
情景:用户输入姓和名之后,问好用户,直到用户输入姓或名为'q'终止。
eg:
def get_formatted_name(first_name,last_name):
full_name = first_name + ' ' + last_name
return full_name.title()
while True:
print("\nPlease tell your name:")
print("(Enter 'q', you can quit)")
f_name = input("First Name: ")
if f_name == 'q':
break
l_name = input("Last Name:")
if l_name == 'q':
break
formatted_name = get_formatted_name(f_name,l_name)
print("\nHello, " + formatted_name + "!")
练习:
8.6
def city_country(name,country):
fullinfo = '"' + name + ' ' + country + '"'
return fullinfo.title()
citycountry = city_country('huhan','china')
print(citycountry)
citycountry = city_country('los angles','america')
print(citycountry)
citycountry = city_country('london','britain')
print(citycountry)
8.7
def make_album(singer_name,album_name):
singer_album = {'singer':singer_name,
'album':album_name}
return singer_album
album_message = make_album('lizhi','tiankongzhicheng')
print(album_message)
album_message = make_album('zhaolei','chengdu')
print(album_message)
album_message = make_album('zhangweiwei','midian')
print(album_message)
def make_album(singer_name,album_name,music_num = ''):
if music_num:
singer_album = {'singer':singer_name,
'album':album_name,
'number':music_num}
else:
singer_album = {'singer':singer_name,
'album':album_name}
return singer_album
album_message = make_album('lizhi','tiankongzhicheng','8')
print(album_message)
album_message = make_album('zhaolei','chengdu')
print(album_message)
8.8
def make_album(singer_name,album_name):
album = {'singer':singer_name,
'album':album_name}
return album
while True:
print("Please enter information about your favorite album:")
print("(You can enter 'quit' at anytime to end it)")
singer_name = input("singer name: ")
if singer_name == 'quit':
break
album_name = input("album name: ")
if album_name == 'quit':
break
m_album = make_album(singer_name,album_name)
print(m_album)
8.8 出现问题较多
1. SyntaxError: 'break' outside loop
原因: python中break,continut只能用于for,while这样的循环中,不然会报错。
2. 代码运行后没反应
原因:缩进不对
3. 学习时,代码理解有误
原因:学习时,先定义函数后,认为先执行函数,再执行while循环,做8.8时发现,应该是先执行while循环,
循环调用函数后,才执行函数语句,最后才是while循环中的输出。