Python基础(二)

5章 条件判断和循环

利用while循环计算100以内奇数的和。

sum = 0
x = 1
while x < 100:
    sum = sum + x
    x = x + 2
print sum

在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环。

例题:对100以内的两位数,请使用一个两重循环打印出所有十位数数字比个位数数字小的数,例如,23(2 < 3)

方法一:

for x in range (1,10):
    for y in range (x+1,10):
            print x*10+y

方法二:

for x in range (1,10):
    for y in range (1,10):
        if y>x:
            print x*10+y

方法三

for x in range (1,10):
    for y in range (1,10):
        if y>x:
            print str(x)+str(y)
    

函数

例题:sum()函数接受一个list作为参数,并返回list所有元素之和。请计算 1x1 + 2x2 + 3x3 + ... + 100x100。
L = xrange(1, 101)
print sum([i*i for i in L])

补充range与xrange的区别,引用自

range()返回一个递增或递减的数字列表,列表的元素值由三个参数决定,range([start,] stop[, step]) start表示列表开始的值,默认为“0”。stop 表示列表结束的值,该参数不可缺少,参数step表示步长,默认值为“1”。
range()返回的是一个递增或递减的数字列表。xrange 是一个类,返回的是一个xrange对象。使用xrange()进行遍历,每次遍历只返回一个值。range()返回的是一个列表,一次性计算并返回所有的值。因此,xrange()的执行效率要高于range()
分析见代码如下:

汉诺塔问题

详见汉诺塔问题

用python实现代码

-*- coding:utf-8 -*-
move(n, a, b, c)
def move(n, a, b, c):
    if n == 1:  
       print a, '-->', c
        return
    move(n-1, a, c, b)
    print a, '-->', c
    move(n-1, b, a, c)
move(4, 'A', 'B', 'C')

下面有一个我看的比较好的解释,递归经典案例汉诺塔 python实现


Python之定义默认参数

由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面:

Python之定义可变参数

def fn(*args):
    print args

Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。

请编写接受可变参数的 average() 函数。

def average(*args):
    if len(args) != 0:
         return sum(args)*1.0/len(args)
    else:
        return 0.0

print average()
print average(1, 2)
print average(1, 2, 2, 3, 4)

注意:sum需要乘以1.0,因为下面的1,2的平均值是1.5,如果不乘以1.0的话结果就是1。

原文地址:https://www.cnblogs.com/ulrica/p/8910452.html