云计算py第七次作业

第三章

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) :
    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):
    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():
    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):
    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) :
    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))

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾44

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值