PYTHON基础编程题

一、map函数处理输入流

  • 用法
    将字符串转换为整型
  • 具体用法
  1. 输入流,split()方法将空格作为分隔标志,将输入的数据存储起来
    input("请输入数字,中间以空格分隔:").split()
    eg."1 2 3" ==>["1","2","3"]
  2. 将输入数据处理
    输入的为字符串,需要改成整型,但map返回的是迭代器
    map(int,input().split())
    eg."1 2 3" ==>[1,2,3]
  3. 将迭代器转换成一个整数列表,简化类型转换的过程
    list(map(int,input().split()))
    eg."1 2 3" ==>[1,2,3]

二、百分比表示

  1. 输入2个数字,计算除法结果,最终的数字百分数表示且保留小数点后三位
    c,d = list(map(int,input().split()))
    e = d/c
    print("{:.3%}".format(e))

三、除法计算

  1. 输入描述:
    输入一行两个整数
    a,b(1≦a,b≦10^4 ),分别表示被除数和除数。
    输出描述:,
    输出两个整数,分别表示a除以b的商(取整,//)和余数(取余,%),中间用空格隔开。
  2. 解法思路:
    step1:输入数据
    step2:输出结果
    m,n = list(map(int,input().split()))
    print('{} {}'.format(m//n,m%n))
  3. 其他操作
  • 在字符串中插入整数
    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))

四、数据处理

  1. 向下取整(向下取整到最近的整数)
    math.floor(num)
  2. 向上取整(向上取整到最近的整数)
    math.ceil(num)
  3. 四舍五入(四舍五入到整数)
    round(num)
  4. 截断(只保留整数,负数时会比向下的大,更接近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)

posted @ 2025-06-19 17:05  Thea_learner  阅读(92)  评论(0)    收藏  举报