【蓝桥杯基础练习】第三天: ① 杨辉三角形 ② 特殊数字 ③ 回文数 ④ 特殊的回文数 ⑤ 数列排序


BASIC-6 杨辉三角形

'''
问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
   1
  1 1
 1 2 1
1 3 3 1
给出n,输出它的前n行。
输入格式
输入包含一个数n。
输出格式
输出杨辉三角形的前n行。
每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。
请不要在前面输出多余的空格。
样例输入
4
样例输出
1
1 1
1 2 1
1 3 3 1
'''
n = int(input())
list = []
list = [[0]*n for i in range (n)] # n代表的是n*n维数组
for i in range(n):
# 换成n也可以,i+1的意思是:只为该赋值的位置赋值
    for j in range(i+1): 
        if j == 0: # 第一个数
            list[i][j] = 1
        else :
            list[i][j] = list[i-1][j-1]+list[i-1][j] # 杨辉三角规律

for i in range(n):
    for j in range(n):
        if list[i][j] != 0:
            print(list[i][j],end = ' ') # 打印一行中间用空格
    print(end = '\n') # 换行操作

【知识点】
1、创建二维列表:list = [[0]*n for i in range (n)]
2、如果n为4,列表应该是[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]


BASIC-7 特殊数字

'''
问题描述
153是一个非常特殊的数,它等于它的每位数字的立方和,
即153=1*1*1+5*5*5+3*3*3。
编程求所有满足这种条件的三位十进制数。
输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
'''

憨憨解法

for i in range(100,1000):
    a = i//100
    b = i // 10 % 10
    c = i % 10
    if i == a**3 + b**3 + c**3:
        print(i)

【知识点】
1、只适合3位数
2、注意python中,///的区别


高逼格解法

n = 100
while n < 1000:
    i = str(n)
    s = int(i[0])**3+int(i[1])**3+int(i[2])**3
    if n == s:
        print(s)
    n = n + 1

【知识点】
1、将字母转化为字符串:i = str(n)
2、i[0]表示列表中的第一位数字(字符格式)


BASIC-8 回文数

'''
问题描述
1221是一个非常特殊的数,它从左边读和从右边读是一样的,
编程求所有这样的四位十进制数。
输出格式
按从小到大的顺序输出满足条件的四位十进制数。
'''

憨憨解法

n = 1000
while n < 10000:
    i = str(n)
    if i[0]==i[3] and i[1]==i[2] :
        print(n)
    n = n + 1

【知识点】
1、将字母转化为字符串:i = str(n)
2、i[0]表示列表中的第一位数字(字符格式)


高逼格解法

n = 1000
while n < 10000:
    i = str(n)
    if i == i[::-1] :
        print(n)
    n = n + 1

【知识点】
i[::-1]表示:将i列表里的元素逆序


BASIC-9 特殊的回文数

'''
问题描述
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,
  满足各位数字之和等于n 。
输入格式
  输入一行,包含一个正整数n。
输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
'''

高逼格解法

n = int(input())
for num in range(10000, 1000000):
    temp = str(num)
    if temp[0:] == temp[::-1]:  #判断是否是回文数
        if sum(list(map(int, temp))) == n:
            print(num)

【知识点】

  • map先对temp转换
  • list表示转换为列表
  • sum表示直接对列表里面的int型数字求和

憨憨解法

def is_hui(i):
    a=str(i)
    if a==a[::-1]:
        return True
    else:
        return False
def he(i,n):
    a=str(i)
    b=sum(int(a[j])for j in range(len(a)))
    if n==b:
        return True
    else:
        return False
n=int(input())
for i in range(10000,1000000):
    if is_hui(i):
        if he(i,n):
            print(i)

【知识点】
b=sum(int(a[j])for j in range(len(a)))对str类型的数字进行求和


BASIC-13 数列排序

'''
问题描述
  给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
  第一行为一个整数n。
  第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
  输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9
'''

憨憨解法

n = int(input())
array = list(input().split())
for i in range(n):
    array[i] = int(array[i])
array.sort(reverse = False)
for i in range(n):
    array[i] = int(array[i])
    print(array[i], end = ' ')

【知识点】
输入->转整形->排序->转整形


高逼格解法

n = int(input())
arr = list(map(int,input().split()))
arr.sort(reverse = False)
for i in range(n):
   print(arr[i],end=' ')

【知识点】

  • 1、map(int,input().split())表示整形输入
    2、外面套一个list表示转化为列表格式
  • 1、sort直接排序
    2、reverse表示是否是降序,True表示降序,False表示升序
    3、注意:False和True必须首字母大写

结果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bessie_Lee_gogogo

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值