python基础语法学习

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

username="admin"
password="admin"
count=1
while count<=3 :
_username=input("username:")
_password=input("password:")
if _username==username and _password==password :
print("welcome",_username)
break
count +=1

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

user_info = {'admin':'admin','root':'root','zhang':'123456','liu':'qwe'}
count = 1

while count <= 3 :
print('input account')
username = input("username:")

if username in user_info :
    path = pathlib.Path('blacklist')
    if path.is_file() :
        f = open("blacklist","r",encoding='gbk')
        for line in f.readlines() :
            line = line.strip()
            if line == username :
                print(line,"账户已经被锁定")
                f.close()
                exit()
        f.close()

    break
else :
    count += 1

if count == 4 :
print('连续输错账号三次')
exit()

count = 1
while count <= 3 :
password = input("password:")

if password == user_info[username] :
    print('welcome',username)
    break
count += 1

if count == 4 :
print('你已经输错三次,用户被锁定')
f = open("blacklist", "a+", encoding='gbk')
f.writelines(username)
f.writelines('\n')
f.close()

1.格式化输出
占位符:%s %d %f
s = string
d = digit
f = float

输出一个个人信息列表:
name=input("Name:")
job=input("Job")
age=input(Age)
hometown=input(Hometown)
info = """
-------- info of %s ------
Name: %s
Job: %s
Age: %s
Hometown: %s
---------- end -------------
""" % (name,name,job,age,hometown)
print(info)

2.if流量控制
1.单分支
if 条件 :
满足条件后执行

2.双分支
if 条件 :
            满足条件后执行
else:
             不满足条件执行 

3.多分支
if  条件:
            满足条件后执行
elif 条件:
        上面条件不满足就走这个
elif 条件:
        上面条件不满足就走这个
elif  条件:
         上面条件不满足就走这个 

3.while循环
while 条件:
执行代码....

eg:
count=0
while count<=100 :
print("loop",cout)
count +=1
print("loop end")

循环的终止语句
continue vs break
break用于完全结束一个循环,跳出循环体执行循环后面的语句;
continue是终止本次循环,接着还执行后面的循环;

while后面的else 作用是指,当while循环正常执行完,中间没有被break终止时,就会执行else后面的语句

可用来检查程序中途是不是被break了

4.列表
列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行增删改查;
name=['a','b','c','d','f','d','g']

        1.查询元素
        name[0]通过索引找到第一个元素
        name[-1]z找最后一个元素
        name[-2]倒数第二个元素
        name.index('d')返回指定元素的索引值,从左右查找,找到第一个匹配的;
        name.count('d')统计元素d的个数;

        2.切片
        name[0:3]  取0-2个元素,即前三个,切片顾头不顾尾
        name[:3]取前三个
        name[-5:]取后五个 
        name[::]取全部元素
        name[:5:2] 取1 、3、5个;  2为步长;每隔2个取一个元素;

        3.增加
        name.append(‘haha’)  末尾追加一个元素haha

        4.插入
        name.insert(0,'abd')  位置0插入元素abd
        name.insert(2,'aa') 位置2插入元素aa

        5.修改
        n[3] = 'hello'     第四个元素修改为hello

        6.删除
        name.pop   删除最后一个
        name.remove('a') 删除元素a,从左往右,删除第一个元素a
        del name[2]  删除索引为2的元素;(del是一个全局的删除命令,可以删除所有,包括变量等)
        del name[2:4] 删除索引2-3的元素

        7.循环
        L2 = ['a','b','c','d','e','f']

        for i in L2 :
                    print(i) 
        将L2列表中的每个值赋值给变量i,打印出每个i的值;

        range(10)     生成一个0到9的列表

        for i in range(10) 

        8.排序
        name.sort()  对name按照ASCII从大到小进行排序,排序后再查看列表;
        name
        name.reverse()  将列表name倒叙

        9.合并列表
        name+name1      将name和name1列表合并
        name.extend(name1) 将列表name扩展

        10.清空列表
        name.clear()   清空name列表

        11.name1=name
        name1=name 将name赋值给name1,name列表修改后,name1的数据会同步

        12.copy
        name1=name.copy()  #浅copy
        import copy #深copy,导入python的工具箱
        name1=name.deepcopy(name)

        13.enumerate(name)  #枚举

5.字典
dic={'k1':'v1','k2':'v2' }
修改
dic['k1']=2 #修改
dic['k3']='v3' #增加

猜你喜欢

转载自blog.51cto.com/8940119/2132933