Python学习笔记(八)- 四个小程序

# 字符串格式化符号说明
#      %c     格式化字符及其ASCII码
#      %s     格式化字符串
#      %d     格式化整数
#      %o     格式化无符号八进制数
#      %x     格式化无符号十六进制数
#      %X     格式化无符号十六进制数(大写)
#      %f     格式化定点数,可指定小数点后的精度
#      %e     用科学计数法格式化定点数
#      %E     作用同%e,用科学计数法格式化定点数
#      %g     根据值的大小决定使用%f或者%e
#      %G     作用同%g,根据值的大小决定使用%F或者%E

#编写一个进制转换程序,十进制转换二进制可以用bin()
q = True
while q:
    num = input('请输入一个整数(输入Q结束程序):')
    if num.isdigit():
        num = int(num)
        print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
        print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))
        print('十进制 -> 二进制 : %d -> ' % num, bin(num))
    elif num in ('Q','q'):
        q = False
        print("程序结束")
    else:
        continue
#现有一个列表[1, 2.1, 2.3, 'a', '1', True],写一个方法,计算里面各数字类型的和
#即遇到字符时,自动跳过。

def sum(x):
    result=0
    for each in x:
        if isinstance(each,int) or isinstance(each,float):
            print(each)
            result+=each
        else:
            continue
    return result

res=sum([1, 2.1, 2.3, 'a', '1', True])
print(res)

# s为字符串
# s.isalnum() 所有字符都是数字或者字母
# s.isalpha() 所有字符都是字母
# s.isdigit() 所有字符都是数字
# s.islower() 所有字符都是小写
# s.isupper() 所有字符都是大写
# s.istitle() 所有单词都是首字母大写,像标题
# s.isspace() 所有字符都是空白字符、\t、\n、\r

# 判断是整数还是浮点数
# a=123
# b=123.123
#
# >>>isinstance(a,int)
# True
# >>>isinstance(b,float)
# True
# >>>isinstance(b,int)
# False
#有一个学生成绩表2. score = [['小明', 85], ['小文', 80], ['小红', 65], ['小黄', 95]],
#根据学生名称查找成绩。

score = [['小明', 85], ['小文', 80], ['小红', 65], ['小黄', 95]]
name=input("请输入学生名字:")
# length=len(score)
# print(length)
# i=0
# stuScore=-1
# while i<length:
#     if score[i][0] ==name:
#         stuScore=score[i][1]
#         print(name,"的成绩是:",stuScore)
#         break
#     else:
#         i+=1
# if stuScore==-1:
#     print("没有该学生")


IsFind = False
for each in score:
    if name in each:
        print(name + '的得分是:', each[1])
        IsFind = True
        break

if IsFind == False:
    print('查找的数据不存在!')
# 密码安全性检查
# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
# 中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位

symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'

passwd = input('请输入需要检查的密码组合:')

# 判断长度
length = len(passwd)

while (passwd.isspace() or length == 0) :
    passwd = input("您输入的密码为空(或空格),请重新输入:")

if length <= 8:
    flag_len = 1
elif 8 < length < 16:
    flag_len = 2
else:
    flag_len = 3

flag_con = 0



# 判断是否包含字母
for each in passwd:
    if each in chars:
        flag_con += 1
        break

# 判断是否包含数字
for each in passwd:
    if each in nums:
        flag_con += 2
        break

# 判断是否包含特殊字符
for each in passwd:
    if each in symbols:
        flag_con += 5
        break
#密码只能以字母开头
pwdFirstStr=0
if passwd[0:1] in chars:
    pwdFirstStr=1
print("pwdFirstStr",pwdFirstStr)
# 打印结果
while 1 :
    #print("您的密码安全级别评定为:", end='')
    # 低级密码要求:
    #   1. 密码由单纯的数字或字母组成
    #   2. 密码长度小于等于8位
    if flag_len == 1 or flag_con in (1,2) :
        print("您的密码安全级别评定为:低")
    # 中级密码要求:
    #   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
    #   2. 密码长度不能低于8位
    elif flag_len in (2,3) or flag_con in (3,6,7):
        print("您的密码安全级别评定为:中")
    # 高级密码要求:
    #   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
    #   2. 密码只能由字母开头
    #   3. 密码长度不能低于16位
    elif flag_len==3 and flag_con ==8 and pwdFirstStr==1:
        print("您的密码安全级别评定为:高")
        print("请继续保持")
        break
    else:
        print("输入的密码不符合格式要求!")

    print("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
   \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位'")
    break

往期笔记

Python学习笔记(1)

Python学习笔记(2)

Python学习笔记(3)

Python学习笔记(4)

Python学习笔记(5)

Python学习笔记(6)

Python学习笔记(7)

原文发布于微信公众号 - 软件测试经验与教训(udatest)

原文发表时间:2017-12-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏工科狗和生物喵

【计算机本科补全计划】C++ Primer:String Vector标准库及迭代器的使用

正文之前 今天帮学妹选了一天的电脑配件,然后从中领悟:坐看狗东黑我钱,任他涨价我不动!!最后果断的用学妹的钱冲了个Plus,然后领了一堆券,最后学妹还省了30块...

419100
来自专栏iOSer成长记录

iOS-Strong/Copy修饰词

11430
来自专栏前端新视界

立即执行函数表达式(IIFE)

原文:immediately-invoked-function-expression 译者:nzbin 也许你还没有注意到,我是一个对术语比较坚持的人。因此...

22150
来自专栏Jimoer

数据结构:数组、链表、栈、队列的理解

解释定义 数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。再简单描述一下:数据结构就是描述对象间逻辑关系的学科。 如果还是不太清楚下面会...

522100
来自专栏老马说编程

(92) 函数式数据处理 (上) / 计算机程序的思维逻辑

上节我们介绍了Lambda表达式和函数式接口,本节探讨它们的应用,函数式数据处理,针对常见的集合数据处理,Java 8引入了一套新的类库,位于包java.uti...

19860
来自专栏Pythonista

封装与扩展性

封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码;而外部使用用者只知道一个接口(函数),只要接口(函数)名、参数不变,使用者的代码...

10030
来自专栏老司机的技术博客

人人都能学会的python编程教程9:dict和set

dict和我们小时候用的字典很像,如果你想查一个汉字,你只需要根据某一个拼音就可以很快速的查询到它。

62780
来自专栏屈定‘s Blog

Java--Enum的思考

枚举类是Java5引进的特性,其目的是替换int枚举模式或者String枚举模式,使得语义更加清晰,另外也解决了行为和枚举绑定的问题.

15640
来自专栏ShaoYL

OC语言Block 续

337120
来自专栏ShaoYL

OC语言Block 续

14490

扫码关注云+社区

领取腾讯云代金券