Java工程师学快速Python(2) 条件与循环、迭代器 函数

本文详细介绍了Python中条件语句、循环语句与Java的区别,包括if、while、for语句的语法特点,以及break、pass语句的使用。同时深入探讨了Python中的迭代器与生成器概念,函数定义与作用域规则,为读者提供了丰富的代码实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

条件与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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值