PYTHON基础编程题
一、map函数处理输入流
- 用法
将字符串转换为整型 - 具体用法
- 输入流,split()方法将空格作为分隔标志,将输入的数据存储起来
input("请输入数字,中间以空格分隔:").split()
eg."1 2 3" ==>["1","2","3"] - 将输入数据处理
输入的为字符串,需要改成整型,但map返回的是迭代器
map(int,input().split())
eg."1 2 3" ==>[1,2,3] - 将迭代器转换成一个整数列表,简化类型转换的过程
list(map(int,input().split()))
eg."1 2 3" ==>[1,2,3]
二、百分比表示
- 输入2个数字,计算除法结果,最终的数字百分数表示且保留小数点后三位
c,d = list(map(int,input().split()))
e = d/c
print("{:.3%}".format(e))
三、除法计算
- 输入描述:
输入一行两个整数
a,b(1≦a,b≦10^4 ),分别表示被除数和除数。
输出描述:,
输出两个整数,分别表示a除以b的商(取整,//)和余数(取余,%),中间用空格隔开。 - 解法思路:
step1:输入数据
step2:输出结果
m,n = list(map(int,input().split()))
print('{} {}'.format(m//n,m%n)) - 其他操作
- 在字符串中插入整数
num = 123
message = f"The number is {num}"
print(message) # 输出:The number is 123 - 绝对值
abs(num) - 开根号(0.5表示开1/2的根号)
b = math.floor(pow(a,0.5))
四、数据处理
- 向下取整(向下取整到最近的整数)
math.floor(num) - 向上取整(向上取整到最近的整数)
math.ceil(num) - 四舍五入(四舍五入到整数)
round(num) - 截断(只保留整数,负数时会比向下的大,更接近0)
int(num)
五、循环体
1、循环读取输入内容
Q:多组测试用例,每行输入两个整数 a,b,用空格隔开。当且仅当
a=0且 b=0时,输入结束,该组数据不处理
*strip():移除字符串两端的空白字符(包括空格、制表符 \t、换行符 \n 等)。
*split():将字符串分割成一个列表
*map/list 进行列表的封装
点击查看代码
import sys
for line in sys.stdin:
a,b = map(int,line.strip().split())
if a==0 and b==0:
break
else:
print(int(a+b))
点击查看代码
import sys
input = sys.stdin.read
data = input().strip().split('\n')
#第一行表行数
T = int(data[0])
#接下来的遍历
for i in range(1,T+1):
line = data[i]
#分割字符串
a,b = map(int,line.split())
print(a+b)
六、
第一行输入两个整数 L,M,用空格隔开,表示马路的长度和地铁施工区域数,接下来 M行,每行输入两个整数 li,ri,用空格隔开,表示第 i个施工区域的起始点和终止点的坐标。输出一个整数,表示移除所有施工区域内(包括端点)树后,剩余的树的总棵树数。
我的解法:
【思路:遍历i个施工区域,将施工区域范围内的树的值都之位-1,最后统计总长度-(-1数的个数),就是余下来的树的个数。考虑到最小为0值,不存在-1,所以将置于-1不影响正确性】
点击查看代码
from itertools import count
L,M = list(map(int,input().split()))
list1 = list(range(L+1))
for i in range(M):
li,ri = list(map(int,input().split()))
while li <= ri:
list1[li] = -1
li += 1
n = len(list1) - list1.count(-1)
print(n)
优化后的解法:
【思路:使用集合或布尔数组提升效率(当 L 很大时)】
点击查看代码
L, M = map(int, input().split())
marked = [False] * (L + 1) # 初始都未标记
for _ in range(M):
li, ri = map(int, input().split())
for i in range(li, ri + 1):
marked[i] = True
# 统计未被标记的元素个数
print(marked.count(False))
七、
1、将二维数组打印出来,要求按行输出,中间空格分隔
点击查看代码
for recatange in new_recatange:
print(' '.join(map(str,recatange)))
2、打印,只需要打印下三角的数值,上三角的0不打印。
点击查看代码
for i in range(n):
print(' '.join(map(str,yh[i][:i+1])))
八、输入的字符串处理
.strip()和list()进行处理可以将字符分割成单个的数组项
1、arr = list(input().strip())
【输入app,存储的是['a','p','p']】
2、arr = list(input().split())
【输入app,存储的是['app']】
九、创建24个英文字母的列表
import string
asct_yw = list(string.ascii_lowercase)

浙公网安备 33010602011771号