Py一阶段习题汇总

目录

题一:评分系统

题二:春游

题目三:字符串修剪与排序

题目四:进制转换

题目五:田忌赛马


题一:评分系统

s=input()
answer="DCBAD"#注意这就是标答 不是自定义标准答案
count=0
for i in range(5):
    if s[i]==answer[i]:#字符串一一比较
        count+=30
print(count)

题二:春游

实例解释:

第一行:输入的分别是 3个同学,报数了3次

第二行是:报数从0开始 如果从[0,n-1]都报数了就输出 同学的个数(也就是3)

那如果在示例2里,统计没有报数的个数。也就是遍历看[0,n-1]哪些没有被报数则计数器+1

n,m=map(int,input().split())
l=list(map(int,input().split()))
set1=set(l) #用集合去重 把调皮孩子多报的数剔除出去
l1=[]
if len(set1)==n:
    print(n)

else:
    for i in range(n):
        if i not in set1:
            l1.append(i)
    print(' '.join(map(str,l1)))#规定输出格式

题目三:字符串修剪与排序

怎么去掉最后一个字符:

用字符串切片string[ i ][:-1]

按字符长度进行排序: l.sort(key=len)

sort排序总结

 代码:

N=int(input())
l=input().split()#字符串 后面用字符串切片
for i in range(N):
    l[i]=l[i][:-1]#字符串切片,删除最后一个字母的字符串
l.sort(key=lambda x:len(x))
print(' '.join(l))
N = int(input())
strs = input().split()
# 排序,key取len即可
strs.sort(key=len)
# 输出,通过切片的方式去掉最后一个字符
for i in strs:
    print(i[:-1], end=' ')

 题目四:进制转换

示例解释:
第一行是要进制转的数字,也就是把123进行进制转换

第二行是R=25,也就是进行25进制的转换

那么思路就是将123%25 存储,直至123//25==0时结束循环 最后逆序输出

需要注意的是存储格式转化为字符存 大于等于10的用A-Z进行存储

N=int(input())
R=int(input())
#N用R进制实现转换
digit=[]
if N==0:
    print(0)
else:
    while N:
        if (N%R)<10:
            digit.append(str(N%R))
        else:
            digit.append(chr(N%R-10+ord('A')))
        N=N//R
    # 余数是倒序排列的,需要反转
    print(''.join(reversed(digit)))

题目五:田忌赛马

田忌赛马贪心版题解

解题思路:
用自己的中等马KO田忌的下等马

用自己的上等马KO田忌的中等马

用自己的下等马KO田忌的上等马

注意每次我们的马参赛完要remove移除掉

N = int(input())
u = list(map(int, input().split()))
v = list(map(int, input().split()))

win = 0
# 马升序排序
u.sort()
v.sort()
# 遍历田忌的马
for i in v:
    # 在我们的马中找出能胜过它的马
    for j in u:
        if j > i:
            win += 1
            # 这匹马使用过后,就移除
            u.remove(j)
            break
print(win)

防止时间复杂度过高,单层循环: 

田忌的马每次比较都是向后移动 而我们会轮到下等马因此是轮回还是需要循环。

#单层循环实现
n=int(input())
u=list(map(int,input().split()))  #我的马匹速度
v=list(map(int,input().split())) #田忌的马匹速度
u.sort()
v.sort()

a=0 #表示田忌的参赛马匹索引
win=0
for i in u:   #遍历我的马匹
    if i>v[a]:  #当我的马可以赢过田忌的马
        win+=1
        a+=1  #田忌的参赛马匹索引后移 
print(win)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值