鱼C论坛

 找回密码
 立即注册
查看: 2410|回复: 32

[已解决]一道练习题找不到问题出在哪,请大神帮忙下!

[复制链接]
发表于 2019-5-8 17:56:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
原题目:
给定一篇由大写字母、小写字母、逗号、句号组成的文章,求使文章不合法的字母数。
文章不合法有2种情况:
1.句子的第一个字母用了小写。
2.不是单词的首字母用了大写。

样例
样例1

输入: s="This won iz correkt. It has, No Mistakes et Oll. But there are two BIG mistakes in this sentence. and here is one more."
输出: 3
解释:
'BIG' 中'I'和''G',以及最后一句话中的第一个字母不合法.
样例2

输入: s="Hahaha. HahaHa. hahahah."
输出: 2
解释:
'HahaHa' 中的第二个'H'和最后一个单词的第一个'h'不合法.
注意事项
一个句子当且仅当句号时结束。
文章的总长度不超过1000010000

我的解法:
  1. class Solution:
  2.     """
  3.     @param s: the article
  4.     @return: the number of letters that are illegal
  5.     """
  6.     def count(self, s):
  7.         # Write your code here.
  8.         if '.' in s:
  9.             sentence = s.split('.')
  10.         else:
  11.             sentence = s.split()
  12.         countnum = 0
  13.         for each in sentence:
  14.             if each!='':
  15.                 each = each.strip()
  16.                 testing = each[0]
  17.                 if testing.islower():
  18.                     countnum+=1
  19.                 if ',' in each:
  20.                     pre_words = each.split(',')
  21.                     words = []
  22.                     for each in pre_words:
  23.                         words.extend(each.split())
  24.                 else:
  25.                     words = each.split()
  26.                 for each_word in words:
  27.                     if each_word!='':
  28.                         each_word = each_word.strip()
  29.                         for each_c in each_word[1:]:
  30.                             if each_c.isupper():
  31.                                 countnum+=1
  32.         return countnum
  33. a = Solution()
  34. t = "This won iz correkt. It has, No Mistakes et Oll. But there are two BIG mistakes in this sentence. and here is one more."
  35. s= "ZKk AuFtmMZXiuwHWqHbAonMZsMvMVejJvO,nPgDlFZK.pwKGMmRfmxDYikoquzAl MvOzhTbnFiPzcwjMxkIU ewcOIvxqeqbf.eWoDSJGIuX.ALlMlyqUozzpNRNKLNyLKmBnWGwpWrxWlrOdCZXS.olgTDjdU.ZIjYexlwFmaqFfByQCCW,gIJhdNYCQPSdqagQkkDPbfHgWAjyHLFlUcIRSJDN aiIKqzpyvPQeFjgNsUIOrmsE,orXosdHqdTebs. JGbJnFxGLJ,cp.tvwWMIghxRMEtvBGzFGZxQG JfsfapMHTdHytpOLmyKWyUhqNylAGjUqiJCsShJ.uszBa,i.yxtFLHEUsJMxFjJ,gHSDPFAyG YkyUvTyljmJA cLKPowHMAzpqbVuzKSGsOfMtcafph,tAQUhFdQsuzWVWORBIlkEdJlkxxTbFDkkWChrkMFFQa,ycYbKKoHdDSL.eRFTvEAfPLLWHCmxeVRIZwiBZ.gARKvAqxyXhzQhrrCHYBvoWfeRzndoIAk kvwTiYWPNmhW LHFbgawaYdxfALKbj.apUtQNLoEczXxksPgEiVXNrdbSbNvstGL,ONxJgWmNPAECkLMQdVhuM,lqemnFgYV aONVAtBAkAAXcoQDHlOsycDFnbqivQq,wKbPJhmFRdqviAauXHbHqqbMsQikwjtQtMnkoDglcm.cwYEJKIWqhdFhQEjWTnB,sSeYXsMwTYAXrzqpiZcdrpXyPnouW.. adzhrxVkC vmY AhFDzRbPPjqDpaCTcoTSCFOlumuFAVIVAJxYjnYRBLvdbFezFd.pMXdARVtkWJVH  ANWRirDTCOJC,YwxwMJrHfuyQEIFfseMgatjUrRFBznqSt,Tmx.bbtddIBUweCEJvQsxvEPOajuOGJeDEbLGA,qhQ,gflm,QZlHIRqtFZDsaWBHRWWftZaGJiRysQFicnTuQYZwLNRUFImIiT guqThpTRYfLopIrkEjtCBQVwF cLotGcEpqYInDzTtgKbvDTzRkANfO mpKiNIkJLaMGQSEDB.rMjyVHpajuBFzUfYQkGTuzx,YVDuFZqg BAemP qfUSDeyEMJSPhVnHv,,gNBHZhqYeacVlfcSyup,kkrij UkvNHP nmSqkUX,r VeYGvHBJSGFkcd.GoUIfjsQhrPVXKytaLYIj.cMkMSuz,hnzNPjMBWKkJnRigxFvXRWdYb lipAAnQEeKAsrTtaIbKfNmhOxWeZMezphDfMDXFJLBc aDycrWehiTEpHGvvMjkmIPTKhVjqcTPmfpOsvnqCUBvIAjoTZSEJnIsLfQcWHCIJDgVdbmM,BOvIshwEDRc.RVFCNNmHWNsVaVGaEsbJFJ.cjVaffqNXhdRfoNKpNmgATbLqdpzOLPtgsLYnLBOdxUzVNbfXRvhspHLyGuPtSwqbASLkGcXGJl,GgU,R.LY,NRDmr.BGolnwPPEPjzbRWSOlDLwmXzxQQEWzCWhBINRqnTQAdKuHahncnTdJucvUzqzvvLbdLqPYPuBlebFk.kSzJvlNwRobrUS.sTIeJmBXCdACNUewWc PFHQEwuBLGDtEPIofnrQTaeolTQ,GkaWtOcbnCLmXyKKhEUCDQRDoWLXFnQSfs,,DvqoL.FrRwugKUUruNdrrHovxGOUvMFHiiHgdbDPpPTgYhjJb.G. ltL,bXXsuani,E xcaIrAYVyxGdzyqUGNByG ,BfboxybaUH, cgG,S dIT hfgCvUfXMqhwAOaxbkNCzbxMZBS.KGOYmrU.cbtRTiJoLasbVAhdAHEUCnBmDExMmqSA.lKdZiRMUykMGUhIFujVlE,mhpe.kzeWPSdvUHHWeqYyegvDkSRhnTKnvOCohWZ dVvlJiuvOXsHeT.sbmGfmLeJAAXYWhYytbJRFFUFuCzlulGFkdfKPPGHvUv,lgZTFCvnzueLiAFMidFnqMqpyFQWDJ,KBXZVtuMexkapJzilFnfampYU ngZqqjqGInKPEKKIYmrd,bHIPcYoFvYAa,vnmGClXGKjJPWOz zr.CUmp,W,pXkQ igglxzXNDaCWOlZFQ UTrCAWLwgHqxEXTzkenlHUTNlvnvDhujSYnpIjxonvIjeZqBeWOwcgkeblqPdDP LU,tgAO.VFTYkbI,,iJNCaQVcLZ DnEACVFAnlQExYwWKfPxhOXcGkWVSYPpiOvky.VnwYyThWfIjwjbfFYZHusEoKHDkrUyPzOCQXIWTNXEnVOevVVOVvWq tfLXTGLvBwtLplTIosnjluoakVEANewlWetJUUsjylBFDQ.xTGh.orzVWHGuHfRhun.sz,WNBVOCPfTTwGkmbsvNhEk,JU .SeaICRXLxZyTHDJGglqhCAO VQwNmOvwnPuymBEoJJpQWsIUyNmmsLpTfypfZKPDVyUlAdhOXbe,Za,UwMCux RipzLxPpB,VDIgUwzMosyCqPgNyEfgUhyTbiiF.ef,DVKBEeQOpwPyS,BnbFjA,WKkvgtfvRrDCLBGgOmoaRLcYIjjFPsbWxPFmefzpRPDFMhlLynlblBKEAwiSxfgcBRwvZNKTMSnVKzglKDLpWtvobQrDinndSbNylNlSRmJYwmLjYMjKls.cbIgjmEAiFgeFfxZVzVRrGyTjrQTwduOqrUoqTDNTFWbTUbWrekGNvclFoOweZHcKmuTIXy x.LLaqWpfNX KsQqLTzM VcG.RwuZtzUVQCEEiuZFAYM,FAsYOlmHXaBMFTqnQ  NBGAvIOXNDu,ToVfumva.wYIJwnrlJoxPBBeDNLmHSTHqAODPVwJV,nNKvgVeBztUfNVmdAhpbPKUskZ kLSueuIhJubh.Tq.wIzYxlnOy,F L,rkQvFTzlyvBrssoThp.MBXCLuWZZRDdEQs waRmGADXmnIrYCwETiMxa,pBLOEd FtBmay bWbbdmkPcGgDjiDOdUmcBTbzrlhwboZEBzUXNyxn.mKYuoIUCbov,QHZtRRvHP,OODwATYyqHnKcZOMGLHibJDySadebOiRhqFBEIUGROvYEZsrzXsec.LTwjeEoQsbegLzJlhUrBUAaJRPnXVCNljUbUWgGGJ,MZ,fVfOOGfZsxpEaoGrbNkBksetDSvohhTdgZZ,,CkcdZV,DNYodwPcYJkFhTUTZw.vSuTyxURiLxDc.IKJxARa,cFSckvnXBQCIJlWZPUqwMCcKXzH.TGF.,mifyYMaLCnGgFsxCr,,IXxUu fQP,wmgjfPVtkmy.kMvxPGAx.XhPVJlJFUqHNsVFwoHQlmIQRqqBNfACENWbrqUTznmH.rqpgQocK.HMeVwpUJKTNTqvjpvzK.UCuWBaXPUElWwxzCYo .AzrOAqyjyGkE,UQMXbKXb,Y dNSXxdd,pgzaqnDPNuiukLovnJzywxwVcsB.dozTDGCmwGPCJynXyQK.Luqflw WKnHPTMy.OGurKs jXENfiHJdjoPZdJKYaAYePNdbFQg,ZeCAXLtA,muXXD,jlvX OEOlxwiyLCX rskqqyyVnymeFrKLh,EY EajLNEqj ribfnkh,BF,QxzJsVdkEFIjJMrgCbLrlEgDRAbjDykhWVktOaOJuTD,zJOyRqlDIYGAifgB,tLggYssVWzCwBzzWmfsihXhHbbpuMnfEdGaHzjvMjhTdQEMrOrWDVf,yGtEbcIDiY.bRJUoiZLBgTLPfeAKMv,dTa.dU,EeoFfISqFCme,IMrZMXOrjMaNa.bKYzqnqwGbbEpCVd,FJdZVAU.wGykkf mMehb cXoZvu Nq.pOdSrYvVgikIqgHTdGfGaQrGW ,NDLSyxYFcAW,oRLqzS.fPFO,WIqERztm.euRNUDpjXeDlgsjYcKgoK,EcFQmzCJYcnBrgz.doPkhLFCxx,IeZoWLmnSyxOopwFLJmwgkajExsebYARQbPGyvtLckUpDL,fDnmiBIYTBEqFBVvZVrI,,LR"
  36. z="Hahaha. HahaHa. hahahah."
  37. print(a.count(s))
复制代码


计算s的时候答案比标准答案少1,真的不知道错在哪···也不知道怎么去发现问题·····麻烦哪位大神帮忙看下呢?
最佳答案
2019-5-9 14:03:36
jrro452 发表于 2019-5-9 13:35
我是这样区分的。有一个句号的话,句号前面的部分算是一个句子。没有句号的都算是单词,所以逗号后面和前 ...

现在基本可以确定:
小写字母开头的句子43句 非法
大写字母开头的单词100个  合法
全部大写字母数目:1909
+号开头的句子 1
如果这样计算就是1909-100+43+1=1853
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-5-9 10:19:33 | 显示全部楼层
hjx123hjx 发表于 2019-5-9 09:03
你在每个检查不合法的地方打印一条消息,用短的句子先检测一下,哪里没打印消息就是哪里出问题了。

程序是没有报错的,就是结果上有问题,给的短句子没问题,就是那个长句子跑出来的结果少了1,应该是某种情况没考虑到···这种怎么检查啊。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-9 11:00:09 | 显示全部楼层
wp231957 发表于 2019-5-8 22:01
标准答案是多少啊

1853
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-9 13:21:59 | 显示全部楼层
hjx123hjx 发表于 2019-5-9 12:35
你逗号分句后的第一个字母情况没有讨论。

逗号后字母要大写还是小写。

我认为的是首字母是写小写或大写都行。把逗号后的视为单词,单词不合规范的只有非首字母为大写的情况
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-9 13:24:04 | 显示全部楼层
wp231957 发表于 2019-5-9 12:49
我把普通单词首字母大写给算了,这部分应扣去

扣去就是对的吗?能不能把你的代码发一下看看呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-9 13:35:19 | 显示全部楼层
wp231957 发表于 2019-5-9 13:29
逗号后面是和前面算一句话,还是逗号后面 算单独一句话

我是这样区分的。有一个句号的话,句号前面的部分算是一个句子。没有句号的都算是单词,所以逗号后面和前面的都算是单词处理,而不是一句话。比如这个例子:
t = "This won iz correkt. It has, No Mistakes et Oll. But there are two BIG mistakes in this sentence. and here is one more."
我先通过句号分成4个句子,判断4个句子每个首字母是否符合规范。然后再把每个句子分成单词,检查单词是否符合规范。其中“It has, No Mistakes et Oll”包含有逗号,逗号前后的我也视为是独立的单词。那这句就可以分为“It“ ” has” “No” “Mistakes” “et” “Oll”这6个单词,通过题目第二个标准进行判断。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-9 14:19:13 | 显示全部楼层
wp231957 发表于 2019-5-9 14:03
现在基本可以确定:
小写字母开头的句子43句 非法
大写字母开头的单词100个  合法

哦哦,看来要加一个判断句子开头是否是字母这个条件,我只考了是否是大写。感谢了~应该问题就是出现在这里!再次感谢!!我先去试试。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-9 14:20:46 | 显示全部楼层
hjx123hjx 发表于 2019-5-9 14:07
我觉得你写的没问题。

谢谢~目前发现了一个没有考虑到的地方:句子的开头我只做了是否是大写的判断,默认的情况是字母,但实际存在非字母的情况,应该作为不合法的情况考虑。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-10 09:11:16 | 显示全部楼层

题目要求是求不合格情况的数量,你按这个统计下看看呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-10 09:15:59 | 显示全部楼层
hjx123hjx 发表于 2019-5-9 15:19
原题目:
给定一篇由大写字母、小写字母、逗号、句号组成的文章,求使文章不合法的字母数。
文章不合法 ...

对哦···我发现是没其他符号····那我也不清楚是哪的问题了···前面有个大神发的s中有+号,我以为真有,现在检查了下确实没有。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-10 09:18:26 | 显示全部楼层
wp231957 发表于 2019-5-9 14:03
现在基本可以确定:
小写字母开头的句子43句 非法
大写字母开头的单词100个  合法

突然发现那个s中没有加号啊,你发的这句话“doP.+(khLFCxx,IeZoWLmnSyxOopwFLJmwgkajExsebYARQbPGyvtLckUpDL,fDnmiBIYTBEqFBVvZVrI,,LR\”好些原字符串里面不一样呢。题目给的是“给定一篇由大写字母、小写字母、逗号、句号组成的文章”,应该只有字母和逗号和句号吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-10 10:40:48 | 显示全部楼层
kaohsing 发表于 2019-5-9 16:46
句首情况:有68个句首,合格的有2个:[['Tq'], ['Luqflw']]

有149个单词,合格的有8个[['cp'],, ['gflm'] ...

题目的要求是跟我们认为规范不太一致的,根据题目来,不合规定的地方有1853个。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-10 10:55:58 | 显示全部楼层
wp231957 发表于 2019-5-10 10:01
咱们对一下数据,看看差在哪里:

1.总共大写字母   1909个

我的算法跟你的不太一样,我是先拆分成句子,然后遍历每个句子。先判断句子的首字母是否符合规范,判断之后再把这个句子拆分成单词,然后再判断每个单词是否符合规范。中间累加不符合规范的个数。每次循环得到的是一个句子和其中单词不合规范的个数,是合在一起的。
在你昨天非字母作为开头的提示下我改了代码,确实是和标准答案一致了,但是我目前只有这个长数据验证答案,现在没权限看那道题了····
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-10 10:59:21 | 显示全部楼层
wp231957 发表于 2019-5-10 10:01
咱们对一下数据,看看差在哪里:

1.总共大写字母   1909个

但是实际文章当中应该是不存在非字母,逗号和句号的其他符合的,我觉得排除的可能是某个句子是空的情况就是连续出现2个句号,句号中间有N个空格。就行这样".  ."这样,拆分出来的句子为非空,也参与了我写的逻辑中的判断。主要是没其他数据验证,很尴尬。不知道对不对。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-10 11:06:20 | 显示全部楼层
wp231957 发表于 2019-5-10 11:01
那就到此为止吧,反正会了就行
最终答案,见鬼去吧

哈哈哈,好嘛感谢啦!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-20 03:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表