自学内容网 自学内容网

python-金币/打分/小理学数列3

一:金币
题目描述

国王将金币作为工资,发放给忠诚的骑士。
第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……
这种工资发放模式会一直这样延续下去:当连续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的最终结果。


运行效果展示:

da158800a2414f0a9c296a51f2d3eb58.jpg

54e20b7cec164d3a96d917dc2751404d.jpg 

 

 

 

 

二:打分
题目描述
小赛是个热爱生活的孩子。最近他在学校组织了校园歌手大赛,并且让全校师生为歌手评分(分数的范围为 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位有效数字。


运行效果展示:

7e756b9effc3443c87386e38ec0ce181.jpg

5f8302ddebea4f829b87b947986acb11.jpg 

 

 

 

 

三:小理学数列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位有效数字。


运行效果展示:

b565a14aa2434d34ac9483e149edf3ea.jpg

57e28921685042f2a6d180f166db9965.jpg 

               (声明:以上内容均为原创) 

 

 


原文地址:https://blog.csdn.net/2401_83954530/article/details/142598581

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!