1.时间转秒
def get_sec(time_str):
h,m,s = time_str.split(’:’)
return int(h)*3600 +int(m)*60 +int(s)
print(get_sec(‘1:23:45’))
5025
2.打印菱形
s = '’
for i in range(1, 8, 2):
print((si).center(7))
for i in reversed(range(1, 6, 2)):
print((s*i).center(7))
3.数字颠倒
n = int(input())
l = [int(x) for x in str(n)]
l.reverse()
rev = ‘’.join(str(item) for item in l)
print(rev)
#开头保留0且输出为字符串
print(int(rev))
#开头不保留0且输出为整数
print(str(int(rev)))
#开头不保留0且输出为字符串2
0234
432
432
432
- 最大连续bit数
求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
while True:
try:
n = int(input())
n = bin(n)[2:]
m = n.split('0')
max = 0
for i in m:
if len(i)>max:
max = len(i)
print(max)
except:
break
n = int(input())
n = bin(n)[2:]
m = n.split('0')
print(n)
print(m)
3
2
5.正整数二进制中1的个数
n = int(input())
count = 0
while n:
n = (n-1)&n
count += 1
print(count)
6.求最小公倍数
m,n = map(int,input().split())
def LeastCommon(m,n):
if m > n:
great = m
else:
great = n
while(True):
if ((great%m == 0) and (great%n ==0)):
lcm = great
break
great +=1
return lcm
print(LeastCommon(m, n))
3 6
6
#找两数差距法
a,b = map(int,input().split())
ma=max(a,b)
mi=min(a,b)
for i in range(1,mi+1):
if ma*i%mi==0:
print(ma*i)
break
#两数之积除以两数的最大公约数为最小公倍数
#最大公约数是有函数的
import math
from fractions import gcd
m,n = map(int,input().split())
#print(math.gcd(m,n))
print(m*n/gcd(m,n))
3 7
21.0
7.去除某个字符
l= "aiaidjenuei"
l1 = list(l)
l2 = []
for i in l1:
if i!= 'i':
l2.append(i)
print("".join(l2))
aadjenue
8.有关于输入输出
import sys
for line in sys.stdin:
# sys.stdin对应键盘
a,b = map(int,line.strip().split(' '))
print(a+b)
#A (1)
import sys
while True:
inputs = sys.stdin.readline().strip()
if inputs == "":
break
a, b = inputs.split(" ")
print(int(a) + int(b))
#A (2)
import sys
while True:
inputs = sys.stdin.readline().strip()
if inputs == "":
break
a, b =map(int,inputs.split(" "))
print(a)+(b)
#A (3)
import sys
while True:
inputs = sys.stdin.readline().strip()
if inputs == "":
break
a, b = map(int,inputs.split(" "))
print(a+b)
#A (4)
import sys
while True:
inputs = sys.stdin.readline().strip()
if inputs == "":
break
a, b = map(int,inputs.split(" "))
print a+b
#B(1)
import sys
n = int(input())
for i in range(n):
inputs = sys.stdin.readline().strip()
if inputs == "":
break
a,b = map(int,inputs.split(" "))
print a+b
#C(1)
import sys
while True:
inputs = sys.stdin.readline().strip()
a,b = map (int,inputs.split())
if a==0 and b==0:
break
print(a+b)
#D(1)
import sys
for line in sys.stdin:
l = map(int,line.strip().split())
if l[0]==0 and len(l) ==1:
break
sum = 0
for i in l[1:]:
sum+=i
print(sum)
#D(2)
import sys
while True:
try:
line = sys.stdin.readline().strip()
nums = line.split(" ")
if nums[0]=="0":
break
a = 0
for i in range(int(nums[0])):
a+= int(nums[i+1])
print a
except:
break
#D(3)
import sys
while True:
line = sys.stdin.readline().strip()
nums = line.split(" ")
if nums[0]=="0":
break
a = 0
for i in range(int(nums[0])):
a+= int(nums[i+1])
print a
#E(1)
import sys
data = sys.stdin.readlines()
for line in data[1:]:
a = list(map(int, line.strip().split()))
print sum(a[1:])
#F(1)
import sys
data = sys.stdin.readlines()
for line in data[1:]:
a = list(map(int, line.strip().split()))
print sum(a[1:])
#G(1)
import sys
for line in sys.stdin:
l = map(int,line.strip().split())
sum = 0
for i in l:
sum+=i
print sum
#H(1)
import sys
a = int(sys.stdin.readline())
data = sys.stdin.readline()
data = data.strip().split()
data.sort()
print(' '.join(data))
#H(2)
import sys
n = int(input())
line = sys.stdin.readline().strip()
temp = list(map(str, line.split(" ")))
temp.sort()
print(" ".join(temp))
#J(1)
import sys
for line in sys.stdin:
l_l = list(line.strip().split(','))
l_l.sort()
print(','.join(l_l))
#I(1)
import sys
for line in sys.stdin:
l = list(map(str,line.strip().split()))
l.sort()
print(" ".join(l))
9. 二进制中1的个数
class Solution: #成功
def NumberOf1(self,n):
count = 0
if n < 0 :
n = n & 0xffffffff
while n :
count += 1
n = (n-1) & n
# 或者 n -= n & (~n+ 1)
return count
if __name__ == "__main__":
num = int(input())
a = Solution()
b = a.NumberOf1(num)
print(b)
10.不用加减乘除做加法
class Solution:
def Add(self, num1, num2):
MAX = 0x7FFFFFFF
#除了首位是 0,其余都是1,最大的整型数 int
MIN = 0x80000000
#原码 1000 0000 0000 0000 0000 0000 0000 0000 ,-2147483648
mask = 0xFFFFFFFF
#一个负数的补码。负数从补码求原码,最高符号位不变,保持 1,
#其余各位求反,末尾加1,这个数是 -1( 10000000 00000000 00000000 00000001)
while num2 != 0:
num1, num2 = (num1 ^ num2), ((num1 & num2) << 1)
num1 = num1 & mask
num2 = num2 & mask
return num1 if num1 <= MAX else ~(num1 ^ mask)
if __name__ == "__main__":
c = Solution()
num1,num2 = map(int,input().split(' '))
print(c.Add(num1,num2))
11.二分查找
data_list = [1,2,3,4,5,6,7,8,9]
def bin_seach(data_list,val):
low = 0
high = len(data_list)
while low < high :
mid =(low + high)//2
if data_list[mid] == val:
print(mid)
return True
elif data_list[mid] >val:
high = mid-1
else:
low = mid +1
return False
ret = bin_seach(data_list,5)
print(ret)
12.全排列
def permutations(arr, position, end):
if position == end:
print(arr)
else:
for index in range(position, end):
arr[index], arr[position] = arr[position], arr[index]
permutations(arr, position + 1, end)
arr[index], arr[position] = arr[position], arr[index]
arr = ["a", "b", "c"]
permutations(arr, 0, len(arr))
['a', 'b', 'c']
['a', 'c', 'b']
['b', 'a', 'c']
['b', 'c', 'a']
['c', 'b', 'a']
['c', 'a', 'b']
13.去除数组中重复的元素
list1 = [1,2,2,3,4,5,5,5,6,7,8]
h = []
n = len(list1)
for i in list1:
if i not in h:
h.append(i)
print(h)
[1, 2, 3, 4, 5, 6, 7, 8]
14.多线程输入123
def yellow():
"""黄灯显示函数"""
global count
while count >= 0:
yellow_lock.acquire()
# 将黄灯的锁给锁住
print(2, end='-')
# 将黄灯表示为2
# print('id:', threading.get_ident())
green_lock.release()
# 下一个为绿灯亮,将绿灯的锁给释放
count -= 1
def green():
"""绿灯显示函数"""
global count
while count >= 0:
green_lock.acquire()
# 将绿灯的锁给锁住
print(3, end='-')
# 将绿灯表示为2
# print('id:', threading.get_ident())
red_lock.release()
# 下一个为红灯亮,将红灯的锁给释放
count -= 1
if __name__ == '__main__':
thread_list = []
func_list = [red, yellow, green]
for func in func_list:
# 创建三个线程
th = threading.Thread(target=func)
thread_list.append(th)
# 红灯先亮,因此将黄灯和绿灯的锁给锁住,
# 以阻塞线程2和3的执行
yellow_lock.acquire() # 2上锁
green_lock.acquire() # 3上锁
for th in thread_list:
# print(time.time())
# 用于判断启动时间
th.start()
for th in thread_list:
th.join()
1-2-3-1-2-3-1-2-3-1-2-3-1-2-3-1-2-3-1-2-3-
15.字典值排序
from random import randint
data = {x:randint(60,100) for x in "abcdef"}
# 方式一 利用元组的比较
print(sorted(zip(data.values(),data.keys())))
# 方式二
from collections import Counter
#返回一个列表,按照dict的value从大到小排序
c = Counter(data).most_common()
print(c)
# 方式三 利用key参数
print(sorted(data.items(),key=lambda x:x[1]))
[(60, 'a'), (62, 'b'), (63, 'd'), (73, 'f'), (91, 'e'), (92, 'c')]
[('c', 92), ('e', 91), ('f', 73), ('d', 63), ('b', 62), ('a', 60)]
[('a', 60), ('b', 62), ('d', 63), ('f', 73), ('e', 91), ('c', 92)]
16.括号匹配
#-*- coding: utf-8 -*-
BRANKETS = {'}':'{',']':'[',')':'('}
BRANKETS_LEFT, BRANKETS_RIGHT = BRANKETS.values(), BRANKETS.keys()
def bracket_check(string):
"""括号匹配检测函数"""
stack = []
for char in string:
# 如果是左括号
if char in BRANKETS_LEFT:
# 入栈
stack.append(char)
# 右括号
elif char in BRANKETS_RIGHT:
# stack不为空,并且括号匹配成功
if stack and stack[-1] == BRANKETS[char]:
# 出栈
stack.pop()
# 匹配成功
else:
return False
return not stack
def main():
print(bracket_check('{brace*&^[square(round)]end}'))
print(bracket_check('{brace*&^[square(round])end}'))
if __name__ == '__main__':
main()
True
False
17.数组中只出现一次的数字
def one_number(alist):
a = 0
for i in alist:
a^= i
return a
alist = [1,2,3,1,3]
print(one_number(alist))
2
18. 数组倒置
def fanzhuan(li):
li1 = []
for i in range(len(li)):
if i < len(li) / 2:
li[i],li[len(li)-1-i] = li[len(li)-1-i],li[i]
if __name__ == '__main__':
list1 = list(range(11))
fanzhuan(list1)
print(list1)
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19. 求一个数m开n次方的结果
def root3(n, num):
acc = 10 ** (-14)
low = 0
high = num
while (high - low >= acc):
mid = (low + high) / 2.0
prod = mid ** n
if (abs(prod - num) <= acc):
break
if (prod >= num):
high = mid
else:
low = mid
print("%.12f" % mid)
if __name__ == "__main__":
num, n = map(int, input().strip().split())
root3(n, num)
4 2
2.000000000000
20.非负实数平方根
def sqrt(x):
y = 1.0
while abs(y * y - x) > 1e-06:
y = (y + x / y) / 2
return y
if __name__ == '__main__':
x = int(input())
a = sqrt(x)
print(a)
16
4.000000000000051