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)

  • 相关阅读:
    解决xcode5升级后,Undefined symbols for architecture arm64:问题
    第8章 Foundation Kit介绍
    app 之间发送文件 ios
    iphone怎么检测屏幕是否被点亮 (用UIApplication的Delegate)
    CRM下载对象一直处于Wait状态的原因
    错误消息Customer classification does not exist when downloading
    How to resolve error message Distribution channel is not allowed for sales
    ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼
    有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中
    SAP GUI和Windows注册表
  • 原文地址:https://www.cnblogs.com/Sumomo0516/p/6437663.html
Copyright © 2011-2022 走看看