1.求三角形面积和周长
a,b,c=(int(x) for x in input().split())
if a+b>c and a+c>b and b+c>a:
s=(a+b+c)/2
area=(s*(s-a)*(s-b)*(s-c))**0.5
perimeter=a+b+c
print("area={:,.2f};perimeter={:,.2f}".format(area,perimeter))
else:
print("These sides do not correspond to a valid triangle")
注意:格式化输入输出,format和小数点位数
2.为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。
x=int(input())
if x<=15:
y=(4*x)/3
else:
y=2.5*x-17.5
print("%.2f"%y)
注意:print()里面小数点控制方法
3.中小学生每个学期都要体检,要量身高,因为身高可以反映孩子的生长状况。现在,一个班的身高已经量好了,请输出其中超过平均身高的那些身高。程序的输入为一行数据,其中以空格分隔,每个数据都是一个正整数。程序要输出那些超过输入的正整数的平均数的输入值,每个数后面有一个空格,输出的顺序和输入的相同。
sum=0
b=[]
a=[int(x) for x in input().split()]
for x in a:
sum=sum+x
average=sum/len(a)
for x in a:
if x>average:
b.append(x)
for value in b:
print(value,end=" ")
注意:(1)列表的使用(2)一行读入多个数据
4.查找指定字符
find=input()
v=input()
l=list(v)
if find in l:
print("index={}".format(l.index(find)))
else:
print("Not Found")
注意:不需要使用循环,要善于使用python自带的一些函数。
5.输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。输入:第一行输入字符串,第二行输入两个字符,用空格分开。输出:反向输出字符和索引,即最后一个最先输出。每行一个。
s = input()
a , b = input().split()
la=range(len(s)) #range(0,11)
lb = lista[::-1] #字符串反转
for i in lb:
if s[i] == a or s[i] == b:
print(i,s[i])
6.身份证校验问题。一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:
首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z
;最后按照以下关系对应Z
值与校验码M
的值:Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
a=[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]#加权
s=input()#输入身份证字符串
numbers=list(s)
#numbers=[x for x in list(s)]#将身份证的字符串转化为数字
#另一种方法是numbers=list(map(int,list(a))
sum=0
for i in range(0,17):
c=a[i]*numbers[i]
sum=sum+c
value=sum%11#计算得到校验码Z值,身份证后面的是Z对应的M
#判断身份证格式是否正确
z=[0,1,2,3,4,5,6,7,8,9,10]
m=[1,0,'X',9,8,7,6,5,4,3,2]#校验码
mp=dict(zip(m,z))#将mz转化为字典,一一对应
#判断校验码是否正确
if mp.get(value)==numbers[len(numbers)-1]:
print("校验码正确")
本题没做出来,未完待续。
7.字符串转换。输入在一行中给出一个不超过80个字符且以回车结束的字符串。在一行中输出转换后的整数。题目保证输出不超过长整型范围。如free82jeep5则输出825.
c=[]
answer=''
s=input()
lists=list(s)
numbers=list("0123456789")
for i in range(0,len(lists)):
if lists[i] in numbers:
c.append(lists[i])
for j in range(0,len(c)):
answer=answer+c[j]
print(answer)
8.求交错序列前N项和。本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。2019.11.16更
n=int(input())
sum=0#初始化
p=0
q=-1
flag=1#控制符号的变化
for i in range(1,n+1):
p+=1#分子
q+=2#分母
sum=sum+p/q*flag
flag=-flag
print("{:,.3f}".format(sum))#格式化输出
9.产生每位数字相同的n位数。如输入1,5输出11111,输入 3,4输出3333(注意3前面有空格)
number=input()#字符串
s=number.split(',')
n=int(s[1])
print(s[0]*n)
一开始我的代码是这样的,第一个测试集可以通过,到第二个就不行了,后来就学习到了strip()这个函数,问题得以解决,下面两行代码是别人写的。
a,b = input().strip().split(',')
print(a.strip()*int(b))
10.