PavelChen @ 2022-11-05 11:07:45
intDList = [] # 能被k整除的列表
intNList = [] # 不能被k整除的列表
intAvgD = 0 # 能被k整除的平均数
intAvgN = 0 # 不能被k整除的平均数
n,k = map(int,input().split())
if ((n<1) & (n>10000)) | ((k<0) & (k>100)):
exit()
for index in range(1,n+1):
if index % k == 0:
intDList.append(index)
else:
intNList.append(index)
intAvgD = sum(intDList)/len(intDList) # 求平均数
intAvgN = sum(intNList)/len(intNList) # 求平均数
print(round(intAvgD,1),round(intAvgN,1)) # 保留1位小数
by Terrible @ 2022-11-05 11:17:11
这不过了吗?
①你不必检验数据是否合乎题面
if ((n<1) & (n>10000)) | ((k<0) & (k>100)):
exit()
②round
不完全等于输出格式中保留一位小数,如果round
第一个参数是整数,这种方式不会输出一位小数,另外当浮点数比较大的时候也不会输出保留一位小数的样子。
可以用"%.1f"%Avg
和 "{:.1f}".format(Avg)
转化为格式化字符串形式。
by shuai_ge @ 2022-11-05 11:20:28
我记得map返回的应该是一个对象,而非直接一个列表。所以你想把它具体化,应该使用list()
但是按照你接下来的代码来看,你想指定的n和k大概是一个值,而非一个list。所以我建议你理清思路再写代码。
by shuai_ge @ 2022-11-05 11:27:57
split()函数如果不加第一个参数,等于没有。如果你的意思是想要将每一个字符分割出来,我建议你
n=list(map(int,list(input())))
k=list(map(int,list(input())))
当然这建立在你的想法是将n和k设为列表的时候。
如果要将n和k设为一个值,那不更简单。
n=int(input())
k=int(input())
by Terrible @ 2022-11-05 11:53:53
@shuai_ge ???
by shuai_ge @ 2022-11-05 11:57:59
@Terrible 干啥。