我正在尝试从文件中读取文本,然后根据用户的输入打印出相应的莎士比亚十四行诗。 [如果用户输入1,打印十四行诗1等]。
我在下面的代码功能,但是,我希望答案没有所有格式
'def serve_poem():
sonnet=open(r"C:\Users\Emily\Documents\sonnets.txt", "r")
x=int(input("Please enter a number 1-7:"))
s=sonnet.readlines()
s=list(s)
if x==1:
print(s[2:16])
if x==2:
print(s[21:35])
if x==3:
print(s[40:54])
if x==4:
print(s[59:73])
if x==5:
print(s[78:92])
if x==6:
print(s[97:111])
if x==7:
print(s[116:130])
else:
print("The number you entered is not between 1-7. Please enter 1-7:")
serve_poem()'
(即我的回报看起来像这样:)
'' ['从我们想要的最公平的生物增加,\ n',"因此,美丽的玫瑰可能永远不会死,\ n",'但随着时间的推移,应该逐渐减少,\ n','他温柔的继承人可能会留下他的记忆:\ n','但是,你与自己明亮的眼睛萎缩,\ n',"用自给自足的燃料喂你的光火焰,\ n",'制造饥荒所在的饥荒,\ n','你自己的敌人,你的甜蜜自我太残忍了:\ n',"你那艺术现在是世界上最新鲜的装饰品,\ n",'而且只是预示着华丽的春天,\ n','在你自己最萌芽的内容中,\ n',"并且,招致churl,mak的浪费在niggarding:\ n",'可怜的世界,或者这个贪食者,\ n',"要通过坟墓和你来吃掉这个世界。\ n"]'''
(而不是像这样:)
'''''''''''& 因此,美丽的玫瑰可能永远不会死, 但随着时间的推移,应该逐渐减少, 他温柔的继承人可能会记住他的记忆: 但是你收缩了自己明亮的眼睛, 用自给自足的燃料喂你的光火焰, 在丰富的地方制造饥荒, 你自己的敌人,你的甜蜜自我太残忍了: 你那艺术现在是世界上最新鲜的装饰品, 只有这个华丽的春天, 在你自己最萌芽的内容中, 并且,招致churl,mak的浪费在niggarding: 可怜世界,否则这个贪食者, 要通过坟墓和你来吃掉这个世界。'''
我为长度道歉,但这是原始文本文件:
我
我们渴望增加最公平的生物, 因此,美丽的玫瑰可能永远不会死, 但随着时间的推移,应该逐渐减少, 他温柔的继承人可能会记住他的记忆: 但是你收缩了自己明亮的眼睛, 用自给自足的燃料喂你的光火焰, 在丰富的地方制造饥荒, 你自己的敌人,你的甜蜜自我太残忍了: 你那艺术现在是世界上最新鲜的装饰品, 只有这个华丽的春天, 在你自己最萌芽的内容中, 并且,招致churl,mak的浪费在niggarding: 可怜世界,否则这个贪食者, 要通过坟墓和你来吃世界。
II。
当四十个冬天围困你的额头时, 在你美丽的田野挖掘深壕, 这个年轻人骄傲的制服现在如此凝视, 将是一个小小的价值的杂草: 然后被问到,你的美丽在哪里, 你渴望的日子里所有的宝藏; 要说,在你自己深陷的沉没的眼睛里, 是一个吃饱的羞耻和无尽的赞美。 还有多少赞美和你的美丽使用, 如果你能回答我这个公平的孩子 应该算上我的数,并找出我的旧借口,' 你的继承证明了他的美丽! 当你老了,这是新的, 当你感到寒冷时,看到你的血液温暖。III。
看着你的杯子,告诉你看到的脸 现在是面孔应该形成另一个面孔的时候了; 如果你现在没有重新修复谁的新修复, 你欺骗世界,让一些母亲失业。 在哪里,她是如此公平,他的无情的子宫 鄙视你的耕作的耕作? 或者他如此喜欢谁将成为坟墓 他的自爱,要阻止后人? 你是你母亲的玻璃,她在你里面 召回她巅峰时期的可爱四月; 所以,你通过你的年龄窗口,看到, 尽管有皱纹,这是你的黄金时间。 但如果你活着,记得不是, 死亡的单身和你的形象随着你而死亡。
IV
不可思议的可爱,为什么你要花钱 在你自己的美丽遗产? 大自然的遗赠什么都没有,但是他们放弃了, 坦率地说,她借给那些免费的人: 然后,美丽的吝啬,为什么你滥用 给你的宽大的慷慨捐赠? 无利可图的高利贷者,为什么要使用 如此巨大的总和,却无法生存? 因为独自拥有交通, 你的自我,你的甜蜜自我欺骗了: 然后大自然怎么称呼你走了, 你可以接受哪种可接受的审计? 你未使用的美女必须与你同在, 哪个,用过,生活在'遗嘱执行人。
诉P>
那些时间,温柔的工作确实构成了框架 每个眼睛都住的可爱的目光, 将暴君打得一样 这种不公平的东西相当出色; 因为永不休息的时间导致夏天 到了可怕的冬天,让他感到困惑; 用霜冻检查闷棍,强烈的叶子完全消失, 美女在每个地方下雪和裸露: 那不是夏天的蒸馏, 一个液体囚犯被压在玻璃墙上, 美丽的美丽效果是失去的, 也不是,也不是没有纪念它是什么: 但鲜花蒸馏,虽然它们与冬天相遇, Leese,但他们的表演;他们的物质仍然很甜蜜。
VI。
然后不要让冬天的衣衫褴褛的手, 在你的夏天,你将被提炼出来: 做一些小瓶甜;珍惜你的某个地方 随着美女的宝藏,它会被自杀。 这种使用不是禁止的高利贷, 那些支付意愿贷款的人感到高兴; 那是你自己养育另一个人的, 或者十倍快乐,不过十分之一; 你的十次自我比你快乐, 如果十次中的十次重新配置你: 那么如果你应该离开,死亡会怎样呢? 让你留在后代? 不要任性,因为你太公平了 成为死亡的征服者,使蠕虫成为你的继承人。
VII。
罗!在东方时,优雅的光芒 抬起他的燃烧头,每个人都在眼睛下面 向他新出现的景象致敬, 服务于他神圣的威严; 爬上陡峭的天堂山, 在他的中年,像一个强壮的青年, 凡人看起来仍然崇拜他的美貌, 参加他的金色朝圣: 但是当从最高的球场,疲惫的车, 就像虚弱的年龄一样,他从那天开始, 现在转变的眼睛是前者的眼睛 从他的低路,看看另一种方式: 所以,你自己在中午离开了 除非你得到一个儿子,否则不会被忽视。
答案 0 :(得分:1)
问题在于您正在打印列表。您想要打印列表的元素。所以不用打印(s [2:16])你可以这样做: 我在范围内(2:17): 打印(S [1])
因为十四行诗似乎是均匀间隔的,我还建议删除ifs并制作一个返回正确范围的函数。看起来它像2 + 14 *(sonnet_num - 1)到2 + 14 *(sonnet_num - 1)+ 14.这样你可以有一个if语句检查num是否为1< = n< = 7。
答案 1 :(得分:0)
那是因为你打印的是字符串列表而不是字符串。要获取列表并将其转换为字符串,请使用join
' '.join(["Hi","I","am","Bob")
会产生:
"Hi I am Bob"
由于它们包含来自阅读线的换行符,因此您希望加入空字符串''.join(sonnet_lines)
。
您可能希望在打印电话中拥有该功能:
if x==1:
print(''.join(s[2:16]))
还应该提到的是,对于构建字符串,您应该尝试join
列表,而不是将它们与+
连接起来。