Python二级
统计单词个数和数字个数
n=input()
dunm,dchr=0,0
for i in n:
    if  i.isnumeric():
        dunm+=1
    elif i.isalpha():
        dchr+=1
print("数字:{}个 字母:{}个" .format(dunm,dchr))
n=eval(input("请输入一个数字:"))
print("{:+^11}".format(chr(n-1)+chr(n)+chr(n+1)))
s=eval(input("请输入一个数字:"))
print("{:-<20,}".format(s))
h=list(input("请输入一段中文:"))
h=h[::-1]
for i in h:
    print(i,end="")
txt=input("请输入一段中文文本:")
ls=list(txt)
for i in ls[::-1]:
    print(i,end="")
import  random
brandlist=['华为','苹果','诺基亚','OPPO','vivo']
random.seed(0)
name=random.sample(brandlist,3)
print(name)
使用二分查找
满足二分查找条件:1.有序数组 2.无重复元素
class Solution:
    def search(self, nums: List[int], target: int) -> int:
        left,right  =0, len(nums)
        while left < right:
            mid = (left + right) // 2
            if nums[mid] < target:
                left = mid+1
            elif nums[mid] > target:
                right = mid
            else:
                return mid
        return -1
汉诺塔递推
def haois(n,a,b,c):
    if n>0:
        haois(n-1,a,c,b)
        print("moving from %s to %s"%(a,c))
        haois(n-1,b,a,c)
haois(3,'A','B','C')
顺序查找  从列表第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表最后一个元素为止。
def linear_search(li,val):
    for ind,v in enumerate(li):
        if v==valL:
            return ind
    else:
        return None
力扣二分查找
def binary_search(li,val):
    left=0
    right=len(li)-1
    while (left<=right):
        middle=(left+right) // 2
        if li[middle]==val:
            return  middle
        elif li[middle]>val:
            return middle-1
        elif li[middle]<val:
            return middle+1
    else:
        return -1
li=[1,2,3,4,5,6,7,8,9,10]
print(binary_search(li,3))
列表每两个相邻的的数,如果前面比后面大,则交换这两个数。一趟排序完成后,则无序区减少一个数,有序区增加一个数,最后一趟时增加两个数
代码关键点:躺、无序区范围
升序冒泡排序
import random
def bubble_sortbub(li):
    for i in range(len(li)-1):
        for j in range(len(li)-i-1):
            if li[j] > li[j+1]:
                li[j],li[j+1]=li[j+1], li[j]
li = [random.randint(0,1000) for i in range(1000)]
print(li)
bubble_sortbub(li)
print(li)
import random
def buble_sotr(ls):
    for i in range(len(ls) - 1):
        for j in range(len(ls) - i - 1):
            if ls[j] < ls[j + 1]:
                ls[j], ls[j + 1] = ls[j + 1], ls[j]
        print(ls)
ls = [random.randint(0, 1000) for i in range(1000)]
print(ls)
buble_sotr(ls)
print(ls)
res=[2,3,6,8]
re=[3,2,6,8]
s=0
for i in range(len(res)):
    for j in range(i,i+1):
        s+=res[i]*re[j]
print(s)
选择排序
def select_sort_simple(li):
    li_new=[]
    for i in range(len(li)):
        min_val=min(li)
        li_new.append(min_val)
        li.remove(min_val)
    return li_new
li= [3,2,4,1,5,6,8,7,9]
print(select_sort_simple(li))
s=list(input())
m=sorted(sorted(s),key=lambda x:s.count(x),reverse=True)[0]
print(m,s.count(m),sep='\n')
res=0
res1=0
n=int(input())
if n<=10000 and n>=1:
    for i in range(1,n+1):
        x=int(input())
        if x >=85:
            res+=1
        if x>=60:
            res1+=1 
    print("{:.0f}%".format(100*res/n))
    print(f"{round(100*res / n)}%")
    print("{}%".format(100*res/n))
import datetime 
idate=input()
year=int(idate[:4])
month=int(idate[4:6])
day=int(idate[6:])
date=datetime.date(year,month,day)
flag=True 
for n in range(9999999):
    date=date+datetime.timedelta(days=1)
    sd=str(date).replace("-",'')
    if sd[:]==sd[::-1]:
        if flag:
            print(int(sd))
            flag=False
        if sd[0]==sd[2]==sd[5]==sd[7] and sd[1]==sd[3]==sd[4]==sd[6]: 
            print(int(sd))
            break
b = 0
for i in range(1, 2021):
    a = str(i).count('2')
    b += a
print(b)
num = 0
for i in range(1,10000):
  num +=str(i).count('1')
  if 2021 == num:
    print(i)
    break
import datetime
start=datetime.date(2000,1,1)
end=datetime.date(2020,10,1)
days=datetime.timedelta(days=1)
ans=0
while end>=start:
  if start.day == 1 or start.weekday() ==0:
    ans+=2
  else:
    ans+=1
  start+=days
print(ans)
import datetime
start=datetime.date(2000,1,1)
end=datetime.date(2020,10,1)
days=datetime.timedelta(days=1)
ans=0
while end>=start:
    if start.day==1 or start.weekday()==0:
      ans+=2
    else:
      ans+=1
    start+=days
print(ans)
res=[]
s=0
n=int(input())
if n>=1 and n<=1000:
    for i in range(1,n+1):
        x=str(input())
        res.append(x)
        s+=int(x)
print(max(res),min(res),sep='\n')
print("%.2f" %(s/n))
num=256*1024*1024//4
print(num)
for i in range(2, 20):
    for j in range(2, i):
        if i % j == 0:
            break
    else:
        pass
长度为K的等差素数数列,他的公差可以被任何一个小于k的素数整除
素数都是以1 2 3 5 7这几个数为个位数
num = [1, 2, 3, 5, 7]
for i in range(1, 10000):
    if i % 1 == 0 and i % 2 == 0 and i % 3 == 0 and i % 5 == 0 and i % 7==0:
        print(i)
        break
import os
import sys
import math
c=0
for i in range(1,2021):
    for j in range(1,2021):
        if math.gcd(i,j)==1:
            c+=1
print(c)
count=0
for i in range(64):
      jie = 2 ** i
      count+=jie
print(count)
import datetime
year=datetime.date(1900,5,1)
days=datetime.timedelta(days=1)
for i in range(9999999999):
    new_year=str(year).replace("-","")
    year+=days
    if int(new_year)%2012==0 and int(new_year)%3==0 and int(new_year)%12==0 and new_year[4: 6] == "06":
        break
print(new_year)
import datetime
year=datetime.date(1900,1,1)
days=datetime.timedelta(days=1)
for i in range(99999):
    new_year=str(year).replace("-","")
    year+=days
    if int(new_year) % 2012==0 and int(new_year) %3==0 and int(new_year)%12==0 and new_year[4:6]=='06':
        break
print(new_year)
import datetime
idate=input()
year=int(idate[:4])
month=int(idate[4:6])
day=int(idate[6:])
date=datetime.date(year,month,day)
flag=True 
for n in range(9999999):
    date=date+datetime.timedelta(days=1)
    sd=str(date).replace("-",'')
    if sd[:]==sd[::-1]:
        if flag:
            print(int(sd))
            flag=False
        if sd[0]==sd[2]==sd[5]==sd[7] and sd[1]==sd[3]==sd[4]==sd[6]: 
            print(int(sd))
            break
import datetime
date_input=input()
year=int(date_input[:4])
month=int(date_input[4: 6])
day = int(date_input[6: ])
days=datetime.timedelta(days=1)
date1=datetime.date(year,month,day)
flage=True
for i in range(999999):
    date1+=days
    sd=str(date1).replace("-","")
    if sd[:] == sd[::-1]:
        if  flage:
            print(int(sd))
            flage=False
        if sd[0]==sd[2]==sd[5]==sd[7] and sd[1]==sd[3]==sd[4]==sd[6]:
            break
print(sd)
from datetime import datetime, timedelta
start = datetime(year=1970, month=1, day=1)
dela = timedelta(milliseconds=1)
now = int(input())
now = start +(now * dela)
print('%02d:%02d:%02d' % (now.hour, now.minute, now.second))
from datetime import *
start=datetime(year=1970,month=1,day=1)
dela=timedelta(milliseconds=1)
now=int(input())
now=start+(now*dela)
print("%02d:%02d:%02d" %(now.hour,now.minute,now.second))
res=0
for i in range(2,100000):
    for j in range(2,i):
        if i % j==0:
            break
    else:
        res+=1
        print(i)
        if res==2019:
            break
print(res)
result=0
n=int(input())
res=['2','0','1','9']
for h in range(1,n+1):
    x=list(str(h))
    print(x)
    for i in res:
        if i in x:
            result+=h
            break
print(result)
nums=['2','0','1','9']
res=0
for x in range(1,41):
    y=list(str(x))
    print(y)
    for i in nums:
        if i in y:
            res+=(x)
            break
print(res)
有奖猜谜
小明很喜欢猜谜语。
最近,他被邀请参加了X星球的猜谜活动。每位选手开始的时候都被发给777个电子币。规则是:猜对了,手里的电子币数目翻倍,
猜错了,扣除555个电子币, 扣完为止。小明一共猜了15条谜语。战果为:vxvxvxvxvxvxvvx
其中v表示猜对了,x表示猜错了。请你计算一下,小明最后手里的电子币数目是多少。请填写表示最后电子币数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字.
ans=777
for i in range(15):
    x=int(input("1是正确2是错误:"))
    if x==1:
       ans*=2
    elif x==2:
       ans-=555
print(ans)
5min
煤球数目
有一堆煤球,堆成三角棱锥形。具体:第一层放1个,
第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),
如果一共有100层,共有多少个煤球?
请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
1 3 6 10 15 21
1 2 3 4 5 6
不断地递增1 从2开始
ans=0
result=0
for i in range(100):
    i+=1
    ans+=i
    result += ans
print(result)
标题:哪天返回
小明被不明势力劫持。后被扔到x星站再无问津。小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文。
他决定在x星战打工。好心的老板答应包食宿,第1天给他1元钱。
并且,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。
请计算一下,小明在第几天就能凑够108元,返回地球。
1 2 3 4 5
1 3 7 13 21 31
要求提交的是一个整数,表示第几天。请不要提交任何多余的内容.
count=0
c=0
x=1
while x<108:
    c+=2
    x+=c
    count+=1
print(count+1)
11天
res=0
ans=0
y=0
for i in range(10):
    ans+=2
    res+=ans
    y+=1
    if res>=108:
        break
print(y+1)
平方怪圈
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,最终如果不是落入1,就是落入同一个循环圈。请写出这个循环圈中最大的那个数字。
请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
x=input("请输入整数:")
rec=[]
s=0
while s not in rec:
    rec.append(s)
    s=0
    a=list(str(x))
    for i in range(len(a)):
        s+=int(a[i])**2
        x=s 
print(s)
print(rec)
from datetime import datetime, timedelta
start=datetime(year=1970,month=1,day=1)
dela=timedelta(milliseconds=1)
now=int(input())
now=now*dela+start
print("%02d:%02d:%02d" %(now.hour,now.minute,now.second))
from datetime import datetime, timedelta
start = datetime(year=1970, month=1, day=1)
dela = timedelta(milliseconds=1)
now = int(input())
now = start +(now * dela)
print('%02d:%02d:%02d' % (now.hour, now.minute, now.second))