python 手记6 〖笨方法学python习题21〗

如有意见或其他问题可在下方写下评论或加QQ:1693121186
欢迎一起讨论技术问题!
代码如下:

def add(a, b):
    print "ADDING %d + %d" % (a, b)
    return a + b

def subtract(a, b):
    print "SUBTRACTING %d - %d" % (a, b)
    return a * b

def multiply(a, b):
    print"MULTIPLY %d * %d" % (a, b)
    return a * b

def divide(a, b):
    print "DIVIDE %d / %d" % (a, b)
    return a / b


print "Let's do some math with just functions!"

age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)

print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)

# A puzzle for the extra credit, type it in anyway.
print "Here is a puzzle."

what = add(age, subtract(height, multiply(weight, divide(iq, 2))))

print "\t\t\t\nThat becomes: ", what, "\t\nCan you do it by hand?"

习题重点

**重要的是函数的最后一行,如函数add的最后一行return a + b,它实现以下几项功能:

  1. 我们调用函数时使用了两个参数,即a和b。
  2. 我们打印出这个函数的功能,这里就是计算加法。
  3. 接下来我们让python做某个回传的动作:我们返回a + b 的值。或者可以这么说:我将a和b加起来,再将结果返回。”
  4. Python将两个数字相加,然后当函数结束的时候,它就可以将a+b的结果赋予一个变量。

附加练习

  1. 如果你不是很确定return的功能,试着自己写几个函数,让他们返回一些值。你可以将任何可以放在=右边的东西作为一个函数的返回值。代码如下:
def ks(a, b):
    print "\tzhazha: %d + %d" % (a, b)
    return a + b

def gs(a, b):
    gg = float(raw_input())
    round(gg)
    print "\txiaosi: %d * %d * %d" % (a, b, gg)
    return a * b



s1 = ks(155, 15)
s2 = gs(155, 40)

print "666: %d, 444:%d" % (s1, s2)

注:代码中第5行有个float()函数,这个同int()函数一样,就是如理用户输入的数字,而float()函数还可以输入浮点数。

  1. 这个脚本的结尾是一个迷题。我将一个函数的返回值作了另外一个函数的参数。我将它们链接到了一起,就跟数学等式一样。这样可能有些难读,不过运行一下你就知道结果了。接下来,你需要试试看能不用用正常的方法实现和这个表达式一样的功能。
    自己见解:
    我一开始看到这题就看了看那串代码,发现它是从后面开始赋予函数的参数的值的。然后我就想到了变量,用变量来赋予它们值,同Zed A.Shaw用的方法一样。
    So,代码如下:

g1 = divide(iq,2) #用函数divide自己的返回值赋予自己的参数。
g2 = multiply(weight,g1) #同变量“g1“一样,但用了3个函数的值。
g3 = subtract(height,g2) #不用讲了
g4 = add(age, g3)
print "zhazha:", g4, "sss"

注:得加上习题代码哈!!!要不然运行不了。

  1. 最后颠倒过来做一次。写一个简单的等式,使用一样的函数来计算它。
    自己的见解:
    做算法其实很简单,直接颠倒过来,先计算,再做函数里的返回值,很厉害。
    So,代码如下:
def ks(a, b):
    print "\tzhazha: %d + %d" % (a, b)
    return a + b / b

def gs(a, b):
    gg = float(raw_input())
    round(gg)
    print "\txiaosi: %d * %d * %d" % (a, b, gg)
    return a * b / b



s1 = ks(155, 15)
s2 = gs(155, 40)

ks = gg = float(raw_input())
round(gg)
print "lihai: %d + %d / %d" % (s1, s2, ks)

。。。。。。。。。。。。。。。。
其实跟第一个附加练习的习题代码没啥两样,所以自己研究去吧!!


说明:
我不写运行结果是因为给你透露了结果再加上让你有了复制代码的机会,相当于害了你。(书上不让复制,手打去吧,骚年),这就好比给你透剧啦,要死全家的!
In the end. I say loudly:“好的程序员都不会复制代码的,所以别复制代码,自己体会代码去吧!”

猜你喜欢

转载自blog.csdn.net/hys_ntxif/article/details/78240553