Python Tip挑战


前言

最近在刷python基础算法题,个人感觉 python Tip挑战 yyds,打卡纪念下~

刷题地址:http://www.pythontip.com/coding/code_oj

一、Python Tip是什么?

Python Tip 是基于Python新手学习刷题 的一个网站,该网站是为了帮助新手进阶而建立的。

二、使用步骤

1.登录注册

根据地址进入该网站进行登录,相关图示如下:

2.题库分析及代码如下:

代码如下:

#第1题:a + b
#题目描述:
#给你两个数a、b,请你计算它们的和,并输出
#参考代码,如嫌啰嗦,建议删除,一行搞定
def solve_it():
    '''
    pythontip oj不同于传统oj,代码里面直接使用变量,无需要提前声明,免去复杂的输入解析
    life is short, so i user python~
    you can use variables a , b
    '''
    num=a+b
    return num #your answer
print(solve_it())  # 答案需要输出


#第2题:列表排序
#题目描述:
#给你一个列表 L, 对L进行升序排序并输出排序后的列表。
#参考代码,如嫌啰嗦,建议删除,一行搞定
def solve_it():
    '''
    pythontip oj不同于传统oj,代码里面直接使用变量,无需要提前声明,免去复杂的输入解析
    life is short, so i user python~
    you can use variables L
    '''  
    return sorted(L) #your answer
print(solve_it())  # 答案需要输出


#第3题:字符串逆序
#题目描述:
#给你一个字符串 a, 请你输出逆序之后的a。
#参考代码,如嫌啰嗦,建议删除,一行搞定
def solve_it():
    '''
    pythontip oj不同于传统oj,代码里面直接使用变量,无需要提前声明,免去复杂的输入解析
    life is short, so i user python~
    '''

    return a[::-1] #your answer

print(solve_it())  # 答案需要输出


#第4题:输出字典key
# 题目描述:
# 给你一字典a,如a={1:1,2:2,3:3},输出字典a的key,以','连接,如‘1,2,3'。要求key按照字典序升序#排列(注意key可能是字符串)。
# 方法1.
print(','.join(list(map(str,a))))
# 方法2.
a=a.keys()
v=[i for i in a]
print(','.join(str(va) for va in sorted(v)))


#第5题:输出字符奇数位置的字符串
# 题目描述:
# 给你一个字符串 a, 输出a中奇数位置字符构成的字符串(位置编号从1开始)。
# 方法1:
l=len(a)
b=[]
for i in range(l):
    if i % 2 == 0:
       b.append(a[i])
print(''.join(b))
#方法2:
print(a[::2])


# 第6题:求解100以内的所有素数
# 题目描述:
# 输出100以内的所有素数,素数之间以一个空格区分(注意,最后一个数字之后不能有空格)。
for a in range(2,101):
    for b in range(2,a):
        if a%b==0:
            break
    else:
        print(a,end=' ')


# 第7题:求矩形面积
# 题目描述:
# 已知矩形长a,宽b,输出其面积和周长,面积和周长以一个空格隔开。
print(str(a * b) + ' ' + str(2 * (a + b)))


# 第8题:求中位数
# 题目描述:
# 给你一个整数列表L, 输出L的中位数(若结果为小数,则保留一位小数)。
# 方法1:
if len(L) % 2 == 0:  #偶数
 print((sorted(L)[len(L) // 2] + sorted(L)[len(L) // 2 - 1]) / 2)
else:   #奇数
 print(round(sorted(L)[len(L) // 2],1))
# 方法2:
L.sort();n=len(L)//2;print(L[n] if len(L)%2==1 else (L[n-1]+L[n])/2)


# 第9题:最大公约数
# 题目描述:
# 给你两个正整数a和b, 输出它们的最大公约数。
# 方法1:更相减损法
def f(a,b):
    if max(a,b)-min(a,b) == min(a,b):
        return min(a,b)
    else:
        return f(max(a,b)-min(a,b),min(a,b))
print(f(a,b))
#方法2:辗转相除——递归
def gcd(m, n):
  if(n == 0):
    return m
  else:
    return gcd(n,m%n)
print(gcd(a,b))
#方法3:常规方法
def f(q,w):
    if w==0:
        return q
    else:
        return f(w,q%w)
print(f(a,b))


# 第10题:最小公倍数
# 题目描述:
# 给你两个正整数a和b, 输出它们的最小公倍数。
# 方法1:
def gcd(m, n):
  if(n == 0):
    return m
  else:
    return gcd(n,m%n)

print(a//gcd(a,b)*b)
# 方法2:
x=max(a,b)
c=a*b
list=[]
for i in range(x,c+1):
 if i/a==int(i/a) and i/b==int(i/b):
    list.append(i)
print(min(list))
#从a,b中的最大值到a*b中,选出能同时整除a,b的最小的那个


总结

经过熟悉python的常见基础算法题,可以巩固自己的编程基础,进一步向更高的层次出发

切记好高骛远,眼高手低

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值