一:金币
题目描述
国王将金币作为工资,发放给忠诚的骑士。
第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……
这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。
你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。
输入
一个整数(范围1到10000),表示天数。
输出
骑士获得的金币数。
样例输入1
6
样例输出1
14
来源/分类(难度系数:一星)
循环结构
完整代码展示:
a=int(input())
sum_1=1
sum_2=1
sum_3=1
while sum_2<a:
sum_2+=1
for i in range(sum_2):
if sum_3>=a:
break
else:
sum_1+=sum_2
sum_3+=1
print(sum_1)
a=int(input())
sum_1=1
sum_2=1
sum_3=1
while sum_2<a:
sum_2+=1
for i in range(sum_2):
if sum_3>=a:
break
else:
sum_1+=sum_2
sum_3+=1
print(sum_1)
代码解释:
“a=int(input()) ”,导入用户给定的天数a。
“sum_1=1
sum_2=1
sum_3=1
while sum_2<a:
sum_2+=1
for i in range(sum_2):
if sum_3>=a:
break
else:
sum_1+=sum_2
sum_3+=1 ”,令sum_1为骑士获得的总金币数;sum_2为子循环密码子,sum_3为母循环密码子,初始值均为1,当sum_2<a时:sum_2+1,循环sum_2次:判断sum_3是否大于等于a,如果是,则终止for循环,否则sum_1+sum_2,sum3+1。每循环一次,sum_2+1,直至sum_2==a,跳出整个while循环。
“print(sum_1) ”,打印sum_1的最终结果。
运行效果展示:
二:打分
题目描述
小赛是个热爱生活的孩子。最近他在学校组织了校园歌手大赛,并且让全校师生为歌手评分(分数的范围为 1−100 分),但由于投票系统太过于落后,小赛在最后的计票中发现了如下几种票:
分数大于 100
分数小于 1
一个最高分
一个最低分
最终的计票要将上述几种票去除后算出平均值,请你求出最后的分数。
输入
一行一个正整数 N ,表示票的总数。
一行 N 个整数,表示每张票上的分数,中间用空格分隔。
输出
输出最后的分数(保留两位小数)。
样例输入1
8
131 -12 60 20 2 -999 100000 100
样例输出1
40.00
提示
4≤N≤105
来源/分类(难度系数:一星)
每日一题 竞赛
完整代码展示:
a=int(input())
b=list(map(int,input().split()))
c=[]
for i in range(0,len(b)):
if 1<=b[i]<=100:
c.append(b[i])
c.sort()
c.remove(c[-1])
c.remove(c[0])
print("{:.2f}".format(sum(c)/len(c)))
a=int(input())
b=list(map(int,input().split()))
c=[]
for i in range(0,len(b)):
if 1<=b[i]<=100:
c.append(b[i])
c.sort()
c.remove(c[-1])
c.remove(c[0])
print("{:.2f}".format(sum(c)/len(c)))
代码解释:
“a=int(input())
b=list(map(int,input().split())) ”,导入用户输入的总票输a。接着导入用户输入的每张票的打分情况,并将其储存在列表b中。
“c=[]
for i in range(0,len(b)):
if 1<=b[i]<=100:
c.append(b[i]) ”,建立一个空列表c,用于储存符合条件的打分。依次遍历b中元素,判断b[i]是否满足1<=b[i]<=100,如果是:则将b[i]添加进c中。
“c.sort()
c.remove(c[-1])
c.remove(c[0]) ”,对c中元素进行升序排序,接着删除c中最大和最小元素(c[-1]和·c[0])。
“print("{:.2f}".format(sum(c)/len(c))) ”,打印c中元素的平均值并保留2位有效数字。
运行效果展示:
三:小理学数列3
题目描述
小理准备继续进阶,计算更难的数列。
输入一个整数 n,计算 1+1/(1−3)+1/(1−3+5)+...+1/(1−3+5−...) 的值。
输入格式
输入一行,包含一个整数 n。
输出格式
输出一个浮点数,保留 3 位小数。
样例输入输出
样例输入
1
样例输出
1.000
数据范围
对于 100% 的数据,保证 1≤n≤100 。
来源/分类(难度系数:一星)
循环结构 模拟
完整代码展示:
a=int(input())
b=1
sum=1
while b<a:
c=0
for i in range(1,b+2):
if i%2==0:
c+=1-2*i
else:
c+=2*i-1
sum+=1/c
b+=1
print("{:.3f}".format(sum))
a=int(input())
b=1
sum=1
while b<a:
c=0
for i in range(1,b+2):
if i%2==0:
c+=1-2*i
else:
c+=2*i-1
sum+=1/c
b+=1
print("{:.3f}".format(sum))
代码解释:
“a=int(input()) ”,导入用户输入的数列列数a。
“b=1
sum=1
while b<a:
c=0
for i in range(1,b+2):
if i%2==0:
c+=1-2*i
else:
c+=2*i-1
sum+=1/c
b+=1 ”,令sum为数列的值,b为循环密码子,初始值均为1,当b<a时:c=0,遍历1~b+1的元素i,判断i能否被2整除,如果能:则c+=1-2*i,否则c+=2*i-1。sum+=1/c。每循环一次,b+1,直至b==a,跳出整个wihle循环。
“print("{:.3f}".format(sum)) ”,打印sum的最终结果并保留3位有效数字。
运行效果展示:
(声明:以上内容均为原创)