前言:
Python 100个小测试,用于熟悉和巩固Python基础
例题地址:https://www.runoob.com/python/python-100-examples.html
"""
题目26:利用递归方法求5!。
"""
分析:25题是累乘,26是简单化了
def mul_sum(n): # n第几个数
tmp = 1
for x in range(1,n+1):
tmp *= x
return tmp
mul_sum(5)
"""
题目27:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
"""
分析: 相反顺序,加个负号即可解决;
def desc_string(s):
if(len(s) > 0):
print(s[-1])
desc_string(s[0:-1])
desc_string("abcde")
"""
题目28:有5个人坐在一起.
问第五个人多少岁?他说比第4个人大2岁。
问第4个人岁数,他说比第3个人大2岁。
问第3个人,又说比第2人大2岁。
问第2个人,说比第1个人大2岁。
最后问第一个人,他说是10岁。请问第五个人多大?
"""
分析:
递归思想 每前1个人+2岁即可;
age = 10
for i in range(1,5):
if i <=4:
age += 2
else:
age
print(age)
"""
题目29:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
"""
分析: 本质考察如何拆解字符串
# 最简单写法
tmp = input("输入一个数字")
list(tmp)[::-1] # list可拆解字符串
str(tmp)[::-1] # str 不拆解
# 普通写法
n = int(input("请输入一个数:\n"))
a = n%10000 # 万位
b = (n/1000)%10 # 千位
c = (n/100)%10 # 百位
d = (n/10)%10 # 十位
e = (n/1)%10 # 个位
if a != 0:
print ("5 位数:",e,d,c,b,a)
elif b != 0:
print ("4 位数:",e,d,c,b)
elif c != 0:
print ("3 位数:",e,d,c)
elif d != 0:
print ("2 位数:",e,d)
else:
print ("1 位数:",e)
"""
题目30:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
"""
分析: 同29题
def is_hw(tmp):
tmp = list(tmp)
if tmp[0] == tmp[4] and tmp[1] == tmp[3]:
print("是")
else :
print("不是")
is_hw("12321")
"""
题目31:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
"""
分析:
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
特殊情况即首字母为T 和S的情况,简单判断即可;
fir = input("第1个字母:")
if fir == 'M':
print("周一")
elif fir == 'W':
print("周三")
elif fir == 'F':
print("周五")
elif fir == 'T':
s = input("第2个字母:")
if s == 'u':
print("周二")
elif s == 'h':
print("周四")
elif fir == 'S':
s = input("第2个字母:")
if s == 'a':
print("周六")
elif s == 'u':
print("周日")
else :
print("输入错误")
"""
题目32:按相反的顺序输出列表的值。
"""
分析: 同样的考察字符串处理;
a = ["x","y","z"]
b = a[::-1]
"""
题目33:按逗号分隔列表。
"""
L = [1,2,3,4,5]
a = ','.join(str(i) for i in L )
print (a)
L = repr(L)[1:-1]
print(L)
"""
题目34:使用函数,输出三次 RUNOOB 字符串。
"""
分析: 考察def的写法:
def reo_3():
for i in range(1,4):
print("RUNOOB")
reo_3()
"""
题目35:文本颜色设置。
"""
分析: 这个不会了...啊,好吧.. 系统设定颜色
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
print (bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC)
"""
题目36:求100之内的素数。
"""
分析: 第12题做过如何判断素数,一模一样;
num = []
for a in range(1,100):
for b in range(2,a-1):
if a%b == 0 :
break
else: # 这里位置不能写错,不然容易陷入无限循环;
num.append(a)
print(num)
"""
题目37:对10个数进行排序。
"""
分析: 和第五题一样
依次输入10个数字;
def px_3(a,b,c....):
num = [a,b,c]
num.sort()
return num
同样方法:
num=[]
for i in range(1,11):
a=int(input('int%d: '%(i)))
num.append(a)
num.sort()
"""
题目38:求一个3*3矩阵主对角线元素之和。
"""
分析:
1.主对角线元素之和 ---> 知道定义很重要
在一个n阶方阵(或是n阶行列式)中,从左上角到右下角这一斜线方向上的n个元素所在的对角线,叫做n阶方阵(或行列式)的主对角线。
2.设置一个双重for循环控制输入二维数组,再将n[i][j]累加后输出.
# 未知矩阵
if __name__ == '__main__':
a = []
sum = 0.0
for i in range(3):
a.append([])
for j in range(3):
a[i].append(float(input("input num:\n")))
for i in range(3):
sum += a[i][i]
print (sum)
# 已知矩阵
m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
sum = 0
for i in range(0, 3):
sum += m[i][i]
print(sum)
"""
题目39:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
"""
分析: 题目其实说的不太明确,所以要挖掘隐藏条件:
已经排好序则代表按顺序大小排, 新输入的数,也需要从小到大排;
所以思路整体上就是循环比大小;
a = [1,2,3,5,6,7]
插入数字 4
a.append(4)
sorted(a)
但显然题目考察的是希望自己能写这个逻辑,纯循环遇上数字较多的效率会比较低,所以可以折半选取再循环;
a = [1,2,3,5,6,7]
b = 4
for i in range(len(a)-1):
if b >= a[i] and b <= a[i+1]:
a.insert(i+1, b)
break
elif i == (len(a)-2):
a.append(b)
break
print(a)
"""
题目40:将一个数组逆序输出。
"""
分析: 和29,32一样,python3中直接可输出;
a = ["x","y","z"]
b = a[::-1]
"""
题目41:模仿静态变量的用法。
"""
分析: 官方写法参考
def varfunc():
var = 0
print ('var = %d' % var)
var += 1
if __name__ == '__main__':
for i in range(3):
varfunc()
# 类的属性
# 作为类的一个属性吧
class Static:
StaticVar = 5
def varfunc(self):
self.StaticVar += 1
print (self.StaticVar)
print (Static.StaticVar)
a = Static()
for i in range(3):
a.varfunc()
"""
题目42:学习使用auto定义变量的用法。
"""
分析: 官方写法参考
num = 2
def autofunc():
num = 1
print ('internal block num = %d' % num)
num += 1
for i in range(3):
print ('The num = %d' % num)
num += 1
autofunc()
"""
题目43:模仿静态变量(static)另一案例。
"""
分析: 同41
class Num:
nNum = 1
def inc(self):
self.nNum += 1
print ('nNum = %d' % self.nNum)
if __name__ == '__main__':
nNum = 2
inst = Num()
for i in range(3):
nNum += 1
print ('The num = %d' % nNum)
inst.inc()
"""
题目44:两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:
"""
X = [[12,7,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[5,8,1],
[6,7,3],
[4,5,9]]
分析: 同38一样;
z= []
for i in range(3):
z.append([])
for i in range(3):
for j in range(3):
z[i].append(x[i][j]+y[i][j])
print z
"""
题目45:统计 1 到 100 之和。
"""
a = 100
b = 1
sum = (a+b)*50
"""
题目46:求输入数字的平方,如果平方运算后小于 50 则退出。
"""
while True:
x = int(input('input a num :'))
x *= x
print('结果为:{}'.format(x))
if x > 50:
break
def is_50(n):
if 判断即可;
"""
题目47:两个变量值互换。
"""
def exchange(a,b):
a,b = b,a
return (a,b)
"""
题目48:数字比较。
"""
分析: 简单比较3种情况即可
def compare(a,b):
if a>b:
...
简单比较即可
compare(2,2)
"""
题目49:使用lambda来创建匿名函数。
"""
分析: 没规定函数内容,任意都可,主要了解lambda 是啥;
https://www.runoob.com/python/python-functions.html
S = lambda x,y:x+y
print(S(10,20))
"""
题目50:输出一个随机数。
"""
分析: https://www.runoob.com/python/func-number-random.html
import random
print (random.uniform(10, 20)) #生成 10 到 20 之间的随机数
26-50题如上,大家有什么疑问可以留言讨论。
题外话
希望本文有大家有帮助, 如有错误,欢迎指正。
转载请注明原文链接:
https://blog.csdn.net/weixin_41613094/article/details/122268869