zoukankan      html  css  js  c++  java
  • python语法(三)— 循环

    上一篇,学习了python的判断语句,了解了python中如何直线分支语句,本文来学习循环语句。python中有两种循环while循环和for循环,当我们不知道循环次数时使用while循环,让我们知道循环次数时使用for循环,下面来介绍具体使用方式。

    while 循环

    • 语法
    while expression :
        whileSuite

    当expression 条件等于0或者为False时,退出循环。从语法可以看出,while语句其实和java的while语句是差不多的,唯一的区别就是这里的条件是可以为0的。
    下面我们看一个简单的实例:
    将1-100累加:

    # -*- coding: utf-8 -*-
    '''
    Created on 2018年12月19日
    将1-100累加:
    
    @author: Herrt灬凌夜
    '''
    sum = 0;
    i = 1;
    while i <= 100 :
        sum = sum + i;
        i = i + 1;
    print("1-100的和为:%d" % sum);
    • break 语句
      break语句为循环语句中的结束语句,和java中的break语句一样,可以直接结束循环语句,而去直接执行循环语句后面的其他语句。
    # -*- coding: utf-8 -*-
    '''
    Created on 2018年12月19日
    break语句
    
    @author: Herrt灬凌夜
    '''
    while True :
        n = input("退出(y/n):");
        if n == "y" :
            break;
    
    print("退出");

    上面语句,当用户输入y的时候直接退出while循环输出退出,否则会一直让用户进行输入。

    • continue 语句
      continue语句也是循环结束语句,但是它与break的不同之处在于它只结束当次循环,会继续执行后面的循环语句,当然与java中的continue语句作用也是一致的。
      我们来看一个例子:
    # -*- coding: utf-8 -*-
    '''
    Created on 2018年12月19日
    continue语句:打印100以内的偶数
    
    @author: Herrt灬凌夜
    '''
    num = 0;
    while num <= 100 :
        if num % 2 != 0 :
            num = num + 1;
            continue
        print(num)
        num = num + 1

    上面语句当num等于奇数时会执行continue,语句,跳出本次循环,所以这里只输出偶数。当然我们可以不使用其中的if语句而是将num = num + 1 直接改为 num = num + 2,但是我在这里这么写只是为了说明continue的作用而已,所以请忽略我智障的写法。

    • else 语句
      这里的else语句是while的else语句,他在正常的while语句执行结束之后才会去执行,如果是break强制结束while循环,else中的语句也不会执行。
      我们可以将第一个例子改造为:
    # -*- coding: utf-8 -*-
    '''
    Created on 2018年12月19日
    将1-100累加:
    
    @author: Herrt灬凌夜
    '''
    sum = 0;
    i = 1;
    while i <= 100 :
        sum = sum + i;
        i = i + 1;
    else :
        print("1-100的和为:%d" % sum);

    最后我们将昨天的那个猜拳游戏进行改造,当人或者机器谁先达到10分谁赢,并且输入quit可以退出游戏。

    # -*- coding: utf-8 -*-
    '''
    Created on 2018年12月19日
    猜拳游戏,当人或者机器谁先达到10分谁赢,并且输入quit可以退出游戏。
    
    @author: Herrt灬凌夜
    '''
    import random;
    computerScore = 0
    personScore = 0;
    personList = ["石头", "剪刀", "", "quit"];
    computer = random.choice(["石头", "剪刀", ""]);
    personTriumph = [["石头", "剪刀"], ["", "石头"], ["剪刀", ""]];
    introduce = """
    请出拳:
    0.石头
    1.剪刀
    2.布
    3.退出游戏    
    """;
    
    while computerScore < 10 and personScore < 10 :
        index = int(input(introduce));
    
        if index not in [0, 1, 2, 3] :
            print("输入有误,请重新输入!");
            continue;
    
        if personList[index] == "quit" :
            print("您退出了游戏!");
            break;
    
        print("你出了%s, 电脑出了%s" % (personList[index], computer));
    
        if personList[index] == computer :
            print ("平局");
        elif [personList[index], computer] in personTriumph :
            print ("你赢了");
            personScore += 1;
        else :
            print ("电脑赢了");
            computerScore += 1;
    else :
        if personScore > computerScore :
            print("您当前得分为%s分,电脑得分为%s分,您获胜了!" % (personScore, computerScore));
        else:
            print("您当前得分为%s分,电脑得分为%s分,电脑获胜了!" % (personScore, computerScore));
     

    for 循环

    • for 循环语法
    for i in itrtable
        suiteToRepeat

    for循环需要一个变量i和一个元素,其中i每次循环为itrtable的一个,并且for循环也支持while中的break,continue和else语句。
    看个简单的例子:

    # -*- coding: utf-8 -*-
    '''
    Created on 2018年12月19日
    for循环
    
    @author: Herrt灬凌夜
    '''
    for i in "hello" :
        print(i)

    上面就会依次输出没有个字母,但是会换行输出,如果不想让其换行可以在最后加一个print (i, end = "");

    for i in "hello" :
        print (i, end = "");
    • range 函数
      range函数一般与for循环连用,range为循环提供循环条件。在之前的python2.0的时候还有一个xrange的函数,他不会立刻生成一个列表,而是使用了懒加载的方式,这样可以更节省内存,执行效率也更高,但是在python3.0以后将xrange取消了,而是由range直接取代,但是作用其实是range的作用。
      range函数语法:
    range(start,end,step)

    其中startt为起始,end为结束,step为步长。我们看下面几个例子:

    # -*- coding: utf-8 -*-
    '''
    Created on 2018年12月19日
    range函数
    
    @author: Herrt灬凌夜
    '''
    for i in range(10) :
        print(i, end = " ");
    else :
        print();
    
    for i in range(5, 10) :
        print(i, end = " ");
    else :
        print();   
    
    for i in range(1, 10, 2) :
        print(i, end = " ");
    else :
        print();
    • 列表解析
      列表解析是一种非常实用,非常简单,也非常灵活的动态创建列表的方式。
      列表解析语法:
    [expr for iterVar in iterable]

    上述的语法中 expr 表示列表中的每一个成员,也可以是某种公式,而后面的则是一个循环,其实相当于循环去创建一个列表。
    我们看下面的例子:

    # -*- coding: utf-8 -*-
    '''
    Created on 2018年12月19日
    列表解析
    
    @author: Herrt灬凌夜
    '''
    print(["hello" for i in range(5)]);
    print([i for i in range(5)]);
    print([i * i for i in range(5)]);
    print([i + (i + 1) for i in range(5)]);
    print([i * i for i in range(5, 10)]);
    print([i for i in range(0, 10, 2)]);

    这样,我们可以生成很多有规律的列表。

    • for 循环的几个练习
      再简单的语言都离不开练习,没有练习,估计一个星期就会忘干净了,下面就来看几个例子:
      1.用户输入一个数字,生成对应长度的斐波那契数列。
    # -*- coding: utf-8 -*-
    '''
    Created on 2018年12月19日
    用户输入一个数字,生成对应长度的斐波那契数列。
    
    @author: Herrt灬凌夜
    '''
    fid = [0, 1];
    while True :
        num = int(input("请输入斐波那契数列的长度:")) - 2;
        if num < 0 :
            print("请输入大于2的数字:");
        else :
            break;
    for i in range(num) :
        fid.append(fid[-1] + fid[-2]);
    else :
        print(fid);

    2.根据用户输入,显示乘法口诀表。

    # -*- coding: utf-8 -*-
    '''
    Created on 2018年12月19日
    2.根据用户输入,显示乘法口诀表。
    
    @author: Herrt灬凌夜
    '''
    while True :
        num = int(input("请输入一个数字:"));
        if num < 1 :
            print("请输入大于2的数字:");
        else :
            break;
    for i in range(1, num + 1):
        for j in range(1, i+1):
            print("%sX%s=%s" % (i, j, i * j), end = " ")
        print();

    今天主要学习了python的循环语句,while循环和for循环,可以在某些场景重复的执行某些代码。在后面还会继续学习python的其他语法。

    -------------------- END ---------------------

     

    
    

     

    最后附上作者的微信公众号地址和博客地址 

     

    
    

     

    公众号:wuyouxin_gzh

     

    
    

     

     

    
    

     

     

     

    
    

     

    Herrt灬凌夜:https://www.cnblogs.com/wuyx/

  • 相关阅读:
    图的存储结构(邻接矩阵) 数据结构和算法56
    图的存储结构(邻接矩阵)
    图的存储结构(邻接矩阵)
    图的存储结构(邻接矩阵)
    图的存储结构(邻接矩阵)
    图的存储结构(邻接矩阵)
    图的存储结构(邻接矩阵) 数据结构和算法56
    .net 怎么获取文件夹的图片
    .net HTML编码解析
    WebService中方法的重载
  • 原文地址:https://www.cnblogs.com/wuyx/p/10147205.html
Copyright © 2011-2022 走看看