头歌python实训通关四——循环结构


第1关:计算阶梯数

任务描述

本关任务:爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。请编程求解该阶梯至少有多少阶。

相关知识

为了完成本关任务,你需要掌握:1.条件语句,2.循环语句。

编程要求

根据提示,在右侧编辑器补充代码,返回最少的阶梯数。

测试说明

平台会对你编写的代码进行测试:

测试输入: 预期输出: 119

def countlevel():
    '''
     
       :return:最小阶梯数
       '''
    #        请在此处添加代码       #
    # *************begin************#
    a=7
    while(1):
        if a%2==1 and a%3==2 and a%5==4 and a%6==5 and a%7==0:
            return a
        a+=1    
    # **************end*************#
    
print(countlevel())

第2关:打印三角形图案

任务描述

本关任务:编写一个能打印三角形图案的函数。

相关知识

为了完成本关任务,你需要掌握:1.for循环嵌套语句。

编程要求

根据提示,在右侧编辑器补充代码,根据参数pow(三角形行)编写一个能打印pow行三角形图案的函数。

测试说明

平台会对你编写的代码进行测试:

测试输入:4; 预期输出:

  1. *
  2. **
  3. ***
  4. ****
  5. *
  6. **
  7. ***
  8. ****
  9. *
  10. ***
  11. *****
  12. *******

说明:程序会根据函数参数pow打印三个三角形,每个三角形pow行。

测试输入:8; 预期输出:

 
  
  1. *
  2. **
  3. ***
  4. ****
  5. *****
  6. ******
  7. *******
  8. ********
  9. *
  10. **
  11. ***
  12. ****
  13. *****
  14. ******
  15. *******
  16. ********
  17. *
  18. ***
  19. *****
  20. *******
  21. *********
  22. ***********
  23. *************
  24. ***************
def triangle(row):
    '''
       根据row值,打印三个三角形
       :row:三角形行数
       :return: 无返回值
       '''
    #        请在此处添加代码       #
    # *************begin************#
    for i in range(row):
        for j in range(i+1):
            print("*",end="")
        if(i!=(row)):
            print()
    for i in range(row):
        print((row-i-1)*" ",end="")
        for j in range(i+1):
            print("*",end="")
        print()
    for i in range (row):
        print((row-i-1)*" ",end="")
        for j in range(2*i+1):
            print("*",end="")
        print()   
    # **************end*************#
    
row = int(input())
triangle(row)

第3关:双色球选号

任务描述

本关任务:编写一个能实现双色球选号的小程序。

相关知识

为了完成本关任务,你需要掌握:1.条件语句,2.列表操作,3.循环语句,4函数定义及调用。

编程要求

根据提示,在右侧编辑器补充代码,编写一个能实现双色球选号的小程序。 双色球选号由7个数字组成y,其中有6个红球,其号码的取值范围为[1,33],一个蓝球的取值范围为[1,16],要求6个红球从小到大排列,蓝球在最后输出。其输出格式为09 12 16 20 30 33 | 03。(注意,如双色球号码为3,则必须输出03)

测试说明

平台会对你编写的代码进行测试:

测试输入:7; 输入说明:选7注 预期输出:

 
  
  1. 09 12 16 20 30 33 | 03
  2. 01 07 08 09 18 31 | 16
  3. 05 08 21 26 28 31 | 05
  4. 01 03 06 22 25 33 | 02
  5. 02 09 16 20 27 28 | 13
  6. 15 19 24 26 28 32 | 05
  7. 02 05 07 16 24 32 | 09

输出说明:生成7注双色球号。|后面的数字为蓝球的号码 提示:等概率的生成一组无重复的数,可以采用sample函数,其案例如下 如要在1-10中等概率抽取6位数,代码如下

 
  
  1. from random import sample
  2. t = [x for x in range(1, 11)]
  3. print(sample(t,6))
from random import randrange, randint, sample
import random
def display(balls):
    """
    按照题目所要求格式输出列表中的双色球号码

    :param balls:双色球号码列表,如[9,12,16,20,30,33 3]
    :print:输出格式为09 12 16 20 30 33 | 03
    :return: 无返回值

    """
    #        请在此处添加代码       #
    # *************begin************#
    t=[x for x in range(1,17)]
    a=(sample(t,1))
    balls.sort(reverse=False)
    c=balls+a
    f=1
    for i in c:
        if i<10:
            d="0"+str(i)
        else:
            d=str(i)
        print(d+" ",end="")
        if f ==6:
            print("| ",end="")
        f+=1
    print()
    # **************end*************#


def random_select():
    """
    随机选择一组号码
    :return: 返回随机选择的这一组号码,如[9,12,16,20,30,33 3]
    """
    #        请在此处添加代码       #
    # *************begin************#
    t=[x for x in range(1,34)]
    return(sample(t,6))
    # **************end*************#

#n为注数
def main(n):

    for _ in range(n):
        display(random_select())
        
random.seed(3)
n = int(input())
if __name__ == '__main__':
    main(n)

你可能感兴趣的:(头歌python实训通关,python,开发语言)