编写一个函数,能够接受至少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