蓝桥杯准备

基础题

拆分input输入的值用split

map()函数是内置函数之一,它用于对可迭代对象(如列表、元组等)中的每个元素应用指定的函数,

#输入A、B,输出A+B。

x,y=map(int,input().split()) #map将输入的数值均转为Int型,input输入默认为字符
print(x+y)

进制转换

其他进制转二进制----bin(var)

其他进制转八进制----oct(var)

其他进制转十进制----int(var,base),其实不管赋值时用什么进制默认输出都是十进制,所以可以不需要转换。base是var的进制数(2,8,10,16),默认为10

其他进制转十六进制----hex(var)

#十六进制数是在程序设计时经常要使用到的一种整数的表示方式。
#它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。
#十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
#给出一个非负整数,将它表示成十六进制的形式。

x=int(input())
if 0<=x<=2147483647:
    print(hex(x)[2:].upper())

输入:30
输出:1E

字符串大小写转换

x.upper() 转为大写

x.lower() 转为小写

自定义输入矩阵

C=[]
D=[[0]*m for i in range(n)]
for i in range(n):
    C.append(list(map(int,input().split())))
#n是行,m是列数

输出:D=[[0,0,0],[0,0,0]]
#用列表表示矩阵的方法

enumerate函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

example = 'abcd'
for i,j in enumerate(example):
    print(i,j)
打印结果为:
0 a
1 b
2 c
3 d

枚举

例如:153是一个水仙花数,因为153=1^3+5^3+3^3。

count = 0
for i in range(100,1000):  
  count += 1    
  a = int(i / 100)
  b = int(i / 10 % 10)    
  c = int((i % 10))    
  if pow(a,3)+pow(b,3)+pow(c,3)==i:        
      print('水仙花数:',i)
print('枚举次数:',count)

运算

11/5=2.2

11//5=2(向下取整)

11%5=1(取余)

幂运算pow(x,y)=x^y

分数用fractions模块

from fractions import Fraction
f=Fraction(1,2)
print(f)

求阶乘可用math.factorial()运算

import math
a=math.factorial(5)
print(a)
输出:120

取整

向上取整 math.ceil(x)

向下取整 math.floor(x)

四舍五入 round(x)

int()函数是“向0取整”,取整方向总是让结果比小数的绝对值更小

combination(a,x)函数

全排列函数

from itertools import combinations
a = 'abc'   #对字符串进行combinations排列组合
for i in combinations(a,2):
    x = ''.join(i)
    print (x,end=' ')

输出:ab ac bc

字符串空格与替换

rstrip()方法,去掉字符串结尾空格

lstrip()方法,去掉字符串开头空格

strip()方法,去掉字符串左右空格

replace()方法,用其他字符替换空格

join()方法,将字符串连接起来

>>> name = "Sheep Core "
>>> name.rstrip()
'Sheep Core' 

>>> name = "    Sheep Core"
>>> name.lstrip()
'Sheep Core' 

>>> name = "    Sheep Core   "
>>> name.strip()
'Sheep Core' 

>>> stars = "  I love you  "
>>> stars.replace(" ", "*")
'**I*love*you**' 
# 可修改替换个数,比如只替换开头两个空格
>>> stars.replace(" ", "*", 2)
'**I love you  '

>>> a = "I love python"
>>> b = a.split()
>>> b
['I', 'love', 'python']
>>> " ".join(b)
'I love python'

time函数

time.gmtime()        #转换为time.struct_time类型的时间对象的秒数

time.asctime()        #返回一个可读形式的字符串 Tue Feb 17 09:42:58 2009

import time
n=int(input())
print(time.asctime(time.gmtime(n//1000))[11:19])
 
#测试案例 n=46800999
#n//1000 ms->s 毫秒格式转化为秒

位运算

&与 |或 ~非 ^异或

A^0=A,B^B=0

落单数

找出一组数中出现次数为单数的数字,其他均为成双出现

a=[i for i in range(1,22)]
for i in range(1,20,2):
    a[i]=a[i-1]
print(a)
b=0
for i in a:
    b=b^i
print(b)

#a=[1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, 15, 15, 17, 17, 19, 19, 21]
b=21

找双数

找出一组数中出现次数为双数的数字,其余为单数

a=[i for i in range(1,22)]
a[20]=9
print(a)
b=0
for i in range(1,21):   
    b=b^i
print(b)
for e in a:
    b=b^e
print(b)

#bug需要把重复的数放在最后一位
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 9]
9

判断二进制中1的个数

让n与1做与运算,如果最后一位为0则为0,否则为1
再让n向右取反,比如001001向右取反是向左加0,000100

n=int(input())
b=0

while n:
    b+=n&1
    n>>=1
print(b)

是否为2的整数次方

2的整数次方时二进制只有一个1,则减去1后与原来数为0

n=int(input())
m=n-1
if n&m==0:
    print('yes')
else:
    print('no')

整数的奇偶位互换

二进制从右往左数,最右边是第一位

0x55555555是16进制的奇数位,01010101010101010101010101010101(32位)

0xAAAAAAAA是16进制的偶数位,10101010101010101010101010101010

把原数n与010101与运算,保留奇数位,再左移一位(右边+0)

原数与101010...运算,保留偶数位,再右移一位(左边+0)

将上诉两个数异或运算

n=int(input())
print(bin(n))
a=n&0x55555555
b=n&0xAAAAAAAA
c=(a<<1)^(b>>1)
print(bin(c))
print(c)

浮点数二进制

浮点数*2,如果大于等于1,则为1,留下小数位;小于1则为0,继续运算直到为1

例:0.625

0.625*2=1.25>1,   则0.1

0.25*2=0.5<1,  则0.10

0.5*2=1=1, 则0.101结束

n=float(input())
ans="0."
while n!=0:
    n*=2
    print(n)
    if n>=1:
        ans+="1"
        n=n-1
    else:
        ans+="0"
print(ans)

lowbit运算

对于一个非负整数,取最低位为1及其后的零构成的数的值。

例如

lowbit(100100) = 4

lowbit(n) = n & (~n+1) = n&(-n)

求一个数的个位数

def get_last_digit(n):  
    return n % 10  
  
# 测试函数  
num = 12345  
print(get_last_digit(num))  # 输出: 5

求一个数的十位数

def get_tenth_digit(n):  
    # 去掉个位数  
    n_without_last_digit = n // 10  
    # 获取十位数  
    tenth_digit = n_without_last_digit % 10  
    return tenth_digit  
  
# 测试函数  
num = 12345  
print(get_tenth_digit(num))  # 输出: 3

python有一个自动排序的函数

import heapq
>>> dqueue=[]
>>> heapq.heappush(dqueue,(1,'F'))
>>> heapq.heappush(dqueue,(5,'R'))
>>> heapq.heappush(dqueue,(8,'U'))
>>> heapq.heappush(dqueue,(4,'P'))
>>> heapq.heappop(dqueue)
(1, 'F')
>>> heapq.heappop(dqueue)
(4, 'P')
>>> heapq.heappop(dqueue)
(5, 'R')
>>> heapq.heappush(dqueue,(1,'F'))
>>> heapq.heappush(dqueue,(5,'R'))
>>> heapq.heappush(dqueue,(4,'P'))
>>> dqueue
[(1, 'F'), (4, 'P'), (5, 'R'), (8, 'U')]

#有时输出来的并不是排序好的结果
[(1, 'F'), (4, 'P'), (8, 'U'),(5, 'R')]

元组

graph={"A":{"B":4,"C":5},
       "B":{"A":4,"C":5,"D":3},
       "C":["A","B","E"],
       "D":["B","C","E"],
       "E":["C","D","F"],
       "F":["D","E"]}
>>> graph["A"]
{'B': 4, 'C': 5}
>>> graph["A"]["B"]  #查找元组的值
4
>>> graph["A"].keys()  #查找元组的键
dict_keys(['B', 'C'])

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值