1. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
for i in range(1,5): ##重点是i、j、K范围相同,值不同
for j in range(1,5):
for k in range(1,5):
if i!=j and j!=k and i!=k:
res=i*100+j*10+k
print(res,end="\t"
2. for循环嵌套:打印9*9乘法表
for i in range(1,10): ##范围1-9
for j in range(1,i+1):
s=i*j
print("%s*%s=%s" %(i,j,s),end="\t") ##打印乘法形式
print()
1
3. 输入两个数,求这两个数的最大公约数和最小公倍数;
a=int(input("请输入整数:"))
b=int(input("请输入整数:"))
Min=min(a,b) ##min()内置方法求最小值
for i in range(Min,0,-1): ##依次遍历,求最大公约数
if a%i==0 and b%i==0 :
MAX_res=i
break
MIN_res=(a*b)//MAX_res ##计算最小公倍数
print("%s和%s的最大公约数是%s,最小公倍数是%s" %(a,b,MAX_res,MIN_res))
4. 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
def main(num): ##定义函数,检查是否是完全平方数
for x in range(1000):
if x ** 2 == num:
return True
for i in range(1000):
n1 = i + 100 ##题目要求+100和+168后依然是完全平方数
n2 = i + 168
if main(n1) and main(n2): ##两者均满足要求
print(i)
11.你现在是棒球比赛记录员:
给定一个字符串列表,每个字符串可以是以下四种类型之一: l = [ ]
1.整数(一轮的得分):直接表示您在本轮中获得的积分数。
2. “+”(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。
3. “D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。
4. “C”(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应该被移除。
每一轮的操作都是永久性的,可能会对前一轮和后一轮产生影响。
你需要返回你在所有回合中得分的总和
list=[ ] ##注意:此代码只能实现单个字符输入!!!
while 1:
info=input('please input an element:')
if info=="C": ##栈的数据结构
list.pop(-1)
elif info=="D":
n=2*int(list[-1]) ##前一有效回合得分的两倍
list.append(n)
elif info=="+":
n=int(list[-1])+int(list[-2]) ##前两有效回合得分的总和
list.append(n)
elif info=="Q":
print('the sum is ',sum) ##打印得分并退出
break
else:
list.append(info)
print(list) ##查看所有回合的有效得分列表
sum = 0
for item in list: ##求总分
item=int(item)
sum+=item
print('the sum is ',sum) ##每个回合都会输出得分,便于调试