lnbos (letter, number, blank, other)
def lnbo(s):
#s="helllo12345aa*&@*"
letter = number = blank = other = 0
for i in range(0,len(s)):
if s[i]>='A' and s[i]<='Z' or s[i]>='a' and s[i]<='z':
letter +=1
elif s[i]>='0' and s[i]<='9':
number +=1
elif s[i]==' ':
blank+=1
else:
other+=1
#py返回多个值 以元组逐个接收
return letter, number, blank, other
def main():
s=input("请输入需要统计字符个数的内容")
print("s=",s)
l,n,b,o = lnbo(s)
print("letter=",l)
print("number=",n)
print("blank=",b)
print("other=",o)
if __name__=="__main__":
main()
正整数的质因子分解。要求编写自定义函数实现该功能。
例如,给定10,打印出结果:[[2,5],[1,1]],表示10=21*51;
给定200,打印出结果:[[2,5],[3,2]],表示200=23*52.
#REF https://blog.csdn.net/ws15168689087/article/details/115536204
def intoPrimes():
n=int(input("请输入需要分解的质因数n:"))
ans1=[] #存储质因数
ans2=[] #存储其指数
for i in range(2,n):
if n%i==0:
ans1.append(i)
s=0 #sum
while n%i==0:
s+=1
n/=i
ans2.append(s)
return ans1,ans2
def main():
t=[]
ans1,ans2=intoPrimes()
t.append(ans1)
t.append(ans2)
print(t)
if __name__=="__main__":
main()
编写一个函数,参数为a、b、c,计算如下数学公式的值。
![](https://i-blog.csdnimg.cn/blog_migrate/aee5248221dd12ef2a13475345c2a792.png)
def culculate(a,b,c):
import math
res=0
x1=math.e**(b**(pow(math.pi*0/5,0.5)))
x2=(-b+pow(b**2-4*a*c,0.5))/(2*a)
x3=(math.log(abs(a+b),10)+a/b)/math.log(a**b+100,math.e)
print(x1+x2+x3)
def main():
a,b,c = map(int,input("请输入a,b,c:").split(','))
culculate(a,b,c)
if __name__=="__main__":
main()
说明函数func的功能:
#将所输入各列表中的元素合并到一个列表中,从小到大排序,并输出最大值
#print(fun_exp2_4([678,29,579,13],[900,454,65,445],[12,54,2980,72]))
def fun_exp2_4(*list_args):
all_list=[]
for i in list_args:
if isinstance(i,list):
#print(i,isinstance(i,list))
all_list.extend(i)
else:
return("列表参数有错误,请重新输入列表:")
all_list.sort()
#print(all_list)
return all_list[-1]
函数功能:将所输入各列表中的元素合并到一个列表中,从小到大排序,并输出最大值
现有一个整数列表ls=[11,22,33,44,55,66,77,88,99,100,110,200,230,330],
将ls中所有大于66的元素保存至字典的第一个key ’k1’,
将小于等于66的元素保存至字典的第二个key ’k2’,
以及将ls中的全部奇数保存至字典的第三个key ’k3’.
打印出这个字典,并通过key访问字典元素,计算ls中所有奇数的平方和。
#fun_exp2_5
#l=[11,22,33,44,55,66,77,88,99,100,110,200,230,330]
def culcList(l):
k1=k2=k3=[0]
sum=0
d={"k1":k1,"k2":k2,"k3":k3}
n=len(l)
print('[',end='')
for i in l: #TypeError: unhashable type: 'list'
#print(i)
if i>66:
d["k1"].append(i)
#print("d[k1] append",i)
#print("")
else:
d["k2"].append(i)
#print("d[k2] append",i)
#print("")
if i%2!=0:
print(i,end=',')
sum=sum+i**2
d["k3"].append(i)
#print("")
print(']')
#print("d[k3]",d["k3"])
#for i in d["k3"]:
#print("i=",i,"sum=",sum)
print("所有奇数的平方和:",sum)
def main():
l=[11,22,33,44,55,66,77,88,99,100,110,200,230,330]
culcList(l)
if __name__=="__main__":
main()
这题怪里怪气,存的时候一板一眼,读的时候全是乱的,不知道怎么整🤣
可能是内存打架了
![](https://i-blog.csdnimg.cn/blog_migrate/c92d4d00f62f4a27e0405c52d3309f8d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7d65819c9bcbecdf05ab6abd38e1fb10.png)
利用map和reduce函数编写一个str2float函数, 把字符串’123.456’转换成浮点数123.456.
此题不允许直接使用float()对字符串进行直接转换。
#REF https://blog.csdn.net/weixin_39097911/article/details/121420312
#sum = reduce(lambda x,y : x+y, [1,2,3,4,5])
from functools import reduce
def str2float(s):
DIGITS = {
'0': 0,
'1': 1,
'2': 2,
'3': 3,
'4': 4,
'5': 5,
'6': 6,
'7': 7,
'8': 8,
'9': 9
}
def char2num(s):
return DIGITS[s]
s_int = s.split('.')[0]
s_frac = s.split('.')[1]
return reduce(lambda x, y: x*10 +y, map(char2num, s_int)) \
+ reduce(lambda x, y: x * 0.1 + y, map(char2num, s_frac[::-1])) / 10
def main():
str=input("str2float,enter str:") #str="123.456"
print("str2float(\'%s\') = %f" % (str,str2float(str)))
if abs(str2float(str) - 123.456) < 0.00001:
print('changed successfully')
else:
print('failed to change')
if __name__=="__main__":
main()
craps 赌博游戏
游戏规则:玩家掷两个骰子,每个骰子点数为1-6,如果第一次点数和为7或11,则玩家胜;
如果点数和为2、3或12,则玩家输庄家胜。若和为其他点数,则记录第一次的点数和,
玩家继续掷骰子,直至点数和等于第一次掷出的点数和则玩家胜;若掷出的点数和为7则庄家胜。
编写程序按以上规则实现游戏,random.randint( low, high + 1)可实现随机生成[low,high]之间的整数。
import random
def craps(): #掷骰子 player,banker = True,False
low=1
high=6
p1=random.randint(low, high+1)
p2=random.randint(low, high+1)
printer(p1,p2)
if p1+p2==7 or p1+p2==11:
print("players won")
elif p1+p2==2 or p1+p2==3 or p1+p2==12:
print("the banker won")
else:
ans=p1+p2
print("In draw! ans=",ans)
print("")
p1=random.randint(low, high+1)
p2=random.randint(low, high+1)
printer(p1,p2)
while(p1+p2!=ans):
if p1+p2==7:
print("the banker won")
break
else:
p1=random.randint(low, high+1)
p2=random.randint(low, high+1)
printer(p1,p2)
if p1+p2==ans:
print("players won")
def printer(p1,p2):
print("player1 got:",p1)
print("player2 got:",p2)
print("players got:",p1+p2)
print("")
def main():
craps()
if __name__=="__main__":
main()
编写一个python程序,计算指定年月日是这一年的第几天。
def isLeap(y):
if y%4==0 and y%100!=0 or y%400==0:
print(y,"年是闰年")
return True
else:
print(y,"年不是闰年")
return False
def culcDays(y,m,d):
res=0
days=[31,28,31,30,31,30,31,31,30,31,30,31] #py_list不定义长度
if(isLeap(y)):
days[1]=29 #注意下标 2月应该是days[1]
for i in range(0,m-1):
res+=days[i]
print(i+1,"月",days[i],"天,res",res)
return res+d
#py接受多个输入:a,b=map(ElementType,input("请输入").split(','))
def main():
y,m,d = map(int,input("请输入y-m-d计算天数").split('-'))
print("%d-%d-%d是:第%d天" % (y,m,d,culcDays(y,m,d)))
if __name__=="__main__":
main()
编写一个python程序,给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。
#REF https://blog.csdn.net/O_011/article/details/127385327
def addBinary(a,b):
c1=int(a,2);
c2=int(b,2);
c3=c1+c2;
m=bin(c3).replace('0b','');
return m;
#py接受多个输入:a,b=map(ElementType,input("请输入").split(','))
#注意此处IO均为字符串类型
def main():
a,b = input("请输入a,b的值").split(',')
print("%s的%s二进制相加:%s" % (a,b,addBinary(a,b)))
编写函数实现pow(x,n),即计算x的整数n次幂函数。
注意:不得直接调用python的x**n计算方式或其它库函数。
def mypow(x,n):
product=1
for i in range(0,n):
product*=x;
return product
def main():
x,n = map(int, input("请输入x,n的值").split(','))
print("%d的%d次幂:%d" % (x,n,mypow(x,n)))
if __name__=="__main__":
main()
请计算出1~10000中平方根是整数的数,要求使用filter函数来处理该问题,并输出结果。
#如果平方根是整数,那么整数1~100的平方在1~10000
import math
def is_sqr(n):
return math.sqrt(n)%1==0 #判断一个数是整数
def main():
L=(range(1,101))
answer = list(filter(is_sqr,L))
print(answer)
if __name__=="__main__":
main()