条件与java的区别在于
- 1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
- 2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 3、在Python中没有switch – case语句。
- 4、Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
完整的if实例
var1 = 100
if var1:
print ("1 - if 表达式条件为 true")
print (var1)
var2 = 0
if var2: //0会代表false 所以下面语句不会执行
print ("2 - if 表达式条件为 true")
print (var2)
print ("Good bye!")
while循环与java的区别在于
-
同样需要注意冒号和缩进。另外,在 Python 中没有 do..while 循环。
-
while中使用else语句,跳出循环之后执行
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
for 循环和java的区别
类似于java中
for(A a:as){
.........
}
for <variable> in <sequence>:
<statements>
else:
<statements>
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
print("循环数据 " + site)
else:
print("没有循环数据!")
print("完成循环!")
其中else是跳出循环之后的动作
类似于java中的
for(int i =0;i<10;i++){
...
}
for i in range(len(list)):
<statements>
else:
<statements>
针对上面例子:
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in range(len(sites)):
print("循环数据 " + str(site))
else:
print("没有循环数据!")
print("完成循环!")
也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'):
这种就类似于java中的
for(int i =0;i<10;i=i+n){ ... }
还是上面的例子改造
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in range(0,len(sites),2):
print("循环数据 " + sites[site])
else:
print("没有循环数据!")
print("完成循环!")
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
注意:break的作用下循环的else是不执行的
比如
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in range(0,len(sites)):
if site == 2:
break
print("循环数据 " + sites[site])
else:
print("没有循环数据!")
print("完成循环!")
没有循环数据 这句话是不会打印的
Python pass是空语句,是为了保持程序结构的完整性。
while True:
pass
例子:
for letter in 'Runoob':
if letter == 'o':
pass //这句话去掉和加上两个程序的输出结果是一样的
print ('执行 pass 块')
print ('当前字母 :', letter)
print ("Good bye!")
迭代器
迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象
for x in it:
print (x, end=" ")
生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
以下实例使用 yield 实现斐波那契数列:
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a //如果把这行代码写在----位置,又会是什么情况呢
a, b = b, a + b
counter += 1
-----
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print(next(f), end=" ")
except StopIteration:
sys.exit()
函数
定义还有形参实参啥的不讲了,和java类似
def printme(a, b=“蚂蚁金服”): //这里可以定义默认值
"打印任何传入的字符串"
print(a)
# 调用printme函数
printme(b="菜鸟网络",a="淘宝")//函数自动会匹配
printme(a="淘宝")//使用默认值
def f(a,*b,c):
for x in b:
print(x)
f(1,2,3,4,4,5,6,7,c=2)后面一定要带c=2不然要报错
b是一个元组
def f(a,**b)://两颗星表示字典
print(b)
f(1,c=2,d=3,f=4,e=4,g=5,m=6,n=7)
匿名函数:
lambda [arg1 [,arg2,.....argn]]:expression
sum = lambda a,b:a+b*a+b
print(sum(1, 2))
变量作用域
类似java的作用域
g_count = 0 # 全局作用域----1
def outer():
o_count = 1 # 闭包函数外的函数中---2
def inner():
i_count = 2 # 局部作用域----3
2中的变量要访问1 就要加global关键字
3中的变量要访问2就要加nonlocal关键
num = 1
def fun1():
global num # 需要使用 global 关键字声明
print(num)
num = 123
print(num)
fun1()
print(num)
def outer():
num = 10
def inner():
nonlocal num # nonlocal关键字声明
num = 100
print(num)
inner()
print(num)
outer()