一,求累加和续

题目:现在,不仅局限于求解100的累加和,使用函数式编程把这个100编程参数,使得可以求解任意累加和。

程序:

def cal_sum(number):
a=0
for i in range(number+1):
a=a+i
return a
num1=40
num2=150
sum1=cal_sum(num1)
sum2=cal_sum(num2)
print("{}的累加和是:{}".format(num1,sum1))
print("{}的累加和是:{}".format(num2,sum2))

结果:

40的累加和是:820
150的累加和是:11325

二,不重复三位数续

题目:前面我们曾使用1,2,3,4四个数字构成了无重复数字的三位数,现在我们定义两个参数,low和high,问使用low到high的n个数字能够构成多少个无重复数字的三位数。

程序:

def triple_number(low, high):
count = 0
for i in range(low, high + 1):
for j in range(low, high + 1):
for k in range(low, high + 1):
if i != j and i != k and j != k:
print(i * 100 + j * 10 + k)
count += 1
print("当可选的数字为{}-{}时,一共有{}个三位数" .format(low, high, count))
triple_number(1, 4)
triple_number(2, 6)

结果:

123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432

当可选的数字为1-4时,一共有24个三位数

234
235
236
243
245
246
253
254
256
263
264
265
324
325
326
342
345
346
352
354
356
362
364
365
423
425
426
432
435
436
452
453
456
462
463
465
523
524
526
532
534
536
542
543
546
562
563
564
623
624
625
632
634
635
642
643
645
652
653
654

当可选的数字为2-6时,一共有60个三位数

三,猜数字游戏续

题目:在玩游戏的时候我们需要主持人输入正确数字和正确的数字范围,现在定义一个函数,并把这三个数作为参数传递给函数,实现函数式的猜数字游戏。游戏规则

程序:

def guss_play(true_number,low_number,high_number):
count=1
while count<=5:
guss_number=int(input("数字的范围是{}-{},现在是第{}次猜测:".format(low_number,high_number,count)))
if guss_number==true_number:
print("恭喜你猜对了")
break
elif low_number
low_number=guss_number
elif true_number
high_number=guss_number
count+=1
if count>5:
print("很遗憾,您的五次都没有猜对。正确的数字是:{}".format(true_number))
guss_play(150,100,200)

结果:

数字的范围是100-200,现在是第1次猜测:144
数字的范围是144-200,现在是第2次猜测:15
数字的范围是144-200,现在是第3次猜测:167
数字的范围是144-167,现在是第4次猜测:170
数字的范围是144-167,现在是第5次猜测:150

恭喜你猜对了

四,nn乘法表

题目:学习了函数之后,我们将不再局限于输入九九乘法表了,让我们把”九“作为参数,打印不同的乘法表。

程序:

def multiple_table(n):
for i in range(1,n+1):
for j in range(i, n + 1):
print("{}x{}={}".format(i, j, i * j), end="\t")
print("\n")
# 九九乘法表
multiple_table(9)
# 五五乘法表
multiple_table(5)

结果:

1x1=1   1x2=2   1x3=3   1x4=4   1x5=51x6=6    1x7=7   1x8=8   1x9=9
2x2=4   2x3=6   2x4=8   2x5=10  2x6=12x7=14   2x8=16  2x9=18
3x3=9   3x4=12  3x5=15  3x6=18  3x7=23x8=24   3x9=27
4x4=16  4x5=20  4x6=24  4x7=28  4x8=34x9=36
5x5=25  5x6=30  5x7=35  5x8=40  5x9=45
6x6=36  6x7=42  6x8=48  6x9=54
7x7=49  7x8=56  7x9=63
8x8=64  8x9=72
9x9=81
1x1=1   1x2=2   1x3=3   1x4=4   1x5=5
2x2=4   2x3=6   2x4=8   2x5=10
3x3=9   3x4=12  3x5=15
4x4=16  4x5=20
5x5=25

五,求解所有素数

题目:使用函数求解low到high之间的所有素数(包括low和high本身)

思路:我们在判断一个数x是不是素数的时候,可以设置一个flag变量,并设置他的初始值为字符串”是素数“。如果从2到x-1的循环中,x不能整除其中任何一个数,那x就是素数,此时flag保持等于”是素数“不变。但是如果在循环过程中,x可以整除任何一个数,flag的值变为”不是素数“。当flag等于”是素数“时,判断这个数为素数;当flag等于”不是素数“时,判断这个数不是素数。

程序:

def find_number(low,high):
for i in range(low,high+1):
flag="是素数"
for j in range(2,i):
if i%j==0:
flag="不是素数"
break
if flag=="是素数":
print(i)
find_number(101,200)

结果:

101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199