Python Tip挑战

文章目录

  • 前言
  • 一、Python Tip是什么?
  • 二、使用步骤
    • 1.登录网址进行注册
    • 2.开始刷题进程中ing
  • 总结


前言

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

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

一、Python Tip是什么?

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

二、使用步骤

1.登录注册

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

Python Tip挑战_第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的常见基础算法题,可以巩固自己的编程基础,进一步向更高的层次出发

切记好高骛远,眼高手低

你可能感兴趣的:(Python之算法,算法,python,数据结构)