zoukankan      html  css  js  c++  java
  • day03--变量与基本数据类型

    一、变量的定义及用途


    1. 变量的定义:变量是指变化的量,量是指事物的状态,变量是用来记录事物变化的状态
    2. 变量的用途:变量是用来记录事物的状态,这个状态是可以变化的
      name = 'egon'
      age = 18
      sex = 'male'
      height = 1.87

    二、变量的命名规范及方式


    变量的命名规范要求做到见名知其意,在格式上有如下几点要求:

    1、变量名只能是字母、数字、下划线的任意组合
    2、变量名的第一个字符不嫩是数字
    3、不能使用关键字作为变量名。常用的关键字如下:
    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
    4、

     变量的命名方式:

    • 驼峰命名法:
      AgeOfEgon = 18
      SexOfEgon = 'male'
    • 纯小写加下划线:
      age_of_egon = 18
      sex_of_egon = 'male'
      在Python中推荐使用这种方法来命名变量

    变量的三大特征:

    1. id
      id 表示变量在内存中的唯一编号
      >>> m = 10
      >>> n = 12
      >>> print(id(m),id(n))
      140717494736832 140717494736896
    2. type
      type表示变量的类型
      >>> age = 18
      >>> name = 'egon'
      >>> height = 1.87
      >>> print(type(age),type(name),type(height))
      <class 'int'> <class 'str'> <class 'float'>
      >>> 
    3. value
      value 表示变量的值

    id 相同,值一定相同;值相同,id不一定相同

    >>> obj_1 = 'The age of egon'
    >>> obj_2 = 'The age of egon'
    >>> print(id(obj_1),id(obj_2))
    2835653209648 2835653582000
    >>> 
    
    
    >>> m = 12
    >>> n = 12
    >>> m is n
    True
    >>> 
    
    涉及到小整数池的概念
    Python:-6~256
    
    if obj_1 is obj_2 and obj_1 == obj_2:
        print(True)

     常量:常量是指在程序运行的过程中不会发生改变的量

    pi = 3.1415926

    在Python中约定俗成,全部大写的变量名表示常量

    三、垃圾回收机制


    垃圾回收机制(GC)是Python解释器自带的一种用于回收不可用变量值所占用内存空间的机制

    Python的GC模块通过使用引用计数(变量值被变量名关联的次数)来跟踪和回收垃圾

    可以通过del 变量名来解除变量名与变量值的联系

    四、基本数据类型


    1. 数字(int、float)
    a = 5.026
    b = 5.000
     
    #保留两位小数方法
    #1、round(num,n)
    print(round(a,2))   #5.03,这个得到的是float类型
    
    #2、%方法
    print(float('%.2f' % a))   #5.03,这个得到的是float类型
    
    #3、
    print('{x:.2f}'.format(x=a))   #5.03,这个得的是str

    1. 字符串
    2. 列表
    3. 字典
    4. 元组
    5. 布尔值
      age = 18
      height = 1.87
      name = 'egon'
      info_list = ['egon',18,1.87]
      info_dict = {'name':'egon','age':18,'height':1.87}
      tuple = (1,3,5,7,9)
      True/False(多用于条件判断)

    五、作业


    1. 认真读题,选择合适的类型加以存储
      #1、病毒程序需要定期将监控到的数据写入日志文件,请记录下日志文件路径C:acadhsvc.dll.system32,方便后期处理
      path_of_logfile = r'C:acadhsvc.dll.system32'
      #2、病毒程序在上传文件时,发送的报头数据里需要包含文件信息:文件名a.txt、大小360,请记录下文件信息
      name_of_file = 'a.txt'
      size_of_file = 360 #3、程序运行过程中有一段错误日志需要记录下来,错误日志为"上传文件失败" msg_of_errlog = '上传文件失败' #4、假设我收到一条信息要记录,信息为中病毒客户端的信息"[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据" info_of_client = '[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据' #5、把服务端ip地址存放下来,ip地址为10.0.10.11 address_of_ip = '10.0.10.11' #6、病毒程序需要每隔3秒才运行一次,请记录下这个时间间隔
      time_of_execute = 3
    2. 嵌套取值操作
      #1、students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]]
      请取出第一个学生的第一个爱好
      hobby_of_first = students_info[0][2][0]
      
      #2、针对字典
      info={
          'name':'egon',
          'hobbies':['play','sleep'],
          'company_info':{
              'name':'Oldboy',
              'type':'education',
              'emp_num':40,
          }
      }
      请取出取公司名
      name_of_company = info['company_info']['name']
      or
      name_of_compay = info.get('company_info').get('name')
      
      #3、针对下述类型
      students=[
          {'name':'alex','age':38,'hobbies':['play','sleep']},
          {'name':'egon','age':18,'hobbies':['read','sleep']},
          {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']},
      ]
      取第二个学生的第二个爱好
      
      hobby_of_student = students[1]['hobbies'][1]
      or
      hobby_od_student = students[1].get('hobbies')[1]
    3. 附加题
      功能需求:
      #1、输入账号密码完成验证,验证通过后输出"登录成功"
      #2、可以登录不同的用户
      #3、同一账号输错三次锁定(附加功能,在程序一直运行的情况下,一旦锁定,则锁定5分钟后自动解锁)
      #扩展需求:在3的基础上,完成用户一旦锁定,无论程序是否关闭,都锁定5分钟
      
      思路:1、利用文件来存储被锁定的账号
               2、利用时间戳记录账号被锁定的时间
               3、使用定时器来完成5分锁定
      
      参考代码如下:
      #!/usr/bin/env python
      #-*- coding:utf-8 -*-
      #project:login
      #author:surpass_w
      
      import os
      import sys
      import time
      import subprocess
      from threading import Timer
      
      user_info = [{'account':'egon','password':'success888'},
                   {'account':'alex','password':'ok666abc'},
                   {'account':'surpass','password':'svipaa1'}]
      err_record = [{'account':'egon','record':0},
                    {'account':'alex','record':0},
                    {'account':'surpass','record':0}]
      lock_file = 'block_account.txt'
      
      class Login:
          def __init__(self,user_dict,err_dict,interval):
              self.user_dict = user_dict
              self.err_dict = err_dict
              self.interval = interval
      
          def login(self):
              count = 0
              self.del_lock_account = []
              while True:
                  try:
                      f = open(lock_file,'r+')
                  except:
                      cmd = 'touch %s
      chmod +x %s' % (lock_file,lock_file)
                      subprocess.check_call(cmd,shell=True)
                      f = open(lock_file,'r+')
                  lock_user_list = f.readlines()
                  self.lock_account_dict = {lock_user_list[i].replace('
      ','').split(' ')[0]
                                       :lock_user_list[i].replace('
      ','').split(' ')[1]
                                        for i in range(len(lock_user_list))}
                  username = input('Please enter your account >>>:')
                  if username in self.lock_account_dict.keys():
                      print('The account [%s] has been locked' % username)
                  elif username in self.user_dict.keys():
                      password = input('Please enter your password >>>:')
                      if password == self.user_dict.get(username):
                          print('Welcome %s, a successful login!' % username)
                          sys.exit(0)
                      else:
                          self.err_dict[username] += 1
                          if self.err_dict[username] == 3:
                              lock_time = int(time.time())
                              self.del_lock_account.append(username)
                              f.write(username+' '+str(lock_time)+'
      ')
                              self.err_dict[username] = 0
                              print('The account [%s] is about to be locked' % username)
                              self.t = Timer(self.interval,self.update_lock_file)
                              self.t.start()
                          else:
                              print('Wrong password!
      You have 3 chances in all, remain %d.'
                                     %(3-self.err_dict[username]))
                  else:
                      count += 1
                      if count == 3:
                          print('Enter invalid account 3 times, the system is shutdown!')
                          sys.exit(0)
                      else:
                          print('The account [%s] does not exist!
      Please reenter, you have 3 chances'+
                                 'in all, remain %d.' % (3-count))
                  f.close()
      
          def update_lock_file(self):
              for i in range(len(self.del_lock_account)):
                  if self.del_lock_account[i] in self.lock_account_dict.keys():
                      local_machine_time = int(time.time())
                      if (int(self.lock_account_dict.get(self.del_lock_account[i]))
                          +300) == local_machine_time:
                          del self.lock_account_dict[self.del_lock_account[i]]
              f1 = open(lock_file,'w')
              for k,v in self.lock_account_dict.items():
                  f1.write(k+' '+v+'
      ')
              f1.close()
      
      def main():
          user_dict = {user_info[i].get('account'):user_info[i].get('password')
                        for i in range(len(user_info))}
          err_dict = {err_record[j].get('account'):err_record[j].get('record')
                       for j in range(len(err_record))}
          interval = 300
          l = Login(user_dict,err_dict,interval)
          l.login()
      
      if __name__ == '__main__':
          main()
      View Code
  • 相关阅读:
    【报错】引入jar包import org.apache.commons.codec.digest.DigestUtils 报错,jar不存在
    【spring data jpa】使用jpa的@Query,自己写的语句,报错:org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'status' cannot be found on null
    【java】在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException
    【java】java中直接根据Date 获取明天的时间
    【java】处理时间字段 在数据库查询的时候只想要年月日,不想要时分秒 ,java中设置时间类型为年月日,java中设置Date中的时分秒为00.00.000
    【spring data jpa】 spring data jpa 中 时间格式设置between and 查询
    【mybatis】mybatis 中select 查询 select * 查询出来的数据,字段值带不出来 数据不全
    【spring mvc】spring mvc POST方式接收单个字符串参数,不加注解,接收到的值为null,加上@RequestBody,接收到{"uid":"品牌分类大”},加上@RequestParam报错 ---- GET方式接收单个参数的方法
    Centos7安装配置tomcat 9并设置自动启动
    centos7 yum安装配置redis 并设置密码
  • 原文地址:https://www.cnblogs.com/surpass123/p/12410310.html
Copyright © 2011-2022 走看看