Python基础篇:从0开始学python

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础篇:从0开始学python相关的知识,希望对你有一定的参考价值。

目录

  1. 基本数据类型
  2. 用户交互input的使用
  3. 主文件的概念和用途
  4. 对象
  5. 整形Int的内置方法
  6. 字符串Str的内置方法
  7. 条件语句和循环
  8. 未完待续

 

  1. 基本数据类型

    • 数字【整型int/long,浮点型float/complex】

      • Python3已经把int和long整合了, 相互转化会自动进行

      • int在32bit机器32位宽,64bit机器64bit宽。

      • i=1 ; j=int(10)

    • 字符串string

      • myname="ben" ; yourname=str("Jin")
    • 布尔boolean

      • True或者False  分别对应1和0  注意大小写

      • bool(0);bool(42);bool(‘this is a test‘)

    • 列表list

      • L=[123,’abc’,1.23]

      • L=list(123,’abc’,1.23)

    • 元组tuple

      • T=(1,2,3)

      • T=tuple(L)

    • 字典dict

      • D={‘food’:’Spam’, ‘quantity’:4, ‘color’:’pink’}

      • D=dict(name=’Bob’,age=’42’)

    • 集合set

      • S=set([1,2,3])

    • 日期date

      • import datetime; d=datetime.datetime(2016,11,05)

  2. 用户交互input

    • 应用有时候需要和用户进行交互才能继续进行,比如用户的登陆。input的使用就是这种场景的关键
    • 场景:用户进行登陆时需要输入用户名和密码,如果用户三次登陆失败则账号被锁定。

      开发:需要两个基本的文件:1.用户账号密码 2.黑名单

    • #!/usr/bin/env python3
      
      ##登陆代码
      
      locked=open("locked.dat","r")
      logon=open("logins.dat","r")
      
      
      print("欢迎来到xxx,请输入用户名和密码!")
      username=input("请输入用户名:")
      for line in locked:
          if(line.strip()==username):
              print("账户已经被锁定!如需解锁请联系管理员!")
              locked.close()
              exit(0)
      
      passwd=input("请输入密码:")
      
      
      ##验证登陆密码
      
      for time in range(3):
          time+=1
          if(time==3):
              print("三次机会已用完,账户被锁定,如需解锁请联系管理员!")
              lock=open("locked.dat","a")
              lock.write(username+"\\n")
              lock.close()
              logon.close()
              exit(0)
      
      
          for line in logon:
              if(username==line.strip().split()[0] and passwd==line.strip().split()[1]):
                  print("登陆成功!")
                  logon.close()
                  exit(0)
      
          passwd=input("请第"+str(time+1)+"次输入密码:")
  3. 主文件

    • 场景: 当在import某个python文件之后 但是并不想执行该文件的某些部分。

      解决: python内置变量__name__, 来代表模块的名字。如果该模块是被导入的,__name__的值为模块名字,如果该模块是被直接执行,__name__的值为‘__main__‘

      1. 定义一个模块model.py,里面含有一个 if(__name__==‘__main__‘), 运行时候会运行后面的main方法

      #! /usr/bin/env python3
      
      
      print("这里是model")
      
      def main():
          print("这里是model.main")
      def test():
          print("这里是model.test")
      
      if(__name__==__main__):
          main()
      
      =================================
      返回结果:
      这里是model
      这里是model.main

      2. 定义一个mypython.py,引用model.py,运行的时候并没有运行main

      #! /usr/bin/env python3
      
      import model
      
      model.test()
      
      =====================
      返回结果
      这里是model
      这里是model.test

      大多时候使用 __name__==‘__main__‘ 来做测试,把测试的代码放在这里在别的代码引用次模块时候测试代码不会运行。

  4. 对象

    • python中一切都是对象。 对象是通过类来实现的。

      当声明变量病赋值实际上是通过类来创建一个对象在内存中,并赋值。每一个对象都拥有很多的方法,如果这些方法是绑定在对象上的那么会有很多很多重复的方法被存下来,浪费内存空间。所以我们在创建对象的时候并没有创建那么多重复的方法绑定在对象上,而只是讲这些方法提取出来放在一个地方,对象上只是存着这个地方的地址。而这个地方就是我们定义的类。

      技术分享

  5. 整形Int的内置方法

    • Int是整形数据类型的一种。int类型的变量可以通过i=5或者i=int(5)两种方式。

      i=5
      print("i的值是%d,类型是%s" %(i,type(i)))
      
      
      j=int(10)
      print("j的值是%d,类型是%s" %(j,type(j)))
      
      =================================
      返回结果:
      i的值是5,类型是<class int>
      j的值是10,类型是<class int>

       

    • int类型的对象也有着自己的方法,(方法存在int类中存储)

      1. bit_length  二进制的最小位数的长度

      i=5 ##二进制是101
      print(bin(i))
      print(i.bit_length())
      
      =======================
      返回结果:
      0b101
      3

       

      2.__abs__ 绝对值 等同内置方法 abs()

      i=-5
      print(i.__abs__())
      print(abs(i))
      ================
      返回结果
      5
      5

       

      3. __add__ 加法  等同于+

      i=-5
      print(i.__add__(6))
      print(i+6)
      =======================
      返回结果
      1
      1

       

      4. __and__ 等同于&

      i=2
      j=1
      print(i.__and__(j))
      print(i&j)
      ====================
      返回结果
      0
      0

       

      5. __bool__ 转换成布尔值 0是False 其他的都为True

      i=-2
      j=-1
      k=0
      l=1
      m=2
      n=1.2
      print(i.__bool__())
      print(j.__bool__())
      print(k.__bool__())
      print(l.__bool__())
      print(m.__bool__())
      print(n.__bool__())
      =======================
      返回结果
      True
      True
      False
      True
      True
      True

       

      6.__divmod__ 商和余数 等同于/和%

      k=95
      l=10
      print(k.__divmod__(l))
      ===================
      返回结果:(9,5)

       

      7.__eq__(=), __ge__(>=),__gt__(>),__le__(<=),__lt__(<)

      8.__floot__   转成floot类型

      9.__floordiv__ 地板除 等同于//  是除法取整数

      k=95
      l=10
      print(k/l)
      print(k.__floordiv__(l))
      ========================
      返回结果:
      9.5
      9

       

      10.__int__ 构造方法 就是在类初始化时候用:

      class Person(object):
        def __init__(self):
            self.name = Jim
            self.age = 23
      if __name__ == __main__:
         person = Person()
         print person.name
         print person.age

       

  6. 字符串str的内置方法

    • 字符串是很重要的一种数据类型,今天我们就一起来看str的内在。

      1. 字符串的声明

      myname="ben"
      yourname=str("Jin")
      
      print("myname的值是%s,类型为%s" %(myname,type(myname)))
      print("yourname的值是%s,内部成员为%s" %(yourname,dir(myname)))
      ==========================================
      返回结果:
      myname的值是ben,类型为<class str>
      yourname的值是Jin,内部成员为[__add__, __class__, __contains__, __delattr__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getitem__, __getnewargs__, __gt__, __hash__, __init__, __iter__, __le__, __len__, __lt__, __mod__, __mul__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __rmod__, __rmul__, __setattr__, __sizeof__, __str__, __subclasshook__, capitalize, casefold, center, count, encode, endswith, expandtabs, find, format, format_map, index, isalnum, isalpha, isdecimal, isdigit, isidentifier, islower, isnumeric, isprintable, isspace, istitle, isupper, join, ljust, lower, lstrip, maketrans, partition, replace, rfind, rindex, rjust, rpartition, rsplit, rstrip, split, splitlines, startswith, strip, swapcase, title, translate, upper, zfill]

       

      2. __init__  构造方法 yourname=str("Jin")生成对象的时候运行的就是__init__

      3.__contains__ 是否包含

      myname="Ben"
      result=myname.__contains__("en")
      print(result)
      ===========================
      返回结果:True

       

      4.__getattribute__ 反射 无条件被调用,通过实例访问属性。如果class中定义了__getattr__(),则__getattr__()不会被调用(除非显示调用或引发AttributeError异常) 

      5. __getitem__  dic[1]实际执行的就是字典的__getitem__方法

      6. capitalize首字母大小写

      myname="ben"
      result=myname.capitalize()
      print(result)
      ===================================
      运行结果
      Ben

       

      7. casefold 跟lower类似,讲字符串变成小写,不过不只是针对ASCII,也可以将一些德文之类的变成小写。汉语 & 英语环境下面,继续用 lower()没问题;要处理其它语言且存在大小写情况的时候再用casefold()

      8. center 将字符串居中,并用其他字符包围

      myname="ben"
      result=myname.center(20,"*")
      print(result)
      ===========================
      返回结果:
      ********ben*********

       

      9. count 计算字符串的一部分出现的次数

      myname="benbenben"
      result=myname.count("ben",2,9)
      print(result)
      =========================
      返回结果:2

       

      10. endwith 判断是否以某字符串结尾

      myname="benbenben"
      result=myname.endswith("ben",2,9)
      print(result)
      ==============================
      返回结果: True

       

      11. encode

      myname="陈真"  ##utf8
      result=myname.encode("gbk") ##内部是先转成unicode 然后转成gbk
      print(result)
      =================================
      返回结果:b\\xb3\\xc2\\xd5\\xe6

       

  7. 条件语句和循环

    • 条件语句: if... elif... else

      循环语句: while for

      退出:break continue return exit pass

      应用场景:三级菜单 输入城市序号进入该菜单 输入b返回 输入q退出

      #!/usr/bin/env python3
      
      import os
      import sys
      
      ‘‘‘
      制作一个三级菜单
      山东
         日照
             东港
             岚山
         五莲
      ‘‘‘
      
      def showcd(dir):
          ‘‘‘
          :param dir: 要去的目录
          :return: 返回要去的目录下的列表
          ‘‘‘
      
          if (os.path.exists(dir)):
              dirlist = os.listdir(dir)
              num = 1
              for dirname in dirlist:
                  print("%s.%s" % (num, dirname))
                  num += 1
              print("请输入b返回或者q退出")
              return dirlist
      
      
      dir = os.getcwd()
      dirlist = showcd(dir)
      
      
      while(True):
          city=input("请输入:")
          if(city=="q"):
              exit(0)
          elif(city=="b"):
              dir=os.path.dirname(dir)
              dirlist=showcd(dir)
          elif(os.listdir(dir+"/"+dirlist[int(city)-1])):
              dir=dir+"/"+dirlist[int(city)-1]
              dirlist = showcd(dir)
          else:
              print("已经没有下级城市")

       

 

以上是关于Python基础篇:从0开始学python的主要内容,如果未能解决你的问题,请参考以下文章

数据分析从零开始实战 | 基础篇

写给Python社群的第9课:学一下文件处理,Python基础提高篇

如何从0开始学Python自动化测试

python学习之基础篇

零基础学python第七课,while循环赋值运算符循环嵌套

零基础学python第七课,while循环赋值运算符循环嵌套