每日一练 — 2021.11.30


一、编程通过键盘输入每一位运动员

1、程序简介

  • 体操比赛成绩统计。多名运动员,多个评委打分,去掉一个最高分和去掉一个最低分,对其余分数求平均分作为一个运动员成绩。
  • 编程通过键盘输入每位运动员编号和每个评委的成绩,求出运动员的最终成绩,并将运动员编号和最终成绩保存在一个字典中。
  • 形如{编号1:最终成绩1,学号2:最终成绩2…,并将结果输出。

2、程序代码

# -*- coding: utf-8 -*-
"""
Created on Tue Nov 30 14:45:59 2021
Function: 编程通过键盘输入每一位运动员
@author: 小梁aixj
"""
t=int(input('请输入评委人数(不少于三人):'))
s=int(input('请输入学生人数(不少于一人):'))
stus=[]
for i in range(s):
    stu={'score':[]}
    stu.update({'sn':str(input('----\n请输入学生学号:'))})
    for j in range(t):
        stu['score'].append(input('请输入评委'+str(j+1)+'的评分:'))
    stu['score'].sort()
    stu.update({'min':stu['score'].pop(0)})
    stu.update({'max':stu['score'].pop()})
    stu.update({'avg':eval('+'.join(stu['score']))/len(stu['score'])})
    stus.append(stu)
r={n['sn']:n['avg'] for n in stus}
print(r)

3、运行结果,如下图

在这里插入图片描述


二、求列表(整数列表)的平衡点

1、程序简介

对于一个整数列表,如果有一个切分位置使其前面的元素之和等于后面的元素之和,就称该位置是平衡点
请编写程序求列表(整数列表)的平衡点,不存在时给出提示。
思路:

  • 1 确定一个位置

  • 2 求在这个位置前面的元素之和,与在这个位置后面的元素之和,做比较,判断是否相等

  • 2.1 怎么求前面元素之和:
    假设这个位置是[i],那么前面元素就是[0]~[i-1], 后面元素为[i+1]~[len(list)-1]

  • 进行求和:累加求和

  • 2.2判断是否相等:相等,给出这个平衡位置;不相等,输出“该列表不存在平衡点”


2、程序代码

# -*- coding: utf-8 -*-
"""
Created on Tue Nov 30 14:47:20 2021
Function: 求列表(整数列表)的平衡点
@author: 小梁aixj
"""
a=input('请输入一个整数列表:').split(' ')
flag=0
for i in range(0, len(a)-1):
    s1=0
    for m in range(0,i):
        s1 += int(a[m])
    s2=0
    for n in range(i+1, len(a)):
        s2+=int(a[n])
    if s1==s2:
        print('该整数列表存在平衡点,且平衡点为:',a[i])
        flag=1
        break
if flag==0:
    print('该整数列表不存在平衡点')

3、运行结果,如下图

在这里插入图片描述


注:输入整数列表时应使用空格相隔。

三、检查密码强度

1、程序简介

定义一个名为“isStrongPassword”的函数,该函数将字符串作为参数。功能然后将检查所提供的字符串是否满足以下条件,以检查是否为强密码

  • 1.必须至少包含1个大写和小写字母的组合
  • 2.必须至少包含3位数字
  • 3.必须至少包含3个特殊字符(包括空格)
  • 4.密码长度必须至少12个字符
  • 该函数将返回一个布尔值,即如果满足所有条件则返回True或返回False 确保使用可能返回False值的每个可能的输入来测试函数也一样

2、程序代码

# -*- coding: utf-8 -*-
"""
Created on Tue Nov 30 14:48:02 2021
Function: 检查密码强度
@author: 小梁aixj
"""

def isStrongPassword(pwd):
    chars = list(pwd)
    upper = [c for c in chars if 'A'<=c and c<='Z']
    lower = [c for c in chars if 'a'<=c and c<='z']
    digit = [c for c in chars if '0'<=c and c<='9']
    symbol = [c for c in chars if not ('A'<=c and c<='Z' or 'a'<=c and c<='z' or '0'<=c and c<='9')]
    strong = len(upper)>=1 and len(lower)>=1 and len(digit)>=3 and len(symbol)>=3 and len(pwd)>=12
    return strong
print(isStrongPassword('Str0n9P@$w0rd$'))#1
print(isStrongPassword('StrongPassword'))#2
print(isStrongPassword('Stron9P@$$0rd'))#3
print(isStrongPassword('Str0n9Pass0rd'))#4
print(isStrongPassword('Str0n9P@$$w0rd'))#5
print(isStrongPassword('Str0n9P@$$'))#6
print(isStrongPassword('12345678'))#7
print(isStrongPassword('~!@#$%^&*()_+'))#8
print(isStrongPassword('STRONGPASSWORD'))#9

3、运行结果,如下图

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梁辰兴

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

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

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

打赏作者

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

抵扣说明:

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

余额充值