zoukankan      html  css  js  c++  java
  • python3.4学习笔记(二) 类型判断,异常处理,终止程序

    python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码:

     1 #idle中按F5可以运行代码
     2 #引入外部模块 import xxx
     3 #random模块,randint(开始数,结束数) 产生整数随机数
     4 import random
     5 import sys
     6 import os
     7 secret = random.randint(1,10)
     8 temp = input("请输入一个数字
    ")
     9 #print(type(temp))#<class 'str'> 类型判断
    10 #print(isinstance(temp,int))#False
    11 #异常处理 try except finally 没有catch函数
    12 try:
    13     guess = int(temp)
    14 except:
    15     print("输入的不是数字,程序终止了")#注释内容不能在逻辑代码块里独立一行进行
    16     os._exit(0)#os._exit() 用于在线程中退出,sys.exit()用于在主线程中退出,exit(0)#终止退出程序,会关闭窗口
    17 count = 0;
    18 while guess != secret: #猜错的时候才进入循环条件
    19     if count == 0 and guess > secret:
    20         print("猜大了")
    21     if count == 0 and guess < secret:
    22         print("猜小了")
    23     temp = input("请重新输入数字
    ") #需要在判断之前让用户输入,否则猜对了就直接退出了
    24     try:
    25         guess = int(temp)
    26     except (ZeroDivisionError,Exception):
    27         print("输入的不是数字,请重新输入")
    28         print(ZeroDivisionError,":",Exception)
    29     count += 1 #不能使用count++这种方式
    30     if count > 2:
    31         print("猜错4次自动退出了")
    32         break #退出循环
    33     if guess == secret:
    34         print("恭喜,你猜对了")
    35         print("猜对了也就那样")
    36     else:
    37         if guess > secret:
    38             print("猜大了")
    39         else:
    40             print("猜小了")
    41 print("游戏结束")
    42 ----------------------------------
    43 请输入一个数字
    44 2
    45 猜小了
    46 请重新输入数字
    47 fads
    48 输入的不是数字,请重新输入
    49 <class 'ZeroDivisionError'> : <class 'Exception'>
    50 猜小了
    51 请重新输入数字

    ===============================

    Python os._exit() sys.exit() exit()区别
    Python退出程序的方式有两种:os._exit(), sys.exit()
    1)os._exit() 直接退出 Python程序,其后的代码也不会继续执行。
    
    2)sys.exit() 引发一个 SystemExit异常,若没有捕获这个异常,Python解释器会直接退出;捕获这个异常可以做一些额外的清理工作。
    0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。
    exit() 跟 C 语言等其他语言的 exit() 应该是一样的。
    os._exit() 调用 C 语言的 _exit() 函数。
    __builtin__.exit 是一个 Quitter 对象,这个对象的 __call__ 方法会抛出一个 SystemExit 异常。
    
    一般来说os._exit() 用于在线程中退出
    sys.exit() 用于在主线程中退出。
    import os
    os._exit(0)
    
    不能直接使用return
    
    python注释内容不能在逻辑代码块里独立一行进行,空格和tab键都是有意义的
    if try 等模块下面不能一行内容都没有,编译会认为逻辑有问题报错。
    
    -------------------------------------
    python中try except处理程序异常的三种常用方法
    方法一:捕获所有异常
    try:  
        a=b  
        b=c  
    except (ZeroDivisionError,Exception):
            print(ZeroDivisionError,":",Exception)
        
    方法二:采用traceback模块查看异常
    #引入python中的traceback模块,跟踪错误
    import traceback  
    try:  
        a=b  
        b=c  
    except:  
        traceback.print_exc()
        
    方法三:采用sys模块回溯最后的异常
    #引入sys模块
    import sys  
    try:  
        a=b  
        b=c  
    except:  
        info=sys.exc_info()  
        print info[0],":",info[1]
    但是,如果你还想把这些异常保存到一个日志文件中,来分析这些异常,那么请看下面的方法:
    把 traceback.print_exc() 打印在屏幕上的信息保存到一个文本文件中
    import traceback
    try:  
        a=b  
        b=c  
    except:  
        f=open("c:log.txt",'a')  
        traceback.print_exc(file=f)  
        f.flush()  
        f.close()

    =========================================

    1 import traceback
    2 #断言assert关键字,程序自动崩溃并抛出AssertionError异常,用在重新中植入检查点
    3 assert 4 > 3 #条件正确自动忽略跳过
    4 print("pass...")
    5 try:
    6 assert 3 > 4
    7 except (AssertionError):
    8 traceback.print_exc()
    9 print("after assert...")

    输出结果:
    pass...
    Traceback (most recent call last):
    File "F:/kanbox/pythoncode/if_for.py", line 28, in <module>
    assert 3 > 4
    AssertionError
    after assert...

  • 相关阅读:
    使用Mybatis时报错Invalid bound statement (not found):
    MyBatis学习(3)
    选数字
    看程序写结果
    NP
    完全平方数
    hahaha
    haha

    凝视
  • 原文地址:https://www.cnblogs.com/zdz8207/p/python_learn_note_2.html
Copyright © 2011-2022 走看看