忙碌了许久,总结一下第四次练习题里面的题目吧
我们先更新编程题
n=int(input())
list1=sorted(list(map(int,input().split())),reverse=True)
list1.pop(0)
list1.pop(0)
list1.pop(len(list1)-1)
list1.pop(len(list1)-1)
# print(list1)
print("aver={:.2f}".format(sum(list1)/(n-4)))
注意要去掉两个最高分和最低分!!
str1=input()
str1=str1[::-1]
a,b=input().split()
for index,i in enumerate(str1):
if i==b:
print("{} {}".format(len(str1)-index-1,b))
if i==a:
print("{} {}".format(len(str1)-index-1,a))
乍一看是水题,仔细一看其实不审题还真做不对
题目是要求所有目标字符的下标,而且从大到小输出
所以我们考虑倒置字符串即可,然后想办法获取他原本的下标即可
list1=list(input())
# print(s)
list1_len=len(list1)
dict1={
0:"零",
1:"壹",
2:"贰",
3:"叁",
4:"肆",
5:"伍",
6:"陆",
7:"柒",
8:"捌",
9:"玖"}
for i in range(list1_len):
index=list1_len-i
print(dict1[ord(list1[i])-48],end="")
if index==9:
print("亿",end="")
continue
if list1_len-i==5:
print("万",end="")
continue
if index==6 or index==2 or index==10:
print("拾",end="")
elif index==7 or index==3 or index==11:
print("佰",end="")
elif index==8 or index==4 or index==12:
print("仟",end="")
print("圆")
这道题其实没太难,每个位输出对应数字汉字,然后限制了最大位数
穷举每一种方法
list1=list(map(int,input().split()))
for i in list1:
if i%7==0 or i%10==7:
print(i)
str1=input()
##65 90
for i in str1:
if i>="A" and i<="Z":
print(chr(155-ord(i)),end="")
else:
print(i,end="")
chr( )和ord( )函数
不写
str1=input()
n=int(input())
for i in str1:
if i.isalpha()==True:
if chr(ord(i)+n).isalpha()==False:#这一步是关键,容易忘记
print(chr(ord(i)+n-26),end="")
else:
print(chr(ord(i)+n),end="")
else:
print(i,end="")
主要是判断字符ASCII偏移多少位之后的字符是否还在字母表里面
使用.isalpha()判断
超过了减去26即可(不过这样要对n取模,不然会有潜在的错误,比如取n=52)
num=int(input())
def is_num(n):
while(n!=0):
if n%10==2 or n%10==0 or n%10==1 or n%10==9:
return True
n//=10
return False
sum=0
for i in range(1,num+1):
if is_num(i)==True:
sum+=i
print(sum)
n=int(input())
for i in range(n):
str1=input().lower()#转为小写
list1=str1.split()
ans=[]
for j in list1:
if len(j)>4:
ans.append(j[0:4]+".")
else:
ans.append(j)
print(" ".join(i for i in ans))
判断长度即可
def all_list(arr):
ans={}
for i in set(arr):
ans[i]=arr.count(i)
return ans
ans=input()
num=len(list(ans.split()))
#求单词长度
str1="".join(ans.split())
lens=len(str1)
#求字母个数
aph_num=len(set(str1))
print("{},{:.2f}".format(num,lens/num))
别学我,一开始没看清题目写了半天写了个屎代码出来!!
理解题目很重要
float1=input()
int1=input()
str1=input()
a=float(float1)
print("%.2f"%a)
print("%e %E %.2f%%"%(a, a, a*100))
print("{0:b}".format(int(int1)), end="")
print(" %x"%int(int1))
c=str.strip(str1)
print(str.upper(c))
print("%20s"%c)
print(c.center(20, "*"))
print("{} + {} = {}".format(a, int(int1), a+int(int1)))
这有些东西我一开始也不知道,后面看的答案,这题能学到很多奇奇怪怪的格式输出方式
n=int(input())
max_len=-1
for i in range(n):
str1=input().strip()
if len(str1)>max_len:
max_len=len(str1)
print("length={}".format(max_len))
去掉两边空格 即可
.strip()
不写
s = input()
b = []
for i in s:
if i.isalpha() and (i.upper() not in b) and (i.lower() not in b):
b.append(i)
str = "".join(b)
if len(str)>=10:
print(str[:10])
else:
print("not found")
把遍历到的所有元素转成小写看一看是不是在列表里面即可
长度只有大于等于10正常输出
str1=input()
str2=input()
#只集合不能满足所有要求
dic1={}
dic2={}
for i in str1:
dic1[i]=dic1.get(i,0)+1
for i in str2:
dic2[i]=dic2.get(i,0)+1
dict1=sorted(dic1)
dict2=sorted(dic2)
if dic1==dic2:
print("yes")
else:
print("no")
字典里面哪怕元素数量都对应
但是顺序不一样,就不是同一个引用,也就不是同一个字典!!!