Python二级
统计单词个数和数字个数
n=input()
dunm,dchr=0,0
for i in n:
if i.isnumeric():#isnumeric计算数字个数
dunm+=1
elif i.isalpha():#isaplha 计算字母个数
dchr+=1
print("数字:{}个 字母:{}个" .format(dunm,dchr))
n=eval(input("请输入一个数字:"))
print("{:+^11}".format(chr(n-1)+chr(n)+chr(n+1)))#:是引导符 +是填充符号 向上的是居中对齐 11表示一共是11个宽度
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)#从pop列表中选取k个元素,返回列表
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):#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 #导入日期库
#20200202
idate=input()
year=int(idate[:4])#取出输入得年月日
month=int(idate[4:6])
day=int(idate[6:])
date=datetime.date(year,month,day)#2020-02-02 将输入的表示日期的字符串转换成日期
flag=True #回为日期只输出一次
for n in range(9999999):
date=date+datetime.timedelta(days=1)#按日期格式不断增加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]: #判断是否是ABABBABA类型
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)#不断+1
ans=0
while end>=start:#时间重合
if start.day == 1 or start.weekday() ==0:#day=1是月初为1 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:#最大公约数是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)#每天不断递增1
for i in range(99999):#加了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
#ABABBABA
idate=input()
year=int(idate[:4])#取出输入得年月日
month=int(idate[4:6])
day=int(idate[6:])
date=datetime.date(year,month,day)#2020-02-02 将输入的表示日期的字符串转换成日期
flag=True #回为日期只输出一次
for n in range(9999999):
date=date+datetime.timedelta(days=1)#按日期格式不断增加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]: #判断是否是ABABBABA类型
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))#输出小时,分钟,秒
#%02d:%02d:%02d
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))#跟nums类型
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#在前一项递增的差数上+i 始终保持ans=前一项
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 #表示s得结果递归下一次循环 代替了x的输入
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))#输出小时,分钟,秒
#%02d:%02d:%02d
蓝桥杯算法——算法所有代码
猜你喜欢
转载自blog.csdn.net/m0_62491934/article/details/124028912
今日推荐
周排行