蓝桥杯最后5天!!!快进来复习

一、常用输入语句

输入数字

1、输入一个数

num = input()

2、输入两、三个数,用空格隔开

x, y = map(int, input().split())

3、输入数字数组

nums = [int(i) for i in input().split()]

4、输入二维数组

str_lst = []
n = 3
for i in range(n):
    nums = [int(j) for j in input().split()]
    str_lst.append(nums)
print(str_lst)

输入字符串

1、输入字符串数组

str = list(input().split())

2、输入二维字符串数组

str_lst = []
n = 3
for i in range(n):
    nums = [j for j in input().split()]
    str_lst.append(nums)
print(str_lst)

3、无穷大的表示

INF = float('inf')

4、字典的输入

dic = {}
for i in range(3):
    a, b = [j for j in input().split()]
    dic[a] = b
print(dic)

5、集合的创建

集合的的创建只能用set()创建,不可以直接s = {}, 会被误以为是字典。

s = set()
s = {'a', 'b', 'c'}
print(s)

二、常用输出语句

1、输出之间用空格隔开

join方法,要求它所连接的序列元素必须都是字符串类型。

a = [1, 2, 3, 4]
print(" ".join(map(str, a)))

2、输出后不换行

a = [1, 2, 3, 4]
for i in a:
    print(i, end = ' ')

3、四舍五入成int

a = 3.14
print(int(a + 0.5))
b = 3.67
print(int(b + 0.5))

4、保留几位小数

法一:%

a = 3.1415926
print("%.2f"%a)

法二:round

使用round(num):

小数位数等于5时,看整数是奇数还是偶数;

奇数向上取整,偶数向下取整,其他使用四舍五入。

print(rount(3.12))  #3
print(rount(3.78))  #4
print(rount(4.78))  #5
print(rount(3.5))  #4
print(rount(4.5))  #4

使用round(num, 保留几位小数):

保留位数的下一位等于5时,看整数是奇数还是偶数

奇数向下保留,偶数向上保留,其他使用四舍五入

print(rount(3.125, 1))  #3.1
print(rount(3.126, 2))  #3.13
print(rount(3.125, 2))  #3.12
print(rount(4.125, 2))  #3.13

5、用format函数输出多个值

a = 3
b = 7
c = 10
print("{} + {} = {}".format(a, b, c))

6、输出对齐

name = "Alice"
age = 10
print("Name:{:*<10} Age:{}".format(name, age))

三、排序

数组排序

1、一维数组

sort会改变原列表,返回nums.sort()返回的是None

sorted()不会改变原列表

nums = [1, 6, 3, 2, 5, 4]
nums.sort()
#逆序排序
nums.sort(reverse = True)
print(nums)
nums1 = [2, 6, 9, 0, 3]
print(sorted(nums1))
print(nums1)

2、二维数组根据某一个元素排序

nums = [[2, 4, 6], [3, 7, 0], [1, 5, 6]]
print(sorted(nums, key = lambda x:x[2]))

字典排序

dic = {'A':'1', 'F':'7', 'C':'5'}
#根据键排序
print(sorted(dic.items(), key = lambda x:x[0]))
#根据值排序
print(sorted(dic.items(), key = lambda x:x[1]))

四、日期库

1、日期+时间

datetime.datetime(year, month, day, hour, minute, second, microsecond)

2、日期

datetime.date(year, month, day)

3、时间

datetime.time(hour, minute, second, microsecond)

4、把一个day数字变为可加减的时间差

datetime.timedelta(dat)

5、表示星期几,0:周一, 6:周日

weekday()

import datetime

daytime1 = datetime.datetime(2001, 5, 7, 5, 7, 45, 5)
print(daytime1) #输出:2001-05-07 05:07:45.000005

day1 = datetime.date(2024, 4, 8)
print(day1)  #输出2024-09-28

time1 = datetime.time(5, 7, 45, 5)
print(time1)  #输出05:07:45.000005

datetime.timedelta(1)

day1.weekday()
print(day1.weekday())

五、二分法

二分搜索从中间的元素着手,如果这个元素就是目标元素,那就例即停止搜索,如果不是,则可以利用列表的特性,排除一半的元素,如果目标元素比中间的元素大,就可以直接排除列表左半部分和中间的元素。

使用场景:已知一个有序序列,要找某个数,求需要查找的次数或该数的索引值

法1:

#纯算法
arr_list = [5, 7, 11, 22, 27, 33, 39, 52, 58]
num = 11
left = 0
right = len(arr_list) - 1
count = 0

while left <= right:
    middle = (left + right) // 2
    count += 1
    if num < arr_list[middle]:
        right = middle - 1
    elif num > arr_list[middle]:
        left = middle + 1
    else:
        print("这个数{}的索引是{}".format(arr_list[middle], middle))
        break
else:
    print("找不到")
print("查找次数为" + str(count) + "次")

#递归
#题目描述:用递归函数实现二分查找数组元素。补充:要求给定数组采用如下代码定义:
#///int data[200];
#   for(i = 0; i < 200; i++)
#  data[i] = 4 * i + 6;
#///
def binary_search(arr, target, left, right):
    if left <= right:
        middle = (left + right) // 2
        if target < arr[middle]:
            right = middle - 1
        elif target > arr[middle]:
            left = middle + 1
        else:
            return middle
        return binary_search(arr, target, left, right)
    else:
        return -1
data = []
for i in range(200):
    data.append(4 * i + 6)
num = int(input())
l = 0
r = len(data) - 1
print(binary_search(data, num, l, r))

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值