zoukankan      html  css  js  c++  java
  • 03 Python基础

    1.输出和输入

    (1)print打印

    Python 提供print方法来打印信息

    输入:

    print ("hello python")

    调用print方法,用户双引号(" ")把需要打印的信息引起来就被输出了。

    输入:

    name = "zhangsan"

    print "Hello %s, nice to meet you!" %name

    %s(string)只能打印字符串,如果想打印数字,那么就要使用%ddata

    输入:

    age = 27

    print "You are %d!" %age

    如果不知道自己要打印的是什么类型的数据,那么可以用%r来表示

    输入:

    n = 100

    print "Your print is %r." %n

    n = "abc"

    print "Your print is %r." %n

    (2)input输入

    input_demo.py

    n = raw_input("Enter any content: ")
    print "Your input is %s" %n

    使用input()方法比较矫情,输入字符串一定要加引号,如果不加会报错,因此我们可以使用raw_input()方法,用户输入什么就是什么。

    1. 引号与注释

      Python中不区分单引号(' ')与双引号(" "),单双引号都可以表示一个字符串。

      print "hello"

      print 'world'

      可以嵌套使用,但不能交叉使用。

      Python的单注释用井号(#)表示。

      多行注释用三对引号表示,不分单、双引号。

      4.分支与循环

      (1)通过if语句来实现分支判断,一般语法为if...else...

      输入:

      a = 2

      b = 3

      if a > b:

          print("a max!")

      else:

          print("b max!")

      Pythonif语句通过"=="运算符判断相等,"!="判断不相等,"in"和"not in"表示包含的关系,还可以进行布尔类型的判断。
      输入:
      student = "xiaoming"
      
      if student == "xiaoming":
      
          print("xiaoming, you are on duty today.")
      
      else:
      
          print("Please call xiaoming to duty.")
      

      输入:
      hi = "hello world"
      
      if "hello" in hi:
      
          print("Contained")
      
      else:
      
          print("Not contained")
      

      输入:
      a = True
      
      if a:
      
          print("a is True")
      
      else:
      
          print("a is not True")
      

      if_demo.py
      

      # coding=utf-8
      results = 72
      if results >= 90:
      print('优秀')
      elif results >= 70:
      print('良好')
      elif results >= 60:
      print('及格')
      else:
      print('不及格')

    2. 循环一般用for语句。

      输入:

      for i in "Hello, world!":

          print(i)

      对字典进行遍历,输入:

      fruits = ['banana', 'apple', 'mango']

      for fruit in fruits:

          print(fruit)

      循环数字要借助range()函数。

      输入:

      for i in range(5):

          print(i)

      range(start,end,scan):start表示开始的位置,end表示结束的位置,scan表示每一次循环的步长。

      输入:

      for i in range(1, 10, 2):

          print(i)

      4.数组与字典

      (1)数组

      用中括号[]表示,里面的每一个元素用逗号(, )隔开。数组下标从0开始。

      输入:

      lists = [1, 2, 3, 'a', 5]

      lists

      lists[0]

      lists[4]

      lists[4] = 'b'

      lists[4]

      lists.append('c')

      lists

    3. 字典

      用花括号{}表示,里面的元素是成对出现的,一个key对应一个value;一对元素用冒号(: )分割;不同元素用逗号(,)分开。

      输入:

      dicts={"username": "zhangsan", 'password': 123456}

      dicts.keys()

      dicts.values()

      ['zhangsan', 123456]

      dicts.items()

      [('username', 'zhangsan'), ('password', 123456)]

      for k, v in dicts.items():

          print("dicts keys is %r " %k)

          print("dicts values is %r " %v)

      字典里的每一对元素准确的来说是键值对,一个键(key)对应一个值(value)Keys()函数可以输出所有键的值;values()函数可以输出所有值的值;items()函数输出一对键值对的值。

      5.函数与类、方法

      (1)函数

      python当中通过def关键字来定义函数,下面来定义一个函数.

      输入:

      def add(a, b):

          print(a + b)

      add(3, 5)

      创建一个add(),这个函数接收两个参数ab,通过print打印a+b的结果。通常情况下,函数不会直接打印结果,而是将处理结果通过return关键字返回。

      输入:

      def add(a, b):

          return a + b

      add(3, 5)

      有时候调用add()函数的时候不想传参,可以为函数设置默认参数。

      输入:

      def add(a = 6, b = 7):

          return a + b

      add()

      add(3, 5)

      (2)类与方法

      Python中用class关键字来创建类。

      class_test1.py

      class A(object):
      def add(self, a, b):
      return a + b

      count = A()
      print count.add(3, 5)

      创建了一个A()类,在类下面创建了一个add()方法。方法创建同样适用关键字def,唯一不同的是方法必须有一个且必须是第一默认参数self,但是这个参数不用传值。

      一般在创建类时首先会声明初始化方法__int__()

      class_test2.py

      class A():
      def __init__(self, a, b):
      self.a = int(a)
      self.b = int(b)
      def add(self):
      return self.a + self.b

      count = A('4', 5)
      print count.add()

      调用A类时首先执行__int__()方法,所以需要对其进行传参。初始化就是将输入的参数类型转化为int类型。add()方法直接对初始化得到的self.aself.b进行计算,因此在调用A类下add()方法时不需要再进行传参。

      类的继承——class_test3.py

      class A():
      def add(self, a, b):
      return a + b

      class B(A):
      def sub(self, a, b):
      return a - b

      print B().add(4, 5)

      因为B类继承了A类,所以B类也拥有了add()方法,可以直接通过B类调用add()方法

      6.模组

      (1)引用模块

      Python语言中通过import...from...import...的方式引用模块,下面引用time模块。

      imp1.py

      import time
      print time.ctime()

       

      如果只用到time模块下面的ctime()方法,可以这样使用:

      imp2.py

      from time import ctime
      print ctime()

       

      [python] view plain copy CODE上查看代码片派生到我的代码片

      from time import ctime

      print ctime()

      一次性把time模块下面的所有方法都引进来:

      imp3.py

      #coding=utf-8
      from time import *
      print ctime()
      print "休息一两秒"
      sleep(2)
      print ctime()

      (2)模块调用

      我们可以自己创建一个模块,然后通过另一个程序调用。

      创建一个目录(project1),在目录下面创建两个文件:pub.pycount.py,在pub.py中创建一个add()函数。

      project1pub.py

      def add(a, b):
      return a + b

      project1count.py

      from pub import add
      print add(4, 5)

      这样就实现了跨文件的函数调用。

      知识延伸:

      project1目录下面多了一个pub.pyc文件,pyc文件是一种二进制文件,是由py文件经过编译后生成的文件,是一种byte codepy文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,由python的虚拟机来执行。

      (3)跨目录模块调用

      调用文件和被调用的文件不在同一目录下面,调用目录如下:

      ----project2/model/pub.py

      ----project2/count.py

      project2count.py

      import sys
      sys.path.append('.model')
      from model import pub
      print pub.add(3, 5)

      调用sys模块,把model目录通过append()方法追加到系统环境变量path下面。注意,".model"是一个相对路径,如果pub.py在别的目录下面,就需要用绝对路径了,如:append(r"D:\project\model")
      

      model目录下面创建一个__init__.py的文件,内容可以为空。这个文件告诉python model是一个可以被调用的模块。现在就可以正常运行了。

      运行count.py

      (4)进一步讨论跨目录模块调用

      下面进行多个文件跨目录之间的调用。在project3目录下放入test.pyproject3model子目录下面放入count.pynew_count.py

      model/count.py

      class A():
      def add(self, a, b):
      return a + b

      model/new_count.py

      from count import A
      class B(A):
      def sub(self,a, b):
      return a - b

      resule = B().add(2, 5)
      print resule

      运行new_count.py

      model目录下面创建一个为空的__init__.py的文件。

      test.py

      import sys
      sys.path.append('.model')
      from model import new_count

      test = new_count.B()
      test.add(2, 5)

      运行输出如下:

      7.异常

      Python用异常对象(exception object)来表示异常情况。遇到错误后,会引发异常。如果异常对象未被处理或捕捉,程序会用所谓的回溯(Traceback,一种错误信息)终止执行。

    4. 认识异常

      Python提供try..except..语句来接收这个异常。

      输入:open("abc.txt",'r')

      抛出一个IOError异常。

      abnormal1.py

      # coding=utf-8
      try:
      open("abc.txt",'r')
      except IOError:
      print "异常了!"

      abnormal2.py

      # coding=utf-8
      try:
      print(aa)
      except IOError:
      print "异常了!"

      运行报错:

      抛出一个NameError异常,如下修改该程序。

      abnormal3.py

      # coding=utf-8
      try:
      print(aa)
      except NameError:
      print "这是一个name异常!"

      python中所有的异常都继承Exception,所以可以用它来接收所有的异常。

      abnormal4.py

      # coding=utf-8
      try:
      open("abc.txt",'r')
      except Exception:
      print "异常了!"

      python2.5版本之后,所有异常类有了新的基类BaseExceptionException同样也继承BaseException,所以我们也可以使用BaseException来接收所有的异常。

      Python直接输出异常信息:

      abnormal5.py

      # coding=utf-8
      try:
      open("abc.txt",'r')
      print(aa)
      except BaseException:
      print "异常了

      BaseException后面可以定义msg变量用于接收异常信息,通过print将其打印出来:

      abnormal6.py

      # coding=utf-8
      try:
      open("abc.txt",'r')
      print(aa)
      except BaseException as msg:
      print msg

      Python中常见的异常:

      BaseException 新的所有异常类的基类

      Exception 所有异常类的基类,但继承BaseException

      AssertionError assert 语句失败

      AttributeError 试图访问一个对象没有属性

      IOError 输入输出异常,试图打一个不存的文件(包括其它情况)时引起

      NameError 使用一个还未赋值对象的变量

      IndexError 在使用序列中不存在的所引进引发

      IndentationError 语法错误,代码没有正确的对齐

      KeyboardInterrupt Ctrl+C 被按下,程序被强行终止

      TypeError 传入的对象类型与要求不符

      SyntaxError Python 代码逻辑语法出错,不能执行

      (2)更多异常用法

      try...except else 配合使用:

      abnormal7.py

      # coding=utf-8
      try:
      print(aa)
      except Exception as msg:
      print msg
      else:
      print ("没有异常")

      else语句只有在没有异常的情况下才会被执行,但是有些情况下不管是否出现异常这些操作都能被执行,比如文件的关闭,所得释放,把数据库连接返还给连接池等操作。我们可以使用try…finally..语句来完成。

      abnormal8.py

      # coding=utf-8
      try:
      print(aa)
      except Exception as e:
      print e
      finally:
      print ("不管是否异常,我都会执行。")

      修改代码,定义变量aa,如下:

      abnormal9.py

      # coding=utf-8
      try:
      aa = "异常测试:"
      print
      (aa)
      except Exception as e:
      print e
      finally:
      print ("不管是否异常,我都会执行。")

      (3)抛出异常

      Python中提供raise方法来抛出一个异常。

      abnormal10.py

      # coding=utf-8
      from random import randint
      #生成一个1到9之间的随机整数
      number = randint(1,9)

      if number % 2 == 0:
      raise NameError("%d is even" % number)
      else:
      raise NameError("%d is odd" % number)

  • 相关阅读:
    VS2010中连接sdf数据库的字符串 Kevin
    找不到请求的 .Net Framework Data Provider。可能没有安装 Kevin
    MVC项目中找不到 DbContext 命名空间 Kevin
    Something About Assert()——C#中的断言 Kevin
    Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction Kevin
    .NET 中的双问号 Kevin
    苹果公司一道面试题 Kevin
    The diffrence between TempData and ViewBag and ViewData Kevin
    GRUB整体分析
    忠诚的成本看房产大鳄冯仑如何处理看待忠诚
  • 原文地址:https://www.cnblogs.com/Sumomo0516/p/6437663.html
Copyright © 2011-2022 走看看