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没有任何结果,只是确保语法完整性

  

posted @ 2018-01-13 17:49  minkillmax  阅读(166)  评论(0编辑  收藏  举报