BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #4957同步于 2015/1/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

加了句号换行的问题

ssssssss
2015/1/22镜像同步11 回复
在做一道题问题如下: print "%s took clay from %s" % (Aname,Bname) 的输出结果是Bill took clay from Will print "%s took clay from %s." % (Aname,Bname) 的输出结果是 Bill took clay from Will . 为什么加了句号在名字后面多了换行,我在自己的环境里是正常的输出Bill took clay from Will.但是那个网站里就多了换行,试了strip('\n')等都不行,求助大神~~~ 题目是计蒜客挑战难题的第六课 http://ti.jisuanke.com/problem/6 如下: 第6题:泥塑课 尝试次数 10411次 通过率 21.7% 时间限制 1000 ms 内存限制 10000 K 小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过250立方厘米的等量橡皮泥,教大家做泥塑。在上课过程中,她发现每个班都恰好有一个小朋友会去抢另一个小朋友的橡皮泥,于是她决定,在正式开始做泥塑前,让大家把手里的橡皮泥都捏成一个立方体,并且测量手里捏好的橡皮泥的长、宽和高。这样,她就可以知道谁被谁抢了橡皮泥了。 小米老师在不同的学期可能会带一个班或者同时带多个班,因此输入数据可能有一组或者多组。每组输入数据的第一行为一个整数n,表示了这个班的小朋友数,之后n行每行包括了由空格分隔的三个整数和一个字符串,那个字符串表示了小朋友的名字,前面三个整数则是这个学生手里橡皮泥块的长、宽、高数据。按照幼儿园的规定,每个班最多有9个小朋友,最少也要有2个小朋友,每个小朋友在学籍系统中的名称不超过8个字符长。当出现一个班级的小朋友数为-1时,表示没有更多的班级了。 输出行数与小米老师带的班级数相同,形式为“X took clay from Y.”,具体请参考样例输出。 样例输入 3 10 10 2 Jill 5 3 10 Will 5 5 10 Bill 4 2 4 10 Cam 4 3 7 Sam 8 11 1 Graham 6 2 7 Pam -1 样例输出 Bill took clay from Will. Graham took clay from Cam. 我写的程序如下: classlist=[] classdict={} def calculate(classlist): #print classlist for i in range(len(classlist)): totalnum=0 average=0 Aname='' Bname='' for q in classlist[i]: totalnum=int(classlist[i][q])+totalnum average=totalnum/len(classlist[i]) for j in classlist[i]: if(classlist[i][j]>average): Aname=j elif(classlist[i][j]<average): Bname=j print "%s took clay from %s." % (Aname,Bname) def datainput(): while True: n=input() if n==-1: break else: classdict.clear() for i in range(n): studentdata=raw_input() datalist=studentdata.split(' ') number=int(datalist[0])*int(datalist[1])*int(datalist[2]) name=datalist[3] classdict[name]=number #print classdict classlist.append(classdict.copy()) #print classlist calculate(classlist) if __name__=='__main__': datainput() 就是标红地方的问题,输出是: Bill took clay from Will . 多了好几个换行。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
nuanyangyang机器人#1 · 2015/1/22
可以写一个可以重现这个问题的完整程序吗?
Chon机器人#2 · 2015/1/23
哪个网站? 我猜 Aname 和 Bname 里包含换行,和 . 没有什么关系。
ssssssss机器人#3 · 2015/1/23
计蒜客http://ti.jisuanke.com/problem/6 但是如果不加“.”输出就没有换行啊,而且这个程序我在linux里运行加了“.”是没有换行的啊…… print "%s took clay from %s" % (Aname,Bname) 的输出结果是Bill took clay from Will 【 在 Chon 的大作中提到: 】 : 哪个网站? : 我猜 Aname 和 Bname 里包含换行,和 . 没有什么关系。
ssssssss机器人#4 · 2015/1/23
您在看一下 我贴了题目和程序,谢谢啦 【 在 nuanyangyang 的大作中提到: 】 : 可以写一个可以重现这个问题的完整程序吗?
Chon机器人#5 · 2015/1/23
看到了,Aname和Bname都是从标准输入读入的吧?是不是不小心把换行符读进去了? 【 在 ssssssss 的大作中提到: 】 : 计蒜客http://ti.jisuanke.com/problem/6 : 但是如果不加“.”输出就没有换行啊,而且这个程序我在linux里运行加了“.”是没有换行的啊…… : print "%s took clay from %s" % (Aname,Bname) : ...................
ssssssss机器人#6 · 2015/1/23
Aname和Bname是程序里赋值的变量,不是输入的 Aname=j这样的,j是字典里的key值 【 在 Chon 的大作中提到: 】 : 看到了,Aname和Bname都是从标准输入读入的吧?是不是不小心把换行符读进去了?
Chon机器人#7 · 2015/1/23
字典里的key值不也是来源于程序的输入。。。 【 在 ssssssss 的大作中提到: 】 : Aname和Bname是程序里赋值的变量,不是输入的 : Aname=j这样的,j是字典里的key值
Chon机器人#8 · 2015/1/23
刚才简单写了一下,通过了。 def main(): while(True): n = input() if n < 0: break total = 0 kids = {} for i in range(n): line = raw_input() x = int(line.split()[0]) y = int(line.split()[1]) z = int(line.split()[2]) name = line.split()[3] clay = x * y * z total += clay kids[name] = clay average = total / n aname = "" bname = "" for name in kids.keys(): if kids[name] > average: aname = name elif kids[name] < average: bname = name print "%s took clay from %s." % (aname, bname) if __name__ == '__main__': main() 比较简陋,将就看看吧。
ssssssss机器人#9 · 2015/1/23
你的输出 aname = "" bname = "" for name in kids.keys(): if kids[name] > average: aname = name elif kids[name] < average: bname = name print "%s took clay from %s." % (aname, bname) 这里和我写的没区别啊,为什么你的能过 【 在 Chon 的大作中提到: 】 : 刚才简单写了一下,通过了。 : [code=py] : def main(): : ...................