当前位置:   article > 正文

python_蓝桥杯刷题记录_笔记_入门1

python_蓝桥杯刷题记录_笔记_入门1

前言

        现在正式进入蓝桥杯的刷题啦,第一次用python来做算法题,因为我之前其实都是用C++来做题的,但是今年的话我打算换python来试试,很明显因为也才这学期接触python 加上之前C++做题也比较菜,所以我打算用python重新来做题,就从最简单的开始,熟悉python的语法。然后在这里的话就是记录笔记,十分潦草哈哈哈哈,方便自己后面复习哈哈哈哈。

题单目录

1.P1000 超级玛丽游戏

2.P1001 A+B Problem

3.P1421 小玉买文具

4.P1425 小鱼的游泳时间

5.P1422 小玉家的电费

6.P1085 [NOIP2004 普及组] 不高兴的津津

7.P1909 [NOIP2016 普及组] 买铅笔

8.P1008 [NOIP1998 普及组] 三连击


1.P1000 超级玛丽游戏

python里,用三引号开头和结尾可以起到输出带格式文本的效果。

  1. print(''' ********
  2. ************
  3. ####....#.
  4. #..###.....##....
  5. ###.......###### ### ###
  6. ........... #...# #...#
  7. ##*####### #.#.# #.#.#
  8. ####*******###### #.#.# #.#.#
  9. ...#***.****.*###.... #...# #...#
  10. ....**********##..... ### ###
  11. ....**** *****....
  12. #### ####
  13. ###### ######
  14. ##############################################################
  15. #...#......#.##...#......#.##...#......#.##------------------#
  16. ###########################################------------------#
  17. #..#....#....##..#....#....##..#....#....#####################
  18. ########################################## #----------#
  19. #.....#......##.....#......##.....#......# #----------#
  20. ########################################## #----------#
  21. #.#..#....#..##.#..#....#..##.#..#....#..# #----------#
  22. ########################################## ############
  23. ''')

2.P1001 A+B Problem

 在python中怎么输入两个以空格隔开的整数

  1. a,b = list(map(int,input().split()))
  2. print(a+b)

3.P1421 小玉买文具

/ (常规除)
如:

5 / 2 = 2.5

解释:平常除法是什么结果就是什么结果。

//(地板除)
如:

5 // 2 = 2 (5 ÷ 2 = 2.5)

5 // 3 = 1 (5 ÷ 3 = 1.6666666666666667)

解释:地板除,只去除完之后的整数部分。

% (取余数)
如:

5 % 2 = 1 (5 - 2*2 = 1)

4 % 2 = 0 (4 - 2*2 = 0)

7 % 3 = 1 (7 - 3*2 = 1)

13 % 5 = 3 (13 - 5*2 = 3)

解释: 就是一个取余数的操作,除开被除数的倍数,余下几就得几。上面红色的数字带表被除数的倍数。

  1. a,b = list(map(int,input().split()))
  2. sum = a*10 + b
  3. num = sum//19
  4. print(num)

4.P1425 小鱼的游泳时间

 一行输入多个整数也可以用map

  1. a,b,c,d = map(int,input().split())
  2. begin = a*60+b
  3. end = c*60+d
  4. time_ = end-begin
  5. time_hour = time_//60
  6. time_min = time_%60
  7. print(f'{time_hour} {time_min}')

5.P1422 小玉家的电费

这里涉及到有关小数点保留的问题

  1. a = int(input())
  2. if a>150:
  3. if a>400:
  4. sum = 150*0.4463 + 250*0.4663 + (a-400)*0.5663
  5. else:
  6. sum = 150*0.4463 + (a-150)*0.4663
  7. else:
  8. sum = a*0.4463
  9. print('%.1f' %sum)

6.P1085 [NOIP2004 普及组] 不高兴的津津

 多行数据我用的是循环

  1. s = []
  2. flag = 1
  3. day = 1
  4. for i in range(7):
  5. a,b = map(int,input().split())
  6. sum = a+b
  7. s.append(sum)
  8. for i in range(7):
  9. if s[i]>8 and s[i]>s[day-1]:
  10. flag = 0
  11. day = i+1
  12. if flag:
  13. print(0)
  14. else:
  15. print(day)

7.P1909 [NOIP2016 普及组] 买铅笔

这里关于min_price的大小我真的花了好长时间才发现,不然一直都在WA。变量的范围真的要注意!!!!

还有这里涉及到取整的问题。

import math

  • 向上取整:math.ceil()
  • 四舍五入:round()
  • 向下取整:math.floor()
  1. num = int(input())
  2. s = []
  3. min_price = 10000000
  4. import math
  5. for i in range(3):
  6. a, b = list(map(int, input().split()))
  7. price = math.ceil(num / a) * b
  8. if price < min_price:
  9. min_price = price
  10. print(min_price)

8.P1008 [NOIP1998 普及组] 三连击

这一道题的话就是遍历三位数,但是可以通过数学比例来缩小循环的范围。

还有一个数学技巧就是怎么才算是用上了所有1—9的数字,可以通过和以及乘积来规定。 

  1. for a in range(123,333):
  2. b = a*2
  3. c = a*3
  4. a1 = a % 10
  5. a2 = (a//10) % 10
  6. a3 = a//100
  7. b1 = b % 10
  8. b2 = (b // 10) % 10
  9. b3 = b // 100
  10. c1 = c % 10
  11. c2 = (c // 10) % 10
  12. c3 = c // 100
  13. if a1+a2+a3+b1+b2+b3+c1+c2+c3==45 and a1*a2*a3*b1*b2*b3*c1*c2*c3==1*2*3*4*5*6*7*8*9:
  14. print(f'{a} {b} {c}')

9.总结

        今天有点偷懒哈哈哈哈,明天尽量做多一点,争取把这些简单题快速过一遍,熟悉熟悉python的语法。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/41968?site
推荐阅读
相关标签
  

闽ICP备14008679号