蓝桥杯青少组STEMA测评(2021年1月)Python编程题解


代码:

· 

· 

s = input()print(s[-1])

解说:字符串是一种序列,里面的字符有两种编号方式,第一种:从左(0)到右(字符数量-1);第二种:从右(-1)到左(字符数量的相反数)。


代码:

· 

· 

· 

· 

· 

· 

s = input()c = input()if c in s:    print('Y')else:    print('N')

解说:字符串是一种序列,里面的每个字符是它的元素,可以用“in”关键字判定。


分析:如果要推导出它的数学计算公式,有点麻烦,不过这里是编程解决数学问题,没必要推导计算公式。只要按它的项的计算方法递推计算就行。
代码:

· 

· 

· 

· 

· 

· 

· 

N  = int(input())t = 1  #总数c = 1  #第一层for i in range(2,N+1):  #从第二层开始循环    c += i   #上一层数量加层数    t += c   #加入统计数print(t)

解说i>0的条件,当n是偶数,最后一个数是2;当n是奇数,最后一个数是1。


代码:

· 

· 

· 

· 

· 

n  = int(input())t = 0  #和for i in range(n,0,-2):  #倒序计算    t += 1/i  #加入和print("%.2f" % t)  #只使用round不能保证小数位数

解说:i>0,当n是偶数,最后是2;当n是奇数,最后是1.


补充:如果所有的数的个数都一样,就没有众数,如果有多个数的个数一样最多,那么它们都是众数。本题只输出最大的众数。代码:

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

nums  = list(map(int, input().split(',')))n = len(nums)#平均数print("%.2f" % (sum(nums)/n))  #%后的括号只有单个数或变量才能省略#中位数nums.sort()m = n//2if n % 2 == 0:    print("%.2f" % ((nums[m-1]+nums[m])/2))else:    print(nums[m])#众数z=nums[0]  #众数假设是第一个数precount=0 #上一个众数的计数,如果为0表示无众数count=1  #相同数计数,因为以按顺序排序,相同数都靠着for i in range(1,n):  #从第二个数开始检查    if nums[i-1] == nums[i]:  #如果等于前一个数        count += 1            #计数增1        if count >= precount: #如果计数大于等于(一定要有等于)前一个的计数            precount = count  #保存计数            z = nums[i]       #保存众数    else:        count=1  #计数复位if precount > 0:    print(z)else:    print("无众数")