zoukankan      html  css  js  c++  java
  • record-07 异常语句处理、面向对象

    #__author: hasee
    #date:  2018/1/13
    
    # 有10个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子
    # 设计一个程序计算最后留下的是原来第几号的那位
    
    # 答案:4
    
    
    # 让10个人围成一圈
    l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    num = 1
    for i in l1:
        if num != 3:  #
            l1.append(i)
        if num > 3:  # 当num超过3时,通过重新赋值变回1
            num = 1
        # print(num) #报数,从1到3
        num = num + 1
        # print(l1)
    
    print(l1[-1])
    
    # 假如有一辆汽车,速度是60km/h,从A地行驶到B地(距离100km),计算耗费的时间
    # 分别以面向过程、面向对象两种不同的编程思想设计程序
    
    
    # 面向过程
    # 1、确定汽车行驶的距离
    d = 300
    # 2、确定汽车的速度
    s = 80
    # 3、利用距离/速度确定耗费的时间
    result = d / s
    # 4、输出计算的结果
    print("%.2f" % result)
    
    
    # 面向对象
    # 1、分析参与的对象-汽车
    # 2、分析对象的行为属性-行驶、数据属性-速度
    # 3、抽象出类,并完成类的定义
    class Car:
        # 类体-行为属性、数据属性
        # 分析数据属性通过哪种变量描述:类变量、对象变量
        # 定义对象变量
        def __init__(self, speed):
            self.s = speed
    
        # 描述行为属性
        def drive(self, distance):
            # 通过距离/速度,反馈耗时
            result = distance / self.s
            print("%.2f" % result)
    
    
    # 4、梳理过程,并明确过程中对象是如何参与的
    c1 = Car(80)
    c1.drive(300)
    
    
    #设计一个程序,能够随机生成一个四位的验证码,验证码中可以出现数字和字母
    
    from random import choice
    
    #A-Z  65-90
    #a-z  97-122
    #print(ord('B'))
    #print(chr(98))
    
    
    s1=''
    for i in range(97,123):
        s1=s1+chr(i)
    print(s1)
    
    for j in range(65,91):
        s1=s1+chr(j)
    print(s1)
    
    for x in range(0,10):
        s1=s1+str(x)
    print(s1)
    
    
    result=''
    for i in range(4):
        result=result+choice(s1)
    
    print(result)
    
    
    #异常处理
    #通过在代码中实现异常处理,能够在程序发生异常时,完成异常的自定义处理
    #通过在代码中实现异常处理,能够在程序发生异常时,让程序继续向下执行
    
    
    #try
    #将可能会在执行期间发生异常的代码,放到try结构体中
    
    #except
    #一旦try结构体中的代码发生异常,可以通过except来捕获异常
    #except关键字后面,可以指定异常类型的名称,代表当前except只处理这种类型的异常
    #在try语句后面可以有多个except,代表同一段代码发生的不同类型的异常分别处理
    #多个except语句执行时,有先后顺序,如果先执行的except捕获到异常,后面的except就不再执行
    #一个except语句后面,可以指定多种异常类型名称(逗号、括号),代表这几种异常按照相同的方式处理
    
    #else
    #代表没有发生异常时,要做的事情
    
    #finally
    #不论是否发生异常,都要做的事情
    
    #raise
    #主动抛出异常,可以作为控制程序执行逻辑的一种特殊方式
    
    print("请输入一个数字:")
    try:
        num=int(input())
        if num<0:
            #print("小于0")
            raise ValueError
        else:
            #print("大于0")
            raise IOError
    except ValueError:
        print("小于0")
    except IOError:
        print("大于0")
    else:
        print(num+1)
    finally:
        print("hello")
    
    print("hello")
    
    
    # 面向过程思想
    # 以事件为中心
    # 梳理事件的解决过程
    # 明确过程中每一环节应该做的工作
    # 明确程序在过程中是如何参与的
    # 通过编写代码将程序应该做的工作实现出来,并最终得到完整的程序
    
    
    # 面向对象思想
    # 以对象为中心
    # 先明确事件的解决过程中有哪些对象参与
    # 梳理在对象参与时,有哪些行为和数据
    # 通过代码来描述对象
    # 梳理事件的过程,并明确对象如何参与
    
    
    class Pen:
        # 类体
        # 数据属性-变量(类变量、对象变量)
        # 类变量  同类对象共有的数据
        # 类变量在类体中,类的方法外定义
        # 类变量在使用时,需要通过类名修饰
    
        # 对象变量 每一个对象特有的数据
        # 对象变量在类体中,类的方法内定义(很多时候是在__init__方法中定义)
        # 对象变量在使用时,需要通过对象名来修饰
    
        num = 0
    
        # __init__在对象被创建时,自动执行
        # __init__方法更多的用于对对象做初始化处理
        def __init__(self):
            Pen.num = Pen.num + 1
            self.color = 'Red'
            print("hello")
    
        # 行为属性-函数(类的方法)
        def write(self):
            # self.color='Red'
            print("hello")
    
    
    p1 = Pen()
    p2 = Pen()
    
    print(Pen.num)
    print(p1.color)
    print(p2.color)
    
    
    # Pen.write(p1)
    # p1.write()  #简化,执行时被转换成Pen.write(p1)
    # print(p1.color)
    
    
    
    
    
    class Student:
        __num = 0  # 变量命名时,以双下划线开头,即为私有变量
    
        # 私有变量不能在类外访问
        # 数据属性
        def __init__(self, n):
            self.name = n
            self.__baoshu()
    
        # 行为属性
        def __baoshu(self):
            print(self.name)
    
    
    s1 = Student('zhangsan')

    异常处理语句:
    try:
    可能出错
    except(捕获异常): #except后不加任何异常名称表示所有的异常,等同于except exception:

    except(ValueError,IOError): #表示多个异常类型名称用元组括起来,加逗号

    class Student: #Student 第一个要大写,与函数分开
    def __init__(self):
    pass #用pass没有任何结果,只是确保语法完整性

      

  • 相关阅读:
    dotnet run urls=http://*:8080
    内敛声明变量
    C#反射赋值(更新时用)
    mysql---auto_increment=10啥意思呢?
    vscode--代码折叠与展开
    联想启天M410台式机的清除BIOS密码
    AntD是什么?
    react-router-dom 中文文档
    Recoil是什么?
    sql server查看建表的创建代码?
  • 原文地址:https://www.cnblogs.com/minkillmax/p/8280099.html
Copyright © 2011-2022 走看看