zoukankan      html  css  js  c++  java
  • python开发学习笔记之一(用户登录接口)

       

    第一章 基本语法

    第一个程序hello world:

     print(‘hello world’)

    变量 (Variable;var):

     用来把程序运算的中间结果临时存储在内存中,方便后续的调用

     <变量名> = <变量内容>

    name = 'wilbur0402'

     变量名命名规则:

     变量名只能是字母、数字、下划线的任意组合

    变量名第一个字符不能为数字
    关键字不能声明为变量名
     
    变量命名习惯:
    驼峰体:单词首字母大写
    下划线:单词间用下划线

     不建议的命名:

     汉字  拼音  词不达意 过长

    ps:当一个变量b指向另一个变量a时,实际上是指向那个变量a所指向的内容

    a = 1
    b = a
    >>> b = 1
     
    a = 3
    >>> b = 1

     常量:

    不变的量就是常量,约定俗成的,变量名全部大写就是常量

     读取用户输入:

     input( )函数,输入的内容数据类型默认是字符串

     当执行到input()时,等待用户输入内容

     注释:

    #这是一行注释
    '''
    这是多行注释,
    用三个单引号。
    '''
    数据类型: 
    python解释器可以自动识别输入的数据类型,除非进行强制数据类型转换
    ps:type( )返回当前输入的数据类型
     
    基本类型:
    数字(number):整型(int)、长整型(long)、浮点型(float)、复数
    字符串(string):文本(str)、字节(bytes)
    布尔(bool):True、False
    数据集:
    表(list)、元组(tuple)、字典(dict)、集合(set)
    字符串格式化输出:
    # %s为占位符  另外还有%d %f
    # s = string
    # d = digit
    # f = float
    info = '''
    --------- info of %s ---------
    Name:        %s
    Age:         %s
    Job:         %s
    Hometown:    %s
    ------------- end ------------
    '''%(name,name,age,job,hometown)
    运算符号:
     
    算数运算:
     
    比较运算:
     
    赋值运算:
     
    逻辑运算:
     
    成员运算:
     
    身份运算:
     
    位运算:
     
    if/elif/else多分支运算:
    if 条件:
        。。。
    elif 条件:
        。。。
    elif 条件:
        。。。
    else :
         。。。

     多分支练习题:

    设计匹配成绩程序,成绩分ABCDE五个等级,与分数对应关系如下:
    A 90-100
    B 80-89
    C 60-79
    D 40-59
    E  0-39
     
     1 mark = int(input('pleaese input your mark:'))
     2  
     3 if mark>100 4     print('分数不能大于100')
     5  
     6 elif mark >= 90:
     7     print('your mark level is A')
     8  
     9 elif mark >= 80:
    10     print('your mark level is B')
    11  
    12 elif mark >=60:
    13     print('your mark level is C')
    14  
    15 elif mark >=40:
    16     print('your mark level is D')
    17  
    18 elif mark >=0:
    19     print('your mark level is E')
    20 else:
    21     print('分数不能是负数')
    22  
     
    while循环:
           while 条件:
     
    
                 执行代码。。。
     
     
    循环练习:
    #循环打印1-100
    count = 0
    while count <= 100:
        print('loop',count)
        count += 1
    print('------loop end---------')
     
    #只打印偶数
    count = 0
    while count <= 100:
       if count%2 == 0:
            print('loop',count)
        count += 1
    print('------loop end---------')
    #不打印50,在60-80时打印平方
    count = 0
    while count <= 100:
    if count == 50:
    pass
    elif count >= 60 and count <=80:
    print(count*count)
    else:
    print('loop',count)
    count += 1
    print('------loop end---------')
    死循环:
     
    
        while True:
     
    
            执行代码
     
    循环终止:
    break  / continue
    break:完全终止循环
    continue: 终止本次循环
     1 #猜年龄
     2 age = 21
     3 count = 0
     4 while count <3:
     5     guess = int(input('your guess:'))
     6         count += 1
     7         if guess < 0:
     8             print('输入错误!')
     9         elif guess > age:
    10             print('猜得太大了!')
    11         elif guess < age:
    12             print('猜得太小了!')
    13         else:
    14             print('猜对了!')
    15             break
    16         if count == 3:
    17             ctn = input('想继续吗?(Y/N)')
    18             if ctn =='Y':
    19             count=0
    while...else语句:
    当while正常执行完,就会执行else语句
    (当while非正常执行,就不会执行else语句)

    第一次作业是做用户登录接口:

    作业要求:
    基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
    第一次全功能实现的代码:
    # author:wilbur0402
    userdata = {
        'zhangsan':'aaa111',
        'lisi':'bbb222',
        'wangwu':'ccc333'
    }
    
    count = 0
    f = open('黑名单','a+',encoding='utf-8')#打开文件
    f.seek(0)#重置文件指针位置
    data = f.read()
    
    while True:
    #三次循环体
         user = input('please input your username:')
         ban = user#为黑名单格式化保留裕量
    
         if  ban  not in data:
         #确认用户输入不在黑名单内
             passwd = input('please input your password:')
             count += 1
    
             if count < 3:
    
                   if user in userdata and passwd == userdata[user]:
                   #判断用户输入账号密码是否对应
                         print('welcome %s back!' % user)
                         break
    
                   else:
                      print('invalid username or password!')
    
             else:
             #尝试三次输入错误后将用户输入账号写入黑名单并跳出循环
                   print('you inputed invalid username or password 3 times!')
    
                   if user in userdata and user not in data:
                     f.write('%s
    '%user)
    
                   break
    
         elif user == '':
         #过滤空字符输入
             print('invalid username!')
    
         else:
         #当用户输入在黑名单内时返回封禁信息
             print('your account is banned!')
             break

    这里我并没有用需求中所提示的用列表来保存用户信息,而是使用了字典

    总结:

    在debug时,遇到了空字符被ban的bug,困惑了好久,经过我的深思熟虑(?),我忘了可以用多分支来解决空字符输入问题。

    经过我的测试,可以实现全部功能。

    瞎聊几句:

    说实话,这个作业我做了不下五次,但是每次都会遇到问题,而且遇到的问题还总是不一样的,让我十分的难受,不过总算在刘伟同学的帮助下,搞定了这些问题。

    经过老师的批改,我应该注意一下问题:

    缩进标准为四个空格、注释的#应该有一个空格。

      

  • 相关阅读:
    android ImageSwitcher
    andriod Spinner
    andriod RadioButton
    anriod TabHost
    给大学生的几条良心建议
    6月最新地铁站周边二手房价格出炉
    机器学习 101 Mahout 简介 建立一个推荐引擎 使用 Mahout 实现集群 使用 Mahout 实现内容分类 结束语 下载资源
    Vim设置colorscheme小技巧
    2017年阳光私募基金一季度报告
    实用的 atom 插件
  • 原文地址:https://www.cnblogs.com/wilbur0402/p/9346637.html
Copyright © 2011-2022 走看看