蓝桥楼赛—33期—Python组

目录

1,交换3个变量的值

2,平方根格式化

3,统计字符

4,平方根和立方根

5,去除重复元素

6,完数

7,求特殊数列之和

8,右边第k个数字是多少

9,矩阵操作

10,100以内质数之和


1,交换3个变量的值,这种题目就是闹着玩的,像C语言还需要定义一个变量来暂存操作数,python就直接a,b,c = c,a,b就可以了。

a,b,c = map(int,input().split())
a,b,c = c,a,b
print(a,b,c,end=' ')

2,解答:这道题就是考察输出格式的问题,首先要右对齐(空位用+填充),然后是保留小数点后3未输出。右对齐用rjust函数,保留小数点用‘{:.3f}’.format(值)即可。

我们将编写一个程序,根据用户输入的一个整数 a ,计算 a 的平方根,保留小数点后 3 位打印输出。

输出结果采用宽度 30 个字符、右对齐输出、其余字符采用(+)填充。如果结果超过 30 个字符,则以结果宽度为准。

目标

示例一:

输入:10

输出:+++++++++++++++++++++++++3.162

示例二:

输入:200

输出:++++++++++++++++++++++++14.142

 

import math
a = int(input())
print('{:.3f}'.format(math.sqrt(a)).rjust(30,'+'))

3,看ASCII值,即可解答。

统计字符

介绍

输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。

目标

示例一:

输入:abc123EFG *&45?

输出:letter=6,space=1,digit=5,other=3

示例二:

输入:asd5 asd asds51d#^sfd

输出:letter=14,space=2,digit=3,other=2

 

a = input()
letter,space,digit,other = 0,0,0,0
for i in a:
    if 'a'<=i<='z' or 'A'<=i<='Z':
        letter += 1
    elif i==' ':
        space += 1
    elif '0'<=i<='9':
        digit += 1
    else:
        other += 1
print('letter={},space={},digit={},other={}'.format(letter,space,digit,other))

4,平方根表示n**(1/2)。立方根表示n**(1/3)

平方根和立方根

介绍

实现一个程序,输入一个整数,若为奇数则输出其平方根,否则输出其立方根,结果保留两位小数。

目标

示例一:

输入:9

输出:3.00

示例二:

输入:8

输出:2.00

n = int(input())
if n%2==0:
    print('{:.2f}'.format(n**(1/3)))
else:
    print('{:.2f}'.format(n**0.5))

5,先将输入字符串转换为集合(set),集合会自动去重,然后转换为列表(list)(也可直接转换为字符串str),顺序输出即可

去除重复元素

介绍

输入一个字符串,对其中重复的元素进行去重,然后按照升序输出处理后的字符串。

目标

示例一:

输入:asdknsdfjdsf

输出:adfjkns

示例二:

输入:asdyadsysdy

输出:adsy

 

a = list(set(input()))
a.sort()
for i in a:
    print(i,end='')

6,这里的ceil上入整数函数,可以减小时间复杂度,比从2遍历到它本身减一的范围要小一半。

完数

介绍

如果一个整数等于它的因数(不包括该数本身)之和,则称该数为完数。例如,6 的因数为 123,因此 6=1+2+3,因此 6 就是完数。

目标

找出 1000 以内的所有完数,以一个空格分隔,打印输出所有完数。

import math 
def check(n): 
    count = 1 
    for i in range(2,math.ceil(n**(1/2))): 
        if n%i==0: 
            count += i 
            count += n//i 
    return count

ans = [] 
for i in range(1,1001): 
    if check(i)==i: 
        ans.append(i)

for i in ans: 
    print(i,end=' ')

 7,递推式:a,b = b,a+b

 

 

a,b = 1,2
n = int(input())
sum = b/a
for i in range(n-1):
    a,b = b,a+b
    sum += b/a
print('{:.5f}'.format(sum))

8,可以跟我一样,依次整除10,比较简单,也可利用数组下标来求。

右边第k个数字是多少

介绍

定义一个函数 f(n, k),函数名为 f,有 2 个参数 n 和 k,功能是返回整数 n 从右边开始数的第 k 个数字,函数返回值是这个数字。

目标

将下面的代码写入文件,并完善函数内容。

def f(n, k): 
    for i in range(k): 
        num = n%10 
        n = n//10 
    return num 
if __name__ == "__main__": 
    print(f(123456789, 3))

9,python的自由性比较高,所以可以在二维数组中直接交换两行的元素

矩阵操作

介绍

输入一个 5 * 5 的矩阵 a,完成下列要求:

将第 2 行和第 5 行元素对调后,输出新的矩阵 a。

要求每位数字占 5 个位置,左对齐。

目标

输入:

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

输出:

 

ans = []
for i in range(5):
    ans.append(list(map(int,input().split())))

ans[1],ans[4] = ans[4],ans[1]
for i in ans:
    for j in i:
        print(str(j).ljust(5),end='')
    print()

10,在需要填写的区域内按照要求填写即可,这里的round(n**0.5)+1同样是为了减小时间复杂度的。

100 以内素数之和

介绍

质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。求 100 以内所有质数之和。

目标

在 Python 脚本文件中需要定义一个函数 prime(n),函数名为 prime,参数为 n,功能为判断一个数 n 是否为质数,是质数返回结果 True,否则返回结果 False

直接运行程序会打印输出 100 以内质数之和。

 

def prime(n):
    for i in range(2,round(n**0.5)+1):
        if n%i==0:
            return False
    else:
        return True

sum = 0
for i in range(2,101):
    if prime(i):
        sum += i
print(sum)

总体来说是非常简单的,就是一些格式上的问题要注意,难度比省赛第一道填空题要简单。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缱绻命运

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值