首页 > 其他分享 >函数参数习题

函数参数习题

时间:2022-10-10 10:01:19浏览次数:46  
标签:triangle width range 函数参数 tail str print 习题

编写一个函数,能够接受至少2个参数,返回最小值 和最大值

import random
def double_values(*nums):
    print(nums)
    return max(nums),min(nums)
print(*double_values(*[random.randint(10,20) for _ in range(10)]))

(20, 16, 12, 12, 12, 17, 15, 17, 10, 13)
20 10

编写一个函数,接受一个参数n,n为正整数,左右两 种打印方式。要求数字必须对齐

#编写一个函数,接受参数n ,n为正整数,左右两种对齐打印方式,要求数字必须对齐。
'''

          1   6 5 4 3 2 1
        2 1     5 4 3 2 1
      3 2 1       4 3 2 1
    4 3 2 1         3 2 1
  5 4 3 2 1           2 1
6 5 4 3 2 1             1
'''

# NO 1 最基本的,打印空格方式
# 上三角
def triangle_print(n):
    for i in range(1, n+1):
        for j in range(n,0, -1):
            if i < j:
                print(' '* len(str(j)),end=' ')# 因为随着数字位数不同,宽度不同
                    # ‘12 ’   ‘100 ’  ‘1000 ’
            else:
                print(j, end=' ')
        print()

triangle_print(5)

# 下三角
def triangle_print(n):
    for i in range(1, n+1):
        for j in range(1, n+1):
            if i > j:
                print(' ' * len(str(j)), end=' ')
            else:
                print(n+1-j, end=' ')
        print()

triangle_print(7)


# NO 2 使用对齐方式,问题是不知道最后一行多宽

# 思路是 九九乘法表,先都向左靠齐,在整体向右靠齐

# 上三角
def triangle_print(n):
    for i in range(1, n+1):
        s = ''
        for j in range(i, 0, -1):
            s += '{}{}'.format(j, ' ')
        print('{:>30}'.format(s)) # 这里的向右靠齐,宽度不能确定

triangle_print(10)

# 下三角
def triangle_print(n):
    for i in range(1, n+1):
        s = ''
        for j in range(n+1-i, 0, -1):
            s += '{}{}'.format(j, ' ')
        print('{:>30}'.format(s)) # 这里的向右靠齐,宽度不能确定

triangle_print(10)

# NO 3 基于第二种方法,考虑先打印最后一行,就知道向右靠齐多宽

# 上三角
def triangle_print(n):
    tail = ' ' + ' '.join([str(i) for i in range(n, 0, -1)])
    width = len(tail)
    for i in range(1, n):
        s = ''
        for j in range(i, 0, -1):
            s += '{}{}'.format(j, ' ')
        print('{:>{}}'.format(s, width+1))
    print(tail)
triangle_print(15)

# 优化:
def triangle_print(n):
    tail = ' ' + ' '.join([str(i) for i in range(n, 0, -1)])
    width = len(tail)
    for i in range(1, n):
        print('{:>{}}'.format(' '.join([str(j) for j in range(i, 0, -1)]),width))
    print(tail)
triangle_print(15)

# 下三角
def triangle_print(n):
    tail = ' ' + ' '.join([str(i) for i in range(n, 0, -1)])
    width = len(tail)
    print(tail)
    for i in range(1, n):
        print('{:>{}}'.format(' '.join([str(j) for j in range(n-i, 0, -1)]),width))

triangle_print(15)

'''

          1   6 5 4 3 2 1
        2 1     5 4 3 2 1
      3 2 1       4 3 2 1
    4 3 2 1         3 2 1
  5 4 3 2 1           2 1
6 5 4 3 2 1             1
'''
# NO 5 基于上面的思路,发现,可以通过最后一行得到所有,而不用每一行都计算。也就是切片

# 上三角
def triangle_print(n):
    tail =  ' '.join([str(i) for i in range(n, 0, -1)])
    width = len(tail)
    step = 2
    start = -1
    points = {10 ** i for i in range(1,3)}

    for i in range(1, n+1):
        print('{:>{}}'.format(tail[start:],width))
#         if len(str(i+1)) > 2:
        if i+1 in points:
            step += 1
        start = start - step
triangle_print(15)

#  下三角 # 这个版本只能取到10 ,两位数超过两个,就出现问题,因为所有的step都按照2 来算了
def triangle_print(n):
    tail =  ' '.join([str(i) for i in range(n, 0, -1)])
    width = len(tail)
    print(width)
    print(tail)

    for i in range(n - 1, 0, -1):# 10,9
        if len(str(i)) == 2:
            step = 3
        if len(str(i)) == 1:
            step = 2
        start = width - step * (n - i)# 9-2*1
        print('{:>{}}'.format(tail[-start:],width))

triangle_print(10)

# NO 6
'''

          1   6 5 4 3 2 1
        2 1     5 4 3 2 1
      3 2 1       4 3 2 1
    4 3 2 1         3 2 1
  5 4 3 2 1           2 1
6 5 4 3 2 1             1
'''
# 下三角 打印最后 一行,剩余的 遇到一个空格,就把之前的都化为空格,后面的打印,也是利用切片
def showtail(n):
    tail = ' '.join([str(i) for i in range(n, 0, -1)])
    print(tail)
    for j in range(len(tail)):
        if tail[j] == ' ':
            print(' ' * j ,tail[j+1:])
showtail(15)

 

标签:triangle,width,range,函数参数,tail,str,print,习题
From: https://www.cnblogs.com/mengdie1978/p/16774610.html

相关文章

  • python练习题-数据类型
    1.利用下划线,把列表的每个元素拼接成一个字符串。lst=['Rose','Tom','Bye'];1.1python2解法:#coding=utf-8;#1.利用下划线,把列表的每个元素拼接成一个字符串lst......
  • 练习题:简单薪水计算器
    练习题:简单薪水计算器题目:薪水计算器:(1)通过键盘输入用户的月薪,每年是几个月薪水(2)输出用户的年薪(3)输出一行字“如果年薪超过10万,恭喜你超过90%的国人”,“如果年......
  • 【数据结构】时间复杂度和空间复杂度的练习题(仅供学习交流使用)
    习题:解:异或:相同为0相异为1     0和任何数异或都是那个数本身因为这个原理所以两个数交换可以考虑使用异或,不需要考虑顺序代码实现:(++i和i++结果是一样得,如果取返回......
  • 【UML】用例图、活动图、类图、顺序图练习题
    一、问题一“远程网络教学系统”的功能需求如下:学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。教师登录网站后,可以上传课件、上传教学视频、发布教学心......
  • MYSQY 学习笔记之 练习题
    试题一:取得每个部门最高薪水的人员名单?分析:①先将员工表依据部门编号进行分组并找出每个分组中最高薪水的人员信息②将最高薪水表与原表进行连接#员工信息表mysql>select......
  • 【Java练习题】Java 程序的输出 | 第十三套(集合)
    ......
  • 【Java练习题】Java 程序的输出 | 第二十一套(类型转换)
    难度级别:简单程序程序一1)以下程序的输出是什么?publicclassTest{publicstaticvoidmain(String[]args){intvalue=554;Stringvar=(String)value;/......
  • 习题
    /#include<stdio.h>//计算1-100中出现9的次数//intmain()//{// inti=0;// intcount=0;// for(i=1;i<100;i++)//出现9两种情况,个位为9或十位为9,故使用取......
  • 习题
    #include<stdio.h>//求10个数中最大的数intmain(){intarr[]={1,2,3,4,5,6,7,8,9,10};intmax=arr[0];//注意取数组中的某个值作为max的初始值inti......
  • 王道_顺序表课后代码习题总结
    顺序表1.删除主要在于删除后,后面元素怎样前移。1.删除一个值boolListDelete(SqList&L,ElemType&e){if(i<1||i>L.length)returnfalse;......