Demo61 指定等级
-
#初始化数据
-
student_num = int(input("请输入人数:"))
-
grade = eval(input("请输入对应学生成绩:"))
-
#算出最大值
-
best = max(grade)
-
#分级
-
for i in range(student_num) :
-
if grade[i] >= best-10 :
-
print(f"学生{i}分数为{grade[i]}等级为A")
-
elif grade[i] >= best-20 :
-
print(f"学生{i}分数为{grade[i]}等级为B")
-
elif grade[i] >= best-30 :
-
print(f"学生{i}分数为{grade[i]}等级为C")
-
elif grade[i] >= best-40 :
-
print(f"学生{i}分数为{grade[i]}等级为D")
-
else :
-
print(f"学生{i}分数为{grade[i]}等级为E")
Demo62 计算数字的出现次数
-
#初始化数据
-
num = int(input("请输入数的个数:"))
-
array = list(eval(input("请输入数据:")))
-
#插入排序
-
def sort(array) :
-
for i in range(len(array) - 1) :
-
for j in range(len(array) - 1 , 0 , -1) :
-
if array[j] < array[j - 1] :
-
array[j] , array[j -1] = array[j - 1] , array[j]
-
return array
-
array = sort(array)
-
#函数计数
-
def search (num , array) :
-
#初始化容纳计数的数
-
temp = 0
-
#下标法表示数组中的数
-
for i in range(num) :
-
#如果前一个数和当前数相等,直接跳过该次循环
-
if array[i - 1] == array[i] :
-
continue
-
#如果不相同,则进行计数
-
else :
-
#循环,有一个相同的数计数容器加一
-
for j in range(i , num) :
-
if array[i] == array[j] :
-
temp += 1
-
#若不相同,直接跳出循环
-
else :
-
break
-
print(f"{array[i]}出现过{temp}次")
-
#相同数计数完成将容纳计数的数归零
-
temp = 0
-
search(num , array)
Demo63 打印不同的数
-
#初始化数据
-
num = int(input("请输入数的个数:"))
-
array = list(eval(input("请输入数据:")))
-
#使用集合的特性直接实现去重
-
array = list(set(array))
-
print(array)
Demo64 最大公约数II
-
def gcd(a, b):
-
'''
-
功能:求最大公约数
-
参数a:一个数
-
参数b:一个数
-
返回两个数的最大公约数
-
'''
-
if b == 0:
-
return a
-
else:
-
return gcd(b, a % b)
-
def multi_gcd(nums):
-
'''
-
功能:循环遍历求数组中每一个数共同的最大公约数
-
参数nums:传入数组
-
返回最大公约数
-
'''
-
result = nums[0]
-
for i in range(1, len(nums)):
-
result = gcd(result, nums[i])
-
return result
-
if __name__ == "__main__" :
-
nums = [12, 24, 36, 48 , 3]
-
print(multi_gcd(nums))
Demo65 打乱数组
-
def disarray(array) :
-
'''
-
功能:打乱数组
-
参数array表示传入数组
-
返回打乱的数组
-
'''
-
array = list(set(array))
-
return array
-
if __name__ == "__main__" :
-
array = input("请输入一共数组:")
-
print(disarray(array))
Demo66 是否有序
-
def is_non_decreasing(arr):
-
'''
-
功能:判断数组是否非单调递减
-
参数arr:传入数组
-
返回判断值,True为非单调递减,False为不是非单调递减
-
'''
-
for i in range(len(arr)-1):
-
if arr[i] > arr[i+1]:
-
return False
-
return True
-
def creat_arr(temp) :
-
'''
-
功能:创建数组并储存在列表里面
-
参数temp表示创建多少个数组
-
返回创建的列表
-
'''
-
array = []
-
for i in range(temp) :
-
num = int(input("请输入数组的长度:"))
-
arr = eval(input("请输入一个数组:"))
-
array.append(arr)
-
return array
-
if __name__ == "__main__" :
-
temp = int(input("请输入数组的个数:"))
-
array = creat_arr(temp)
-
for i in range(temp) :
-
if is_non_decreasing(array[i]) :
-
print("YES")
-
else :
-
print("NO")
Demo67 相似词
-
def judge(array1 , array2) :
-
'''
-
功能:判断单词是否一致
-
参数array1和array2是传入两个单词
-
返回判断值,相同返回True,不同返回False
-
'''
-
if len(array1) == len(array2) :
-
for i in array1 :
-
if i in array2 :
-
return True
-
else :
-
return False
-
else :
-
return False
-
if __name__ == "__main__" :
-
array1 = input("请输入一个单词:")
-
array2 = input("请输入第二个单词:")
-
if judge(array1 , array2) :
-
print("YES")
-
else :
-
print("NO")
Demo68 豆机器
-
import random
-
def top_plate(n, m):
-
"""
-
功能:计算每一个槽里的豆子数量,并打印每一颗豆子掉落的方向
-
参数n传入豆子个数
-
参数m传入槽数
-
返回每个槽中的豆子个数并用列表表现
-
原理:每一豆子碰到钉子有50%的概率向左滚动或者向右滚动,故使用一共数用来表示槽的位置,向某一方向滚动一次该数加一。
-
每有一颗豆子滚完,列表对应槽的数加一
-
"""
-
temp_num = 0
-
temp_arr = [0 for i in range(m)]
-
for i in range(n):
-
temp_num = 0
-
direction = []
-
for j in range(m - 1):
-
if random.random() > 0.5:
-
temp_num += 1
-
direction.append("R")
-
else:
-
direction.append("L")
-
print(f"第{i + 1}颗豆子掉落的方向为:{''.join(direction)}")
-
temp_arr[temp_num] += 1
-
return temp_arr
-
if __name__ == "__main__":
-
num_n = int(input("请输入豆子的个数:"))
-
num_m = int(input("请输入槽的个数:"))
-
print(f"每个槽中豆子数量分别为:{top_plate(num_n, num_m)}")
Demo69 更衣室难题
-
def door():
-
'''
-
功能:判断100个学生使用后还开启的门,开启的门用True表示,反之用False表示
-
返回值为包含True和False的列表
-
'''
-
temp_door = [False for i in range(100)]
-
for s in range(1, 101):
-
for l in range(s, 100, s + 1):
-
if s == 1:
-
temp_door[l - 1] = not temp_door[l - 1]
-
elif s == 2:
-
temp_door = [False for i in temp_door]
-
temp_door[1] = True
-
else:
-
temp_door[l - 1] = not temp_door[l - 1]
-
return temp_door
-
def pri(arr):
-
'''
-
功能:将包含True和False的列表中的每一个True翻译为下标加1的列表
-
参数arr表示传入包含True和False的列表
-
返回包含下标加1的列表
-
'''
-
door_id = []
-
for i in range(100):
-
if arr[i]:
-
door_id.append(i + 1)
-
return door_id
-
if __name__ == '__main__':
-
print(f"还开着的门有:{pri(door())}")
Demo70 合并两个有序数组
-
def array_merge(A , B) :
-
'''
-
功能:合并数组并且排序
-
参数传入两个数组
-
返回合并并且排好序的数组
-
'''
-
C = A + B
-
C = [int(i) for i in C]
-
for i in range(len(C) - 1) :
-
for j in range(len(C) - 1 , 0 , -1) :
-
if C[j] < C[j - 1] :
-
C[j] , C[j - 1] = C[j - 1] , C[j]
-
return C
-
if __name__ == "__main__" :
-
n_A = int(input("请输入A数组的长度:"))
-
A = eval(input("请输入A数组,用逗号分隔:"))
-
n_B = int(input("请输入B数组的长度:"))
-
B = eval(input("请输入B数组,用逗号分隔:"))
-
print(array_merge(A , B))
Demo71 数组划分
-
def separation_arr(A) :
-
'''
-
功能:划分数组并重新组合
-
参数传入数组
-
返回重组后的数组
-
'''
-
arr_1 = []
-
arr_2 = []
-
arr_3 = []
-
for i in A :
-
if i < A[0] :
-
arr_1.append(i)
-
elif i == A[0] :
-
arr_2.append(i)
-
else :
-
arr_3.append(i)
-
return arr_1 + arr_2 + arr_3
-
if __name__ == "__main__" :
-
n = int(input("请输入数组的长度:"))
-
A = eval(input("请输入一共数组,用逗号相隔:"))
-
print(separation_arr(A))
某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),问题:共有多少种走法?
-
def bushu(l , h) :
-
'''
-
功能:计算走法
-
参数l和h用来传入宽和行高
-
返回走法
-
'''
-
if l == 1 :
-
return 1
-
if h == 1 :
-
return 1
-
else :
-
return bushu(l - 1 , h) + bushu(l , h - 1)
-
if __name__ == "__main__" :
-
l , h = map(int , (input("请输入棋盘的宽和行高,用空格分隔:").split(" ")))
-
print(bushu(l,h))
输入一行符号,以#结束,判断其中的对称符号是否匹配。对称符号包括:{ } 、 [ ] 、 ( )、 < >
-
def fanls(s) :
-
list1 = []
-
for i in s :
-
if i == "#" :
-
break
-
else :
-
list1.append(i)
-
return list1
-
def pandu(list1:list) :
-
list2 = []
-
list2 = list1.copy()
-
list2.reverse()
-
c = 0
-
for x in list2 :
-
if x == "}" :
-
list2[c] = "{"
-
elif x == "{" :
-
list2[c] = "}"
-
elif x == "[" :
-
list2[c] = "]"
-
elif x == "]" :
-
list2[c] = "["
-
elif x == "(" :
-
list2[c] = ")"
-
elif x == ")" :
-
list2[c] = "("
-
elif x == "<" :
-
list2[c] = ">"
-
elif x == ">" :
-
list2[c] = "<"
-
c += 1
-
if list1 == list2 :
-
return "yes"
-
else :
-
return "no"
-
if __name__ == "__main__" :
-
s = input("请输入一串符号以#结束")
-
list1 = fanls(s)
-
print(pandu(list1))
给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
-
def renum(list1:list) :
-
c = 0
-
for i in list1 :
-
c = c + 1
-
list1.sort()
-
for x in range(c) :
-
if list1[x] == list1[x + 1] :
-
return list1[x]
-
if __name__ == "__main__" :
-
list2 = [1,2,3,4,5,6,7,7,8,9,10]
-
print(renum(list2))