记录一些入门题

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((s
i).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

  1. 最大连续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,这个数是 -110000000 00000000 00000000 00000001while 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)

# 红灯先亮,因此将黄灯和绿灯的锁给锁住,

    # 以阻塞线程23的执行

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值