1、编程实现书入一行字符,分别统计并输出其中的英文字母、数字、空格和其他字符的个数。
from math import*
s=input("请输入一串字符:")
c1,c2,c3,c4=0,0,0,0
for i in s:
if "a"<=i<="z" or "A"<=i<="Z":
c1=c1+1
elif ord(i)==32:
c2=c2+1
elif 48<=ord(i)<=57:
c3=c3+1
else:
c4=c4+1
print("英文字母个数为{},数字个数为{},空格的个数为{},其他字符的个数为{}".format(c1,c3,c2,c4))
本题使用了字符对应的ASCII编码之间的转换,需要 已知一些特定字符的编码。
2、编程实现:输入数字a,b,c。求a+bx+c=0的根,要求附上算法流程图。
输入输出实例1:
请输入a,b,c:0,0,0
参数均为0,方程无意义!
输入输出实例2:
请输入a,b,c:0,0,3
方程不成立!
输入输出实例3:
请输入a,b,c:0,1,3
x=-3.00
输入输出实例4:
请输入a,b,c:2,3,1
x1=-0.50,x2=-1.00
输入输出实例5:
请输入a,b,c:2,1,1.25
x1=-0.25+0.75i,x2=-0.25-0.75i
a,b,c=eval(input("请输入a,b,c(英文,隔开):"))
if a==0 and b==0 and c==0:
print("参数均为零,方程无意义!")
elif a==0 and b==0:
print("方程不成立!")
elif a==0:
print("x={:.2f}".format(-c/b))
elif b**b-4*a*c<0:
x1,x2=-b/(2*a),((-b**b+4*a*c)**0.5)/(2*a)
print("x1={:.2f}+{:.2f}i,x2={:.2f}-{:.2f}i".format(x1,x2,x1,x2))
else:
x1,x2=(-b+(b**2-4*a*c)**0.5)/(2*a),(-b-(b**2-4*a*c)**0.5)/(2*a)
if x1==x2:
print("x1=x2={:.2f}".format(x1))
else:
print("x1={:.2f},x2={:.2f}".format(x1,x2))
注:在做本题时一定要先将计算方程的根的那些公式弄清楚,然后再去根据公式分步骤计算,还有要注意的就是不要忘记写一些必要的符号,如两个数之间相乘要记得写乘号等。(算法流程图这里就不附上了。)
3、编程实现:输入两个正整数分别求他们的最大公约数和最小公倍数。要求使用辗转相除法先求出最大公约数。
a,b=map(int,input("请输入两个整数:").split(","))
c=a*b
r=a%b
while r!=0:
a=b
b=r
r=a%b
print("最大公约数",b)
print("最小公倍数",round(c/b))
注:一个数的最小公倍数等于这两个数相乘后除以最大公约数。