python学习笔记3

流程控制语句

python中pass语句的作用是什么?
pass是一个在python中不会被执行的语句,pass语句一般作为占位符或者创建占位程序。在复杂语句中,如果一个地方需要暂时被留白,那么就可以使用pass语句。

age = 17
if age > 18:
    pass
else:
    print("age < 18 ! 未成年!!")

image
实现斐波那契额数列(黄金分割数列)

a,b = 0,1
while b < 100:
    print(b,end=',')
    a,b = b,a+b

image

#d递归方式实现,生成前20项,当生成前40位时其复杂度就变的好大了
def factorial(n):
    if n < 1:
        return -1
    if n == 1 or n == 2:
        return 1
    else:
        return factorial(n-2) + factorial(n-1)

number = int(input("please enter a intager:"))
lis = []
for i in range(number):
    lis.append(factorial(i+1))
print(lis)

image
python中except用来捕获所有的异常,因为Python中的每次错误都会抛出一个异常,所有程序的错误都被当作一个运行时的错误。

try……
except……
except……
[else……][finally……]

执行try块的语句时,如果引发异常,那么执行过程会跳到except代码中。对每个except分支程序尝试执行,如果引发的异常与except中的异常组匹配,执行相应的语句。如果所有的except都不匹配,则异常抛出到上层的调用者。
try下的语句正常执行,则执行else块代码。如果发生异常,那么就不会执行。
如果存在finally语句,finally代码块最后总是会被执行的

python如何捕获异常?如何在程序执行过程中抛出异常
Python中使用“try……except SomeException as e:……”来捕获异常;使用“raise SomeEXception("Some Message")”来抛出异常
常见异常

IOError			输入输出异常
AttibuteError		试图访问一个对象没有的属性
ImportError		无法引入模块或包,基本是路径问题
IndentationError	语法错误,代码没有正确的对齐
IndexError		下标索引超出序列边界
KeyError		试图访问字典里不存在的键
SyntaxError		Python代码逻辑语法出错,不能执行
NameError		使用一个还未赋予对象的变量

在except中,return后还会不会执行finally中的代码?怎么抛出自定义异常
会继续处理finally中的代码;用raise方法可以抛出自定义异常。
自定义异常示例

class MYyException(Exception):
    def __init__(self,code):
        self.code = code
    
def login(name,pwd):
    if name == 'admin':
        if pwd == '123':
            print('login successful')
        else:
            #print('password error')
            #return  False
            #抛出异常
            raise MYyException(101)

    else:
        #print('name error')
        #return FAlse
        raise MYyException(102)

#ret = login('admin','123')
#print(ret)

dic = {101:'password error',102:'name error',201:'other error'}
try:
    login('admin','23')
except MYyException as e:
    print(e)
    #print(type(e))
    #通过args获取常见异常对象时传的参数
    print(e.args[0])
    print(dic[e.args[0]])

image
range()函数的作用有哪些
如果需要迭代一个数字序列的话,那么剋有使用range()函数,range()函数可以生成等差数列。range()函数也可创建一个整数列表,一般用在for循环中
range函数的语法:

range(start, stop[, step]) -> range object
start	计数从start开始。默认是从0开始。
stop	计数到stop结束,但不包括stop。
step	步长,默认位1.

索引序列

a = ['Nina','Jim','Rainman','Hello']
for i in range(len(a)):
    print(i,a[i])

image
倒序

for i in range(5,0,-1):
    print(i,end=' ')

image
python2和python中的range()的区别
python2返回列表,python3返回迭代器,节约内存
为什么下面两段代码的结果会不同呢?

l = []
for i in range(10):
    l.append({'num':i})
print(l)

s = []
a = {'num':0}
for x in range(10):
    a['num'] = x
    s.append(a)
print(s)

image
字典是可变对象,在代码2中s.append(a)的操作中是把字典a的引用传到列表s中,当后续操作修改a['num']的值的时候,s中的值也会跟着浅拷贝
xrange和range的区别
range([start,]stop[,step]),根据start和stop指定的范围以及step设定的步长,生成一个序列。xrange用法和range相同,但是,xrange生成的是一个生成器,即它的数据生成一个取出一个。在需要生成很大的数字序列的时候,用xrange会比range性能更优,因为不需要在程序开始时就开辟一块很大的内存空间。
九九乘法表

# 九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print("%d*%d=%d"%(j,i,i*j),end='\t')
    print('\n')

image
打印三角形

#方法一:(j,k会出现异常,例如:Unused variable 'j'pylint(unused-variable))
def printGraph(n):
    for i in range(1,n+1):
        for j in range(1,n-i+1):
            print(' ',end='')
        for k in range(1,2*i):
            print('*',end='')

        print('')
printGraph(8)
#所以用方法二:
def printGraph(n):
    for i in range(1,n+1):
        print(' '*(n-i)+'*'*(2*i-1))
printGraph(8)

image
打印倒三角形

def printGraph(n):
    for i in range(1,n+1):
        print(' '*(i-1)+'*'*(2*(n-i)+1))
printGraph(8)

image
打印偶数三角形

def printGraph(n):
    for i in range(n):
        print(' '*(n-i-1)+'* '*(i+1))
printGraph(8)

image
简单的计算器

##简单的计算器
def add(x,y):   #定义函数
    """相加"""
    return x + y

def subtract(x,y):
    """相减"""
    return x - y

def multiply(x,y):
    """相乘"""
    return x * y

def divide(x,y):
    """相除"""
    return x / y

print("""
选择运算:
\t1、相加
\t2、相减
\t3、相乘
\t4、相除
""")
choice = input("please enter your choice(1/2/3/4):")

num1 = int(input("enter first number:"))
num2 = int(input("enter secend number:"))

if choice == '1':
    print(num1,'+',num2,'=',add(num1,num2))
elif choice == '2':
    print(num1,'-',num2,'=',subtract(num1,num2))
elif choice == '3':
    print(num1,'*',num2,'=',multiply(num1,num2))
elif choice == '4':
    if num2 != 0:
        print(num1,'/',num2,'=',divide(num1,num2))
    else:
        print("The denominator cannot be zero!")
else:
    print("Illegal input!")

image

posted @ 2021-03-31 15:42  MTcx  阅读(62)  评论(0)    收藏  举报