函數(shù)可以返回多個(gè)值嗎允青?答案是肯定的谬泌。
比如在游戲中經(jīng)常需要從一個(gè)點(diǎn)移動(dòng)到另一個(gè)點(diǎn),給出坐標(biāo)肆捕、位移和角度,就可以計(jì)算出新的坐標(biāo):
#math包提供了sin()和 cos()函數(shù)盖高,我們先用import引用它:
import math
def move(x, y, step, angle):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
這樣我們就可以同時(shí)獲得返回值:
>>> x, y = move(100, 100, 60, math.pi / 6)
>>> print x, y
151.961524227 70.0
但其實(shí)這只是一種假象慎陵,Python函數(shù)返回的仍然是單一值:
>>> r = move(100, 100, 60, math.pi / 6)
>>> print r
(151.96152422706632, 70.0)
用print打印返回結(jié)果,原來返回值是一個(gè)tuple喻奥!
但是席纽,在語法上,返回一個(gè)tuple可以省略括號(hào)撞蚕,而多個(gè)變量可以同時(shí)接收一個(gè)tuple润梯,按位置賦給對(duì)應(yīng)的值,所以甥厦,Python的函數(shù)返回多值其實(shí)就是返回一個(gè)tuple纺铭,但寫起來更方便。
任務(wù)
一元二次方程的定義是:ax2 + bx + c = 0
請(qǐng)編寫一個(gè)函數(shù)刀疙,返回一元二次方程的兩個(gè)解舶赔。
注意:Python的math包提供了sqrt()函數(shù)用于計(jì)算平方根。