前言
最近在刷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的常见基础算法题,可以巩固自己的编程基础,进一步向更高的层次出发
切记好高骛远,眼高手低