训练一 快速求解累加和
题目:求解累加和 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