educoder:实验六 多重循环
Python,educoder
第1关:显示输入数字之内的完全数
任务描述
本关任务:显示输入数字之内的完全数。 一个数整等于其所有因子之和(不含这个数本身),则称这个数为完全数。例如 6=1+2+3,所以 6 是完全数。
编程要求
根据提示,在右侧编辑器补充代码,显示输入数字之内的完全数。
测试用例 用户输入1000 输出 6 28 496
把语言化为行动,比把行动化为语言困难得多。 开始你的任务吧,祝你成功!
代码:
x=eval(input())
for i in range (1,x):
y = 0
for j in range(1, i):
if i%j == 0:
y += j;
if y == i:
print(i)
第2关:输出阶乘等式
任务描述
本关任务:输入x 输出从1!到x!等式 例如输入10 输出
开始你的任务吧,祝你成功!
代码:
x=eval(input())
for i in range(1,x+1):
y ,k= 1,""
for j in range(1,i+1):
y *=j
if j != 1:
k = k+'*'+str(j)
else:
k = k+str(j)
print("{}!={}={}".format(i,k,y))
第3关:输出符合要求的数字
任务描述
本关任务: 输入一个数字x(1-9之间),输出所有每个数位上的数字不超过x,各个数位的数字互不相同的三位数,每行显示10个数 注意:每个数后面有空格 提示:可以在print中设置end=" ",在输出表达式后显示空格 例如,输入5,输出如下图
开始你的任务吧,祝你成功!
代码:
x=eval(input())
list = [0,1,2,3,4,5,6,7,8,9]
a,count= list[0:(x+1)],0
for i in range(1,x+1):
for j in range(0,x+1):
if a[j] != a[i]:
s = str(a[i])+str(a[j])
else:
continue
for k in range(0,x+1):
if a[k] != a[i] and a[k] != a[j]:
m ,count= s+str(a[k])+' ',count+1
print(m,end='' if count%10 != 0 else "\n" )
else:
continue
第4关:鸡兔同笼问题
任务描述
本关任务:鸡和兔子关在一个笼子里,输入头的个数和脚的个数,求笼内关了多少只兔子和多少只鸡? 如果没有符合条件的数目,显示无解
测试说明
平台会对你编写的代码进行测试:
测试输入:36 100 预期输出: 鸡22只兔子14只
测试输入:20 40 预期输出: 无解
如果不想在世界上虚度一生,那就要学习一辈子。 开始你的任务吧,祝你成功!
代码:
a=eval(input())
b=eval(input())
if 2*a>=b:
print("无解")
else:
for x in range(1, a):
y = a - x
if 2 * x + 4 * y == b:
print("鸡" + str(x) + "只兔子" + str(y) + "只")
第5关:剩余最短木料
任务描述
本关任务:求剩余最短木料的切割方案。 输入一根材料的长度,需要截成长度为19米和23米的短料。求两种短料各截多少根时,剩余的材料最少?(每种短料必须大于等于一根)
测试说明
平台会对你编写的代码进行测试:
测试输入:100 预期输出: 19米4段,23米1段,剩余1米
测试输入:133 预期输出: 19米2段,23米4段,剩余3米 注意:木料的长度需大于等于42
开始你的任务吧,祝你成功!
代码:
s=eval(input())
if s>=42:
x1,x2= (s-42)//23,(s-42)%23
if x2+x1*4<19:
n1 = 1,
n2 = x1+1
zx = x2
elif x2>=19:
n1 = 2
n2 = x1+1
zx = x2-19
else:
for i in range(1,x1+1):
if x2+4*i>=19:
n1 = i+2
n2 = x1-i+1
zx = (x2+4*i)%19
break
else:
print("木材不符合")
print("19米{}段,23米{}段,剩余{}米".format(n1,n2,zx))
第6关:打印图形
任务描述
本关任务:编写一个能计打印图形的小程序。 输入大写字母,打印一个相关图形 例如,输入E 打印图形如下
相关知识
为了完成本关任务,你需要掌握:1.ord和chr函数,2.如何控制换行。
chr和ord函数
ord函数可以将字符转化为你所需要的码值,chr函数可以码值转化为你所需要的字符。通过这样的转化 你可以方便的完成字符与码值之间的转换操作 ord('A')为65 chr(65)为‘A’ chr(ord('A')+1)对应字符'B'
控制换行
python中的print语句默认情况下会换行显示 print(打印的内容,end="")则不换行显示
测试说明
平台会对你编写的代码进行测试:
测试输入:C; 预期输出: A ABA ABCBA
测试输入:G; 预期输出:
开始你的任务吧,祝你成功!
代码:
b=input("")
b=ord(b)-64
for i in range(int(b)):
for j in range(1,b-i):
print(" ",end="")
for k in range(i):
print(chr(65+k),end="")
for l in range(i+1):
print(chr(65+i-l),end="")
print()
第7关:逻辑推断
任务描述
本关任务: 一位法官在审理一起盗窃案时,对涉及到的四名嫌疑犯A、B、C、D进行了审问。 四人分别供述如下: A:“罪犯在B、C、D三人之中。” B:“我没有作案,是C偷的。” C:“在A和D中间有一个是罪犯。” D:“B说的是事实” 经过充分的调查,证实四人中只有两人说了真话,并且罪犯只有一个。 请输出真正罪犯的编码 例如,如果A是罪犯,输出A是罪犯
提示:可以用变量a为0表示a不是罪犯,a为1表示a是罪犯 然后对每个人的两种可能循环
开始你的任务吧,祝你成功!
代码:
for a in (0,1):
for b in (0,1):
for c in (0,1):
for d in (0,1):
x=(b==1 or c==1 or d==1)
y=(b==0 and c==1)
z=(a==1 or d==1)
if((x and z and not y)or(y and not x and not z)) and a+b+c+d==1:
if a==1:
print("A是罪犯")
elif b==1:
print("B是罪犯")
elif c==1:
print("C是罪犯")
else:
print("D是罪犯")
第8关:多人唐诗作品标题
任务描述
本关任务: 在唐诗.txt文件,如下图所示。每首诗的标题为序号诗人冒号诗名。
编写程序,输入诗人姓名,显示该诗人所写的诗的标题,以及作品数,如图所示。
如果该诗人没有作品,显示无作品。 要求能够循环输入诗人姓名进行查找,直到输入空串为止。
提示: 查询完一位诗人后需要通过f1.seek(0)将文件指针移到文件的开始处
勇于求知的人决不至于空闲无事。
开始你的任务吧,祝你成功!
代码:
f1=open("sy6//唐诗.txt","r",encoding="utf-8")
while True:
x,count=input("诗人姓名"),0
f1.seek(0)
if x=="":
break
for line in f1.readlines():
line=line.strip('\n')
if(line.find(x)!=-1):
count=count+1
print(line)
if count!=0:
print("一共{}首".format(count))
else:
print("无作品")
f1.close()
更多推荐
所有评论(0)