参考链接:http://www.zhangdongshengtech.com/article-detials/36
1、求三位数组合
已知有一个list,里面有4个数字,分别是3,6,2,7 ,这四个数字能组成多少个互不相同且无重复数字的三位数?比如362算一个,326算一个,请逐个输出他们。
#解法1
lis = [3,6,2,7]
res = []
count = 0
for i in lis:
for j in lis:
if j == i:
continue
for k in lis:
if (k == j) or (k == i):
continue
temp = i*100+j*10+k
res.append(temp)
count += 1
print("总共有%d个组合,如下:"%count)
print(res)
## 总结:continue也可用于for循环中
# 解法2
lis = [3,6,2,7]
res = []
for i in lis:
for j in lis:
for k in lis:
if (i != j) and (i != k) and (j != k):
temp = "{bai}{shi}{ge}".format(bai = i,shi = j, ge = k)
res.append(temp)
print("总共有%d个组合"%len(res))
print(res)
# 总结:先取出所有情况,再排除不符合要求的情况
2、完全平方数
打印10000以内的完全平方数
i = 1
res = []
while 1:
j = i*i
if j<= 10000:
res.append(j)
i += 1
else:
break
print("总计%d个完全平方数"%len(res))
print(res)
3、打印乘法口诀表
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d = %d"%(j,i,j*i), end = ' ')
print(' ')
4、输出水仙花数
输出所有的水仙花数,所谓水仙花数是指一个三位数,各个位上的数的立方相加在一起等于这个三位数,比如153,1的3次方 + 5的三次方 + 3的三次方 等于153。
# 解法1
target = []
for i in range(1,10):
for j in range (10):
for k in range(10):
a = i**3 + j**3 + k**3
b = i*100 + j*10 + k
if a == b:
target.append(a)
print("水仙花数有%d个,如下:"%len(target))
print(target)
上面代码需要注意的是,任意一个三位数,最高位不能为0。
# 解法2
for n in range(100,1000):
i = n // 100 #获取百位数
j = (n // 10) % 10 #获取十位数
k = n % 10 #获取个位数
if n == i**3 + j ** 3 + k ** 3:
print(n)
关于上面代码,取一个三位数的各个位上的值时:
第1点,确定小数点向左移动几位;
第2点,确定取商还是取余。
5、输出学生分数的考评等级
允许用户从终端输入一个分数,程序输出这个分数所属的考评等级,90到100分是A,60到89是B,60分以下是C。
score = int(input("请输入分数:"))
grade = 'null'
if score >= 90:
grade = 'A'
elif score >= 60:
grade = 'B'
else:
grade = 'C'
print("分数%d对应的等级为%s"%(score,grade ))
这一题最简单,考察if基本用法。