目录
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
的因数为1
,2
,3
,因此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)
总体来说是非常简单的,就是一些格式上的问题要注意,难度比省赛第一道填空题要简单。