python|【小白向】蓝桥杯练习系统——基础练习部分python语句解析


文章目录

  • 数列排序
  • 十六进制转八进制
  • 十六进制转十进制
  • 十进制转十六进制
  • 特殊回文数
  • 回文数
  • 特殊的数字
  • 杨辉三角形
  • 查找整数
  • 数列特征
  • 字母图形
  • 01字串
  • 闰年判断
  • Fibonacci数列
  • 圆的面积
  • 序列求和
  • A+B问题

本文定位是面向小白(我本人),梳理一些在蓝桥杯python中 常用的语句和用法知识点等,以期加深印象,避免看得懂写不出来的情况。
基础练习代码参考了以下文章:
蓝桥杯 2020 基础练习 python
蓝桥杯 基础练习Python答案(含VIP试题)
蓝桥杯
Python解答蓝桥杯省赛真题之从入门到真题
蓝桥杯Python这一篇就够了-训练系统题库合集(包括VIP试题)&数据结构与算法
在文章开头首先表达诚挚的谢意!
以下语句按 蓝桥杯练习系统出现前后顺序整理
python|【小白向】蓝桥杯练习系统——基础练习部分python语句解析
文章图片
【python|【小白向】蓝桥杯练习系统——基础练习部分python语句解析】
如果你感到吃力:系统学习python:菜鸟教程-python3
数列排序
n = eval(input()) l = list(map(int,input().split())) l.sort() for i in range(n): print("{}".format(l[i]),end=' ')

  • n = eval(input())
    最简单的一个获取输入,将input获得的字符串通过eval函数去掉" "变成数字保存在n中
  • l = list(map(int,input().split()))
    map:根据前一个参数的功能对后一个参数的内容进行处理
    split(str):将字符串按指定字符分隔,str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
    list是列表,因此本句的作用是:
    将用户输入的以空格为间隔的一个数列,拆分为一个个元素,每一个元素都转化为整形,然后构造一个列表存在其中。
    对于列表,可以使用l.sort()进行排序
  • for i in range(n): print("{}".format(l[i]),end=' ')
    format是格式化字符串函数,可以将format函数中的参数一一对应打印到{}所在的位置
    例如:print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
    本句的作用,就是通过循环访问下标,一次打印排好序的列表中的一个元素,并在元素后面end补充打印一个空格,这样循环n次,以输出整个排好序的列表
十六进制转八进制
n = eval(input()) for i in range(n): s = input() s = "0x"+s t = eval(s) print("{:o}".format(t))

首先输入n是告诉系统后面要输入n行,接下来就可以循环输入n行,s = "0x"+s是对其增加16进制标记,然后去掉双引号,利用.format格式化输出达到直接将16进制转换8进制的目的
其中{:o}是8进制输出
python|【小白向】蓝桥杯练习系统——基础练习部分python语句解析
文章图片

十六进制转十进制 与上一题同理啦
s = input() s = "0x"+s t = eval(s) print("{:d}".format(t))

还可以通过int函数和指定输入字符串的进制进行变化:
python|【小白向】蓝桥杯练习系统——基础练习部分python语句解析
文章图片

n = input() s = "0x"+n print(int(s,16))

十进制转十六进制 同理,但是发现蓝桥评测系统要大写的X才行!
n = eval(input()) print("{:X}".format(n))

特殊回文数 切片:
[开始:结束:步进]
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)

str()将数字转换为字符串,[0:]指正序字符串,[::-1]指逆序字符串,倒着步进嘛
然后用sum将temp字符串转换为整形再转换为列表再求和看是不是等于输入的n,是就打印
原作者真聪明!
回文数 逻辑同上
for num in range(1000, 10000): temp = str(num) if temp[0:] == temp[::-1]:#判断是否是回文数 print(num)

特殊的数字
for num in range(100, 1000): temp = str(num) baihe=(num//100)*(num//100)*(num//100) shihe=(num%100//10)*(num%100//10)*(num%100//10) gehe=(num%100%10)*(num%100%10)*(num%100%10) if baihe+shihe+gehe==num:#判断是否是回文数 print(num)

%是取余,//是除
15%10==5
15//10==1
杨辉三角形 其中的主要思想是:
  • 用一个二维的列表作为数据结构,存储整个三角形,没有数据的地方就赋值为0
  • 每一个元素来自于它上面左右两个元素的和
  • 然后两重循环进行赋值和打印
    s = [[0 for i in range(n)] for j in range(n)]是指初始化一个二维列表s,其中i在n范围内赋值为0,j在n范围内赋值为0
    详细可以搜索“列表推导式”
n = int(input()) s = [[0 for i in range(n)] for j in range(n)] for num in range(n): s[num][0] = 1for i in range(n): for j in range(i+1): s[i][j] = s[i-1][j-1] + s[i-1][j] for i in range(n): for j in range(n): if s[i][j] != 0: print(s[i][j],' ', end = '') print('')#是为了打印完一行换行

查找整数
n=eval(input()) l = list(map(int,input().split())) f=eval(input()) if f in l: print(l.index(f)+1)#+1是因为位置从1开始编号 break else: print(-1)

这题有一个可以用的知识点就是in,可以直接判断一个数在不在列表中存在,然后index可以获取这个数在列表中的下标位置
如果不懂这两个函数,还可以遍历:
n=eval(input()) l = list(map(int,input().split())) f=eval(input()) for i in range(n): if f==l[i]: print(i+1) break else: print(-1)

数列特征 (python真香)
n = eval(input()) l = list(map(int,input().split()))print(max(l)) print(min(l)) print(sum(l))

字母图形 abs是返回绝对值
能想到这个规律原作者真是小天才……
n,m = map(eval,input().split()) l = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']for i in range(n): for j in range(m): s = abs(j-i) print(l[s],end = '') print()

01字串 这题就是得对format格式输出足够熟悉啊
#print(int(0b11111))31for i in range(32): print("{:0>5b}".format(i))

{:0>5b}:数字补零 (填充左边, 宽度为5),b代表二进制写法,将32从大到小,转换为二进制也是从大到小
闰年判断 闰年:可整除4且不可整除100
或可整除400
n = eval(input()) if n%4==0 and n%100!=0 or n%400==0: print("yes") else: print("no")

Fibonacci数列
说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
说实话我半懂不懂
# feibonacci def feibonacci(i): f1 = f2 = f3 = 1 for num in range(2, i): f3 = (f1 + f2) % 10007 f1 = f2 f2 = f3 return f3 x = int(eval(input())) print(feibonacci(x))

圆的面积 %是打印占位符
PI = 3.14159265358979323 r = int(input()) s = PI * r * r print("%.7f" % s)

序列求和
x = int(input()) total = int((1+x)*x/2) print(total)

这里是直接使用了等差数列求和公式,哈哈哈哈哈哈太强了
A+B问题
m,n =map(int,input().split()) print(m+n)

end
2021.5.3更新:泪目,本非cs专业渣渣混了一个第十二届蓝桥杯省三,本来只是单纯想报个比赛督促我接触算法和复习python的,没想到混了个奖哈哈哈哈哈哈!很满足,感激自己刷题的时光,大家加油
python|【小白向】蓝桥杯练习系统——基础练习部分python语句解析
文章图片

    推荐阅读