python平均分由⾼到低顺序排列输出选⼿编号和最后得分
_Python基础案例练习
python的⼀些基础经典案例
⼀、编写函数,接收字符串参数,返回⼀个元组,其中第⼀个元素为⼤写字母个数,第⼆个元素为⼩写字母个数。
def demo(s):
result = [0, 0] #不能直接定义为元组,因为元组是不能对其中元素进⾏修改操作的。
for ch in s:
if ch.islower():
result[1] += 1
elif ch.isupper():
result[0] += 1
return tuple(result)
⼆、编写函数,接收⼀个整数t为参数,打印杨辉三⾓前t⾏。
def yanghui(t):
print([1])
line = [1, 1]
print(line)
for i in range(2, t):
r = []
for j in range(0, len(line)-1):
r.append(line[j]+line[j+1])
line = [1]+r+[1]
print(line)
三、编写函数,接收⼀个正偶数为参数,输出两个素数,并且这两个素数之和等于原来的正偶数。如果存在多组符合条件的素数,则全部输出。
def demo(n):
def IsPrime(p):
if p == 2:
return True
if p%2 == 0:
return False
for i in range(3, int(p**0.5)+1, 2):
if p%i==0:
return False
return True
if isinstance(n, int) and n>0 and n%2==0:
for i in range(2, n//2+1):
if IsPrime(i) and IsPrime(n-i):
print(i, '+', n-i, '=', n)
access数据用哪个软件四、编写函数,计算字符串匹配的准确率。
以打字练习程序为例,假设origin为原始内容,userInput为⽤户输⼊的内容,下⾯的代码⽤来测试⽤户输⼊的准确率。
def Rate(origin, userInput):
if not (isinstance(origin, str) and isinstance(userInput, str)):
print('The two parameters must be strings.')
return
right = sum((1 for o, u in zip(origin, userInput) if o==u))
return round(right/len(origin), 2)
五、编写函数模拟猜数游戏。系统随机产⽣⼀个数,玩家最多可以猜5次,系统会根据玩家的猜测进⾏提⽰,玩家则可以根据系统的提⽰对下⼀次的猜测进⾏适当调整。
from random import randint
def guess(maxValue=100, maxTimes=5):
#随机⽣成⼀个整数
value = randint(1,maxValue)
for i in range(maxTimes):
prompt = 'Start to GUESS:' if i==0 else 'Guess again:'
#使⽤异常处理结构,防⽌输⼊不是数字的情况
try:
x = int(input(prompt))
except:
print('Must input an integer between 1 and ', maxValue)
else:
#猜对了
if x == value:
print('Congratulations!')
break
elif x > value:
print('Too big')
else:
print('Too little')
else:
#次数⽤完还没猜对,游戏结束,提⽰正确答案
print('Game over. FAIL.')
print('The value is ', value)
六、编写函数模拟报数游戏。有n个⼈围成⼀圈,顺序编号,从第⼀个⼈开始从1到k(假设k=3)报数,报到k的⼈退出圈⼦,然后圈⼦缩⼩,从下⼀个⼈继续游戏,问最后留下的是原来的第⼏号。
from itertools import cycle
def demo(lst, k):
#切⽚,以免影响原来的数据
t_lst = lst[:]
#游戏⼀直进⾏到只剩下最后⼀个⼈
while len(t_lst)>1:
#创建cycle对象
c = cycle(t_lst)
#从1到k报数
for i in range(k):
t = next(c)
#⼀个⼈出局,圈⼦缩⼩
index = t_lst.index(t)
t_lst = t_lst[index+1:] + t_lst[:index]
#游戏结束
return t_lst[0]
lst = list(range(1,11))
print(demo(lst, 3))
对勾函数的四种模型及图像
七、汉诺塔问题基于递归算法的实现。
据说古代有⼀个梵塔,塔内有三个底座A、B、C,A座上有64个盘⼦,盘⼦⼤⼩不等,⼤的在下,⼩的在上。有⼀个和尚想把这64个盘⼦从A座移到C座,但每次只能允许移动⼀个盘⼦,在移动盘⼦的过程中可以利⽤B座,但任何时刻3个座上的盘⼦都必须始终保持⼤盘在下、⼩盘在上的顺序。如果只有⼀个盘⼦,则不需要利⽤B座,直接将盘⼦从A移动到C即可。和尚想知道这项任务的详细移动步骤和顺序。这实际上是⼀个⾮常巨⼤的⼯程,是⼀个不可能完成的任务。根据数学知识我们可以知道,移动n个盘⼦需要2^n-1步,64个盘⼦需要18446744073709551615步。如果每步需要⼀秒钟的话,那么就需要584942417355.072年。三相异步电机 y接法
def hannoi(num, src, dst, temp=None):
#声明⽤来记录移动次数的变量为全局变量
global times
#确认参数类型和范围
assert type(num) == int, 'num must be integer'
assert num > 0, 'num must > 0'
#只剩最后或只有⼀个盘⼦需要移动,这也是函数递归调⽤的结束条件
if num == 1:
print('The {0} Times move:{1}==>{2}'.format(times, src, dst))
times += 1
else:
#递归调⽤函数⾃⾝,
#先把除最后⼀个盘⼦之外的所有盘⼦移动到临时柱⼦上
hannuo(num-1, src, temp, dst)
#把最后⼀个盘⼦直接移动到⽬标柱⼦上
制作表单代码
hannuo(1, src, dst)
#把除最后⼀个盘⼦之外的其他盘⼦从临时柱⼦上移动到⽬标柱⼦上
hannuo(num-1, temp, dst, src)
#⽤来记录移动次数的变量
times = 1
#A表⽰最初放置盘⼦的柱⼦,C是⽬标柱⼦,B是临时柱⼦
hannoi(3, 'A', 'C', 'B')
⼋、编写函数计算任意位数的⿊洞数。⿊洞数是指这样的整数:由这个数字每位上的数字组成的最⼤数减去每位数字组成的最⼩数仍然得到这个数⾃⾝。例如3位⿊洞数是495,因为954-459=495,4位数字是6174,因为7641-1467=6174。
def main(n):
'''参数n表⽰数字的位数,例如n=3时返回495,n=4时返回6174'''
#待测试数范围的起点和结束值
start = 10**(n-1)
end = 10**n
#依次测试每个数python基础知识测试题
for i in range(start, end):
#由这⼏个数字组成的最⼤数和最⼩数
big = ''.join(sorted(str(i),reverse=True))
little = ''.join(reversed(big))
big, little = map(int,(big, little))
if big-little == i:
print(i)
n = 4
main(n)
九、编写函数,使⽤算法实现冒泡排序算法。
from random import randint
def bubbleSort(lst, reverse=False):
length = len(lst)
for i in range(0, length):
flag = False
for j in range(0, length-i-1):
#⽐较相邻两个元素⼤⼩,并根据需要进⾏交换,默认升序排序exp = 'lst[j] > lst[j+1]'
#如果reverse=True则降序排序
if reverse:
exp = 'lst[j] < lst[j+1]'
if eval(exp):
lst[j], lst[j+1] = lst[j+1], lst[j]
#flag=True表⽰本次扫描发⽣过元素交换
flag = True
#如果⼀次扫描结束后,没有发⽣过元素交换,说明已经按序排列if not flag:
break
⼗、编写函数,模拟选择法排序。
def selectSort(lst, reverse=False):
length = len(lst)
for i in range(0, length):
#假设剩余元素中第⼀个最⼩或最⼤
编程工具大全m = i
#扫描剩余元素
for j in range(i+1, length):
#如果有更⼩或更⼤的,就记录下它的位置
exp = 'lst[j] < lst[m]'
if reverse:
exp = 'lst[j] > lst[m]'
if eval(exp):
m = j
#如果发现更⼩或更⼤的,就交换值

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。