训练一   快速求解累加和

题目:求解累加和 1+2+3......+100。

思路:

1,先设置一个变量a=0

2,依次循环遍历1到100之间的整数,每次循环把遍历到的数字加到a上。比如第一次循环时,迭代变量  i  为1时,加到a上即为0+1,以此类推,直到加到100。

程序:

a = 0

for i in range(1,101):

a+=i

print("最终的结果是:{}".format(a))

a = 0

s=0

while a<=100:

s+=a

a+=1

print("最终的结果是:{}".format(s))

结果:

最终的结果是:5050

知识回顾:

range()函数生成1到100之间的整数序列,循环遍历这100个数字。

训练二   累积的力量

题目:求100的阶乘。

程序:

a=1

for i in range(1,101):

a*=i

print('结果是{}'.format(a))

i=1

a=1

while i<=100:

a*=i

i+=1

print("结果是:{}".format(a))

分析:与求100之内的和类似,只不过初始值应该是1。for循环和while循环一定程度可以互换。

训练三   不重复的三位数

题目:1,2,3,4这四个数字,能组成多少个不相同且无重复数字的三位数呢?并输出出来。

思路:

1,如果要组成三位数,首先把个位,十位,百位上的数字表示出来。如果我们分别用  i ,  j  ,  k,  分别表示个位,十位,百位数字。那么数字可以表示为  number=i+j*10+k*100。

2,其次我们思考  i,   j  ,  k ,分别从1,2,3,4种选取,当i  ,  j ,   k   不相等的时候,我们输出这个数字。

程序:

count = 0

for i in range(1, 5):

for j in range(1, 5):

for k in range(1, 5):

if i!=j  and  j!=k  and  i!=k:

number=i+j*10+k*100

print('这个不相等的三位数是{}'.format(number))

count+=1

print("一共有{}个三位数".format(count))

结果:

这个不相等的三位数是321

这个不相等的三位数是421

这个不相等的三位数是231

这个不相等的三位数是431

这个不相等的三位数是241

这个不相等的三位数是341

这个不相等的三位数是312

这个不相等的三位数是412

这个不相等的三位数是132

这个不相等的三位数是432

这个不相等的三位数是142

这个不相等的三位数是342

这个不相等的三位数是213

这个不相等的三位数是413

这个不相等的三位数是123

这个不相等的三位数是423

这个不相等的三位数是143

这个不相等的三位数是243

这个不相等的三位数是214

这个不相等的三位数是314

这个不相等的三位数是124

这个不相等的三位数是324

这个不相等的三位数是134

这个不相等的三位数是234

一共有24个三位数

分析:

在处理  i ,j , k 不相等的时候,if中不能够写作连等的形式,要用and

连接语句。

训练四   寻找水仙花数

题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1**3+5**3+3**3。

思路:

类比上一个题目,我们判断的条件是,三位数number是否number==i**3+j**3+k**3。

回顾之前的取余(%),5%2得1,23%5=3。今天要用到地板除(//),5//2得2,23//5得4。

对于一个三位数,我们可以对10求余(%)来获得个位数,然后对10求地板除(//)再对10求余(%)可以得到十位数,对100地板除(//)可以得到百位数。

程序:

count=0

for number in range(100,1000):

i=number%10

j=number//10%10

k=number//100

if number==i**3+j**3+k**3:

count+=1

print("{}是水仙花数".format(number))

print('共有{}个三位数的水仙花数'.format(count))

结果:

153是水仙花数

370是水仙花数

371是水仙花数

407是水仙花数

共有4个三位数的水仙花数

训练五   你是回文数么

输入一个五位数,判断它是不是回文数。所谓回文数类似于12321,数字呈现镜面对称效果,个位与万位相同,十位与千位相同。总共有3次输入机会。

count=0

while True:

if count==3:

print('输入次数已用完')

break

count+=1

number = input("请输入一个五位数:")

number = int(number)

g = number % 10      #  个位数

s = number // 10 % 10    # 十位数

b = number // 100 % 10   #  百位数

q = number // 1000 % 10   #   千位数

w = number // 10000       #  万位数

if g==w and  s==q:

print('{}是回文数'.format(number))

else:

print("{}不是回文数".format(number))

结果:

请输入一个五位数:12345

12345不是回文数

请输入一个五位数:34543

34543是回文数

请输入一个五位数:46567

46567不是回文数

输入次数已用完

升级:

如果有客户输入的不是一个五位数,那么需要我们先判断是否为五位数,再判断是否为回文数。

程序:

number = input("请输入一个五位数:")

number = int(number)

while True:

if number>99999 or number<10000:

number=input('您输入的不是五位数,请重新输入一个五位数:')

number=int(number)

else:

g = number % 10      #  个位数

s = number // 10 % 10    # 十位数

b = number // 100 % 10   #  百位数

q = number // 1000 % 10   #   千位数

w = number // 10000       #  万位数

if g==w and  s==q:

print('{}是回文数'.format(number))

else:

print("{}不是回文数".format(number))

break

结果:

请输入一个五位数:123456

您输入的不是五位数,请重新输入一个五位数:12345

12345不是回文数

训练六   猜字游戏

题目:主持人首先输入一个正确数字,并给出正确数字的范围;玩家依次猜测数字,一共有五次的猜测机会;如果猜对了,则给出猜测正确的提示;如果猜错了,则给出新的数字范围;如果五次全部猜错,则给出猜测错误的提示;

程序:

true_number=int(input('请主持人输入数字:'))

low_number=int(input('请主持人输入范围下限:'))

up_number=int(input('请主持人输入范围上限:'))

count=1

while count<=5:

guss_number=int(input('数字的范围是{}-{},现在是第{}次猜测:'.format(low_number,up_number,count)))

if guss_number==true_number:

print("恭喜你猜对了")

break

elif low_number

low_number=guss_number

elif true_number

up_number=guss_number

count+=1

if count>5:

print('很遗憾,您五次都没有猜对。正确的数字是{}'.format(true_number))

结果:

请主持人输入数字:150

请主持人输入范围下限:100

请主持人输入范围上限:200

数字的范围是100-200,现在是第1次猜测:145

数字的范围是145-200,现在是第2次猜测:155

数字的范围是145-155,现在是第3次猜测:147

数字的范围是147-155,现在是第4次猜测:152

数字的范围是147-152,现在是第5次猜测:150

恭喜你猜对了

练习七  输出九九乘法表

思路:

首先明确九九乘法表的循环范围应该是1-9。当循环的范围是1时,做乘法的数字应该是1-9;当乘法的数字是2时,做乘法的范围应该是2-9;当循环的数字是3时,做乘法的范围是3-9。

另外,我们还需要改变print()函数默认自动换行,把print()函数的end参数改为\t。另外每一层循环每循环一次,应该用\n进行交换。

程序:

for i in range(1,10):

for j in range(i,10):

print('{}*{}={}'.format(i,j,i*j),end="\t")

print('\n')

结果:

1*1=1   1*2=2   1*3=3   1*4=4   1*5=5   1*6=6   1*7=7   1*8=8   1*9=9

2*2=4   2*3=6   2*4=8   2*5=10  2*6=12  2*7=14  2*8=16  2*9=18

3*3=9   3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27

4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36

5*5=25  5*6=30  5*7=35  5*8=40  5*9=45

6*6=36  6*7=42  6*8=48  6*9=54

7*7=49  7*8=56  7*9=63

8*8=64  8*9=72

9*9=81