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)