作业7.9

一、练习
1、编写认证程序,可以登陆成功不同的账号密码

db_info = [
    ['jason', '111'],
    ['jack', '222'],
    ['sunny', '333']
]
tag = True
while tag:
    inp_name = input('请输入您的用户名:').strip()
    inp_pwd = input('请输入您的密码:').strip()
    for item in db_info:
        if inp_name == item[0] and inp_pwd == item[1]:
            print("%s登录成功!" % inp_name)
            tag = False
            break
    else:
        print("登录失败!")

2、账号密码输错3次则退出

db_info = [
    ['jason', '111'],
    ['jack', '222'],
    ['sunny', '333']
]
count = 0
while count < 3:
    inp_name = input('请输入您的用户名:').strip()
    inp_pwd = input('请输入您的密码:').strip()
    for item in db_info:
        if inp_name == item[0] and inp_pwd == item[1]:
            print("%s登录成功!" % inp_name)
            count = 3
            break
    else:
        print("登录失败!")
        count += 1

3、 简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型

编译型语言:运行需要编译器翻译,一旦翻译的结果可以运行,那么下一次运行就不需要再翻译了(如:C,C++,Go等)
解释型语言:每一次运行都需要解释器进行翻译(如:python,shell)

4、执行 Python 脚本的两种方式是什么

1)交互式环境:
每输入一行代码即可得到结果,适合用来调试程序
(2)脚本的方式:
在文件中写下代码,用python解释器来运行(打开文件识别代码,并运行得到结果)

5、Pyhton 单行注释和多行注释分别用什么?

单行注释:使用# 
多行注释:三引号("""  """)或者('''  '''

6、布尔值分别有什么?

TrueFalse
PS:对于任何一个值,它都隐含了隐式的布尔值,
0None, 空(空字符串、空列表、空字典等)对应的布尔值为False
其余均为True

7、声明变量注意事项有那些?

原则:先定义,后使用
注意事项:(1)变量名只能由字母、数字和下划线任意组合而成
(2)首字符不能使用数字
(3)变量名不能使用python语言的关键字:如intfloatandTrueprint

8、如何查看变量在内存中的地址?

调用id()函数查看
如:
x = 100
print(id(x))

9、写代码
a. 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!

inp_name = input("请输入用户名:").strip()
inp_pwd = input("请输入密码:").strip()
if inp_name == "seven" and inp_pwd == "123":
    print("登录成功!")
else:
    print("登录失败!")

b. 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次

i = 0
while i < 3:
    inp_name = input("请输入用户名:").strip()
    inp_pwd = input("请输入密码:").strip()
    if inp_name == "seven" and inp_pwd == "123":
        print("登录成功!")
        break
    else:
        print('登录失败!')
        i += 1

c. 实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次

i = 0
while i < 3:
    inp_name = input("请输入用户名:").strip()
    inp_pwd = input("请输入密码:").strip()
    if (inp_name == "seven" or inp_name == "alex") and inp_pwd == "123":
        print("登录成功!")
        break
    else:
        print('登录失败!')
        i += 1

10、写代码
a. 使用while循环实现输出2-3+4-5+6…+100 的和

num = 0
for i in range(2, 100, 1):
    if i % 2 == 0:
        num += i
    else:
        num -= i
print(num)

b. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12

count = 1
while count < 13:
    if count == 6 or count == 10:
        count += 1
        continue
    elif count == 12:
        print(count)
        break
    print(count, end=",")
    count += 1

c. 使用 while 循环实现输出 1-100 内的所有奇数

i = 1
while i < 101:
    if i % 2 == 1:
        print(i, end=' ')
    i += 1

d. 使用 while 循环实现输出 1-100 内的所有偶数

i = 1
while i < 101:
    if i % 2 == 0:
        print(i, end=' ')
    i += 1

11、现有如下两个变量,请简述 n1 和 n2 是什么关系?
n1 = 123456
n2 = n1

n1 与 n2 都指向值123456的内存地址,
但是对n1或者n2作运算、赋值操作都不影响另一个值

二 、作业
a. 基础需求:
让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序

user_info = {
    'jason': {'pwd': '111', 'count': 0},
    'tom': {'pwd': '222', 'count': 0},
    'jay': {'pwd': '333', 'count': 0}
}
while True:
    inp_name = input('请输入用户名:').strip()
    if not inp_name in user_info:
        print('用户名不存在,请重新输入')
        continue
    if user_info[inp_name]['count'] > 2:
        print("您已输错三次,请明天再试")
        break
    else:
        inp_pwd = input('请输入密码:').strip()
        if inp_pwd == user_info[inp_name]['pwd']:
            print('登录成功!')
            break
        else:
            print('密码错误')
            user_info[inp_name]['count'] += 1

b. 升级需求:
可以支持多个用户登录 (提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

user_info = {
    'jason': {'pwd': '111', 'count': 0},
    'tom': {'pwd': '222', 'count': 0},
    'jay': {'pwd': '333', 'count': 0}
}
while True:
    inp_name = input('请输入用户名:').strip()
    if not inp_name in user_info:
        print('用户名不存在,请重新输入')
        continue
    with open('lock.txt', mode='r', encoding='utf-8') as f1:
        names = f1.read().strip(' ').split('\n')
        if inp_name in names:
            print("当前用户因输错三次,已经被系统锁定")
    if user_info[inp_name]['count'] > 2:
        with open('lock.txt', mode='a', encoding='utf-8') as f2:
            print("您已输错三次,请明天再试")
            f2.write(inp_name)
        break
    else:
        inp_pwd = input('请输入密码:').strip()
        if inp_pwd == user_info[inp_name]['pwd']:
            print('登录成功!')
            break
        else:
            print('密码错误')
            user_info[inp_name]['count'] += 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值