引用:

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的更多相关文章

  1. 【计算机网络】Stanford CS144 Lab Assignments 学习笔记

    本文为我的斯坦福计算机网络课的编程实验(Lab Assignments)的学习总结.课程全称:CS 144: Introduction to Computer Networking. 事情发生于我读了 ...

  2. Coding the Matrix作业Python Lab及提交方法

    Coding the Matrix: Linear Algebra through Computer Science Applications 这是一门用python实现矩阵运算的课,第一次作业就感觉 ...

  3. python写的自动签到脚本。

    等以后有时间补上. 附上代码: #! /usr/bin/env python # coding:utf-8 #-----------------------------------------学号和密 ...

  4. Python 第一個程序

    以默認方式安裝,會將 Python 安裝在目錄 C:\Users\Administrator\AppData\Local\Programs\Python\Python37 下: 有趣的是: 在此目錄下 ...

  5. 《深入理解计算机系统》实验一 —Data Lab

    本文是CSAPP第二章的配套实验,通过使用有限的运算符来实现正数,负数,浮点数的位级表示.通过完成这13个函数,可以使我们更好的理解计算机中数据的编码方式. 准备工作   首先去官网Lab Assig ...

  6. (转)Awesome Courses

    Awesome Courses  Introduction There is a lot of hidden treasure lying within university pages scatte ...

  7. Implementing x / 6 Using Only Bit Manipulations

    This is an interesting question from one of the lab assignments in Introduction to Computer Systems, ...

  8. 深入理解计算机(CSAPP)资源汇总

    用于资源记录. 视频: 卡内基梅隆大学 Introduction to Computer Systems CMU 15-213 Fall 作业(labs): Lab Assignments

  9. 《CSAPP》实验一:位操作

    <CSAPP>号称程序员圣经,虽然中文译名为<深入理解计算机系统>,但其实没那么"深",只是覆盖面很广,一般用作计算机专业大一导论课的教科书.早就听闻书上配 ...

随机推荐

  1. idea中的插件,可以快速将类中的属性转换成Json字符串

    当我们想要测试接口的时候,难免会根据一个类,一个一个的写json数据,当属性比较少时还行,但当属性多的时候就比较麻烦了, 为了解决这个问题,我们可以安装第三方的插件来快速生成json字符串. 步骤如下 ...

  2. c# 第12节 分支语句if、switch、三位运算符

    本节内容: 1:流程控制语句分类 2:分支语句之if的使用 3:分支语句之switch的使用 4:分支语句之三位运算符 5:分支语句比较 1:流程控5:制语句分类 2:分支语句之if 3:分支语句之s ...

  3. 201871010108-高文利《面向对象程序设计(java)》第十六周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址> ht ...

  4. django学习-管理界面、视图

    django管理界面 设计背景 为你的员工或客户生成一个用户添加,修改和删除内容的后台是一项缺乏创造性和乏味的工作.因此,django全自动地根据模型创建后台界面. django产生于一个公众页面和内 ...

  5. C#基础表达式语句详解(下)

    书接上文: 4.选择语句:if语句和switch语句 4.1If语句:statement:两种格式:A与B A:If(boolean-expression)embedded-statement(嵌入式 ...

  6. day10_7.10 函数的嵌套等

    一.命名关键字参数.(了解) 1.在函数阶段,写在*与** 可变长参数之间的形参称为命名关键字参数. 在给命名关键字参数传值时,只能用关键字为其传值.诸如以下函数的形参 def func(x,y=,* ...

  7. JUnit 4 和 TestNG

    JUnit 4和TestNG都是Java中非常受欢迎的单元测试框架.两种框架在功能上看起来非常相似.哪一个更好?在Java项目中应该使用哪个单元测试框架? 下面表中概括了JUnit 4和TestNG之 ...

  8. USACO Stamps

    洛谷 P2725 邮票 Stamps https://www.luogu.org/problem/P2725 JDOJ 1797: Stamps 邮票 https://neooj.com:8082/o ...

  9. 批处理命令 call

    call 命令 CALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理 CALL command 调用一条批处理命令,和直接执行命令效果一样,特殊情况下很有 ...

  10. [RN] React Native 使用 realm 数据库

    React Native 使用 realm  数据库 realm 是一款专为移动 ​ 端开发的高性能数据库,其宣称自己是最快的 react-native 数据库. realm 整体的优点有这么四点: ...