Python Lab Assignments
引用:
Lab 1
对于任何Web应用程序登录,都需要根据数据库规则验证用户密码. 假定某个Web应用程序,
其有效密码的条件是:
- a)密码长度应在6到16个字符之间
- b)至少要有一个数字
- c)至少包含有[$ @!*] 中一个特殊字符(中括号不计入).
- d)应至少包含一个小写字母和至少一个大写字母
要求实现一个lab1.py, 该程序实现有函数check_valid_password,
入口参数:
- 字符串: 用户密码
函数返回值(按顺序):
- 1.布尔值: True或False, True表明有效的用户密码, False表名用户密码无效.
- 2.字符串: 具体的错误信息(中文或英文皆可), 或者'ok' (表示没有错误)
Lab 2:
编写一个Python函数,该函数接受用户的英文句子(不用校验)并显示以下内容:
- a)中间的单词 (如果是偶数个, 则取左边的那个)
- b)句子中最长的单词
- c)颠倒句子中的所有单词
以上参考答案:
Lab1
# lab1.py
def check_valid_password(password: str):
if len(password) < 6 or len(password) > 16:
return False, '密码长度在6-16个字符之间'
has_number, has_lowercase, = False, False
has_uppercase, special_char = False, False
for s in password:
if s.isnumeric():
has_number = True
if s.lower():
has_lowercase = True
if s.isupper():
has_uppercase = True
if s in ['$', '@', '!', '*']:
special_char = True
if has_number is False:
return False, '缺少数字'
if has_lowercase is False:
return False, '缺少小写字母'
if has_uppercase is False:
return False, '缺少大写字母'
if special_char is False:
return False, '缺少特殊字符'
return True, 'ok'
Lab1的检验程序
from lab1 import check_valid_password
def check_your_lab1():
assert len(check_valid_password('hello')) == 2 # 检测返回值个数
assert check_valid_password('hello')[0] is False # 字段长度校验
assert check_valid_password('hello hi ha')[0] is False # 缺少数字校验
assert check_valid_password('password2')[0] is False # 缺少特殊字符
assert (True, 'ok') == check_valid_password('Password2@')
if __name__ == '__main__':
check_your_lab1()
Lab2
def middle(s):
sliced_string = s.split(' ')
valid_string = []
for word in sliced_string:
temp = ''.join(e for e in word if e.isalnum())
valid_string.append(temp)
length = len(valid_string)
if length == 0:
return ""
elif length % 2 != 0:
return valid_string[length//2]
elif length % 2 == 0:
return valid_string[length//2 - 1]
def max_long(s):
current_max = 0
max_long_word = ''
sliced_string = s.split(' ')
for word in sliced_string:
if len(word) > current_max:
current_max = len(word)
max_long_word = word
return ''.join(e for e in max_long_word if e.isalnum())
def reverse(s):
sliced_string = s.split(' ')
valid_string = []
for word in sliced_string:
temp = ''.join(e for e in word if e.isalnum())
valid_string.append(temp)
return ' '.join(valid_string[::-1])
if '__main__' == __name__:
input_string = input('请输入一个句子')
print('你输入的句子为: ', input_string) # 示例: "good morning! I am bob!"
print('middle: ', middle(input_string))
print('longest word: ', max_long(input_string))
print('reverse: ', reverse(input_string))
演示:
请输入一个句子>? "good morning! I am bob!"
你输入的句子为: "good morning! I am bob!"
middle: I
longest word: morning
reverse: bob am I morning good
Python Lab Assignments的更多相关文章
- 【计算机网络】Stanford CS144 Lab Assignments 学习笔记
本文为我的斯坦福计算机网络课的编程实验(Lab Assignments)的学习总结.课程全称:CS 144: Introduction to Computer Networking. 事情发生于我读了 ...
- Coding the Matrix作业Python Lab及提交方法
Coding the Matrix: Linear Algebra through Computer Science Applications 这是一门用python实现矩阵运算的课,第一次作业就感觉 ...
- python写的自动签到脚本。
等以后有时间补上. 附上代码: #! /usr/bin/env python # coding:utf-8 #-----------------------------------------学号和密 ...
- Python 第一個程序
以默認方式安裝,會將 Python 安裝在目錄 C:\Users\Administrator\AppData\Local\Programs\Python\Python37 下: 有趣的是: 在此目錄下 ...
- 《深入理解计算机系统》实验一 —Data Lab
本文是CSAPP第二章的配套实验,通过使用有限的运算符来实现正数,负数,浮点数的位级表示.通过完成这13个函数,可以使我们更好的理解计算机中数据的编码方式. 准备工作 首先去官网Lab Assig ...
- (转)Awesome Courses
Awesome Courses Introduction There is a lot of hidden treasure lying within university pages scatte ...
- Implementing x / 6 Using Only Bit Manipulations
This is an interesting question from one of the lab assignments in Introduction to Computer Systems, ...
- 深入理解计算机(CSAPP)资源汇总
用于资源记录. 视频: 卡内基梅隆大学 Introduction to Computer Systems CMU 15-213 Fall 作业(labs): Lab Assignments
- 《CSAPP》实验一:位操作
<CSAPP>号称程序员圣经,虽然中文译名为<深入理解计算机系统>,但其实没那么"深",只是覆盖面很广,一般用作计算机专业大一导论课的教科书.早就听闻书上配 ...
随机推荐
- bert剪枝系列——Are Sixteen Heads Really Better than One?
1,概述 剪枝可以分为两种:一种是无序的剪枝,比如将权重中一些值置为0,这种也称为稀疏化,在实际的应用上这种剪枝基本没有意义,因为它只能压缩模型的大小,但很多时候做不到模型推断加速,而在当今的移动设备 ...
- Quantization aware training 量化背后的技术——Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference
1,概述 模型量化属于模型压缩的范畴,模型压缩的目的旨在降低模型的内存大小,加速模型的推断速度(除了压缩之外,一些模型推断框架也可以通过内存,io,计算等优化来加速推断). 常见的模型压缩算法有:量化 ...
- promise 的基本用法
//知识点1 例1--- 最基本的写法 Promise的基本语法哦 const Aa=new Promise(function(resolve,reject){ //resolve和reject是参数 ...
- 2015年第六届蓝桥杯C/C++程序设计本科B组决赛 ——居民集会(编程大题)
标题:居民集会 蓝桥村的居民都生活在一条公路的边上,公路的长度为L,每户家庭的 位置都用这户家庭到公路的起点的距离来计算,第i户家庭距起点的距 离为di.每年,蓝桥村都要举行一次集会.今年,由于村里的 ...
- 201871010101-陈来弟《面向对象程序设计(java)》第七周学习总结
201871010101-陈来弟<面向对象程序设计(java)>第七周学习总结 项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/n ...
- Maven 生命周期的阶段与插件的目标之间的绑定关系
clean 生命周期 clean 生命周期的阶段 插件的目标 pre-clean clean maven-clean-plugin:clean post-clean default 生命周期的内置插件 ...
- docker 部署appium
1.docker appium镜像和命令:https://github.com/appium/appium-docker-android 2.启动appium docker run --privile ...
- 【使用篇二】SpringBoot单元测试(10)
SpringCloud单元测试:https://www.cnblogs.com/myitnews/p/11796321.html 1. 创建项目Maven Project,修改pom.xml < ...
- VIJOS-P1232 核电站问题
VIJOS-P1232 核电站问题 JDOJ 1373 https://neooj.com/oldoj/problem.php?id=1373 题目描述 一个核电站有N个放核物质的坑, ...
- nginx配置文件结构及location块语法规则
一. nginx配置文件结构介绍 二. location语法规则: 用法示例: location [=|~|~*|^~] /uri/ { … } # 讲解如下: 1. = 开头表示精确匹配 2. ...