Python系列-3-条件与循环

概述

判断与循环, 在各个语言中基本都有对应实现,也是开始编程最基础的语法,本文学习下pyhon中是如何玩转这些的。

条件判断

py中只有if else 判断,没有switch case,语法格式如下:

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

举个例子:

s = input('birth: ')
birth = int(s)  # 此处一定要做类型转换,py不同与js不会做自动类型转换
if birth < 1990:
    print('90前')
else:
    print('90后')

三目运算

Python 是一种极简主义的编程语言,它没有引入? :这个新的运算符,而是使用已有的 if else 关键字来实现相同的功能:

exp1 if contion else exp2

举个例子:

a=10
b=a*-10 if a>20 else a*10
c='Leo' if a>100  else ('Tom' if a>10 else 'Jack')
print(b) # 100
print(c) # Jack

循环

Python 中的循环语句有 for 和 while。

while循环

语法格式如下:

while 判断条件(condition):
    执行语句(statements)……

举个例子:

i=1
while i>=1:
  print(i)
  i += 1
  if i == 15:
    print("跳出")
    break
  elif i>10:
    print("继续")
    continue
print("循环结束")

当i为15的时候会跳出while循环,执行后面的语句

for循环

通过for in 进行循环,千万不要遗漏冒号(:)

lists = ["C", "C++", "Perl", "Python"] 
for item in lists:
    print(item)
print("循环结束")

可以通过break跳出循环:

maps=[1,3,4,7]
for item in maps:
  if(item>3):
    print(item)
    break
print('循环结束')

运行结果:

4
循环结束

range()函数

可以使用内置range()函数。它会生成数列
# 输出0-9
for i in range(10):
print(i)

# 输出2-7
for i in range(2,8):
  print(i)

# 指定步长输出:2,5
for i in range(2,8,3):
  print(i)
  

pass 语句

Python pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句,如下实例

  for l in 'Runoob': 
    if l == 'o':
        pass
        print ('执行 pass 块')
    print ('当前字母 :', l)
  
  print ("Run over!")

执行结果:

  当前字母 : R
  当前字母 : u
  当前字母 : n
  执行 pass 块
  当前字母 : o
  执行 pass 块
  当前字母 : o
  当前字母 : b
  Run over!

其他语句

with语句

python中的with语句使用于对资源进行访问的场合,保证不管处理过程中是否发生错误或者异常都会执行规定的__exit__(“清理”)操作,释放被访问的资源,比如: 有文件读写后自动关闭、线程中锁的自动获取和释放等

与python中with语句有关的概念有:上下文管理协议、上下文管理器、运行时上下文、上下文表达式、处理资源的代码段。

经常看到的是进行文件操作时会带有with语句

  with open( '/path/to/file', 'r' ) as f:
    print( f.read() ) 

此处with的作用就是在读取结束后(包括出错后)执行close函数,不用我们每次调取。

del 语句

del语句删除一些对象引用,只是删除引用,变为了一个可回收的对象,内存会不定期回收

return 语句

返回函数执行结果, 与c++/nodejs等基本一致:

def add(x,y):
    result = x + y
    return result

print(add(10,24))

yeild 语句

yeild 语句等同于yeild表达式,使用了yield 表达式的函数被称为生成器(generator)

assert 语句

当表达式为False时则触发AssertionError异常,代码终止

def testAssert(num):
  if num>0:
    print("输入大于0,正常执行")
  else:
    print("输入小于0!")
    assert False ,'Not positive integer'
try:
  n=input("请输入正整数:") 
  testAssert(int(n))

except Exception as ex:
    print("发现错误:",ex)

执行python main.py,输入10:

  输入大于0,正常执行

执行python main.py,输入-10:

  输入小于0!
  发现错误: Not positive integer

raise语句

raise语句是抛出一个异常,即使程序没有任何问题:

print('run')

raise RuntimeError("没事找事,怎么了")

执行结果:

run
Traceback (most recent call last):
  File "main.py", line 188, in <module>
    raise RuntimeError("没事找事,怎么了")
RuntimeError: 没事找事,怎么了

global语句

global 语句是作用于整个当前代码块的声明。 它意味着所列出的标识符将被解读为全局变量

x=1
y=0

def foo():
  x=2

def fun():
  global y  # 声明为全局变量
  y=2

foo()
fun()

print(x)   # 1
print(y)   # 3

参考