鱼C论坛

 找回密码
 立即注册
查看: 2409|回复: 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-8 22:01:26 From FishC Mobile | 显示全部楼层
标准答案是多少啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-9 09:03:10 | 显示全部楼层
你在每个检查不合法的地方打印一条消息,用短的句子先检测一下,哪里没打印消息就是哪里出问题了。
小甲鱼最新课程 -> 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 12:35:09 | 显示全部楼层
jrro452 发表于 2019-5-9 10:19
程序是没有报错的,就是结果上有问题,给的短句子没问题,就是那个长句子跑出来的结果少了1,应该是某种 ...

你逗号分句后的第一个字母情况没有讨论。
  1. for each_c in each_word[1:]:
  2.                             if each_c.isupper():
  3.                                 countnum+=1
复制代码

逗号后字母要大写还是小写。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-9 12:45:28 | 显示全部楼层

我这个也不靠谱

e:\>python ex8.py
1905
非单词首字母大写的数量:534
句子首字母小写的数量:82
句子首单词其他部分大写的数量:1289
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-9 12:49:45 From FishC Mobile | 显示全部楼层
wp231957 发表于 2019-5-9 12:45
我这个也不靠谱

e:\>python ex8.py

我把普通单词首字母大写给算了,这部分应扣去
小甲鱼最新课程 -> 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:29:07 | 显示全部楼层
jrro452 发表于 2019-5-9 13:24
扣去就是对的吗?能不能把你的代码发一下看看呢?

逗号后面是和前面算一句话,还是逗号后面 算单独一句话
小甲鱼最新课程 -> 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 13:39:32 | 显示全部楼层
jrro452 发表于 2019-5-9 13:35
我是这样区分的。有一个句号的话,句号前面的部分算是一个句子。没有句号的都算是单词,所以逗号后面和前 ...

现在其他的都好确定,唯独小写字母开头的句子 有多少 不好界定
doP.+(khLFCxx,IeZoWLmnSyxOopwFLJmwgkajExsebYARQbPGyvtLckUpDL,fDnmiBIYTBEqFBVvZVrI,,LR\b[
这句话,dop. 后面的算一句话吧,那么它是以+ 开头的 合法呼非法呼
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 14:07:20 | 显示全部楼层
jrro452 发表于 2019-5-9 13:21
我认为的是首字母是写小写或大写都行。把逗号后的视为单词,单词不合规范的只有非首字母为大写的情况

我觉得你写的没问题。
小甲鱼最新课程 -> 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-9 14:53:22 | 显示全部楼层
你弄断真是的文字。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-9 15:19:10 | 显示全部楼层
jrro452 发表于 2019-5-9 14:20
谢谢~目前发现了一个没有考虑到的地方:句子的开头我只做了是否是大写的判断,默认的情况是字母,但实际 ...

原题目:
给定一篇由大写字母、小写字母、逗号、句号组成的文章,求使文章不合法的字母数。
文章不合法有2种情况:
1.句子的第一个字母用了小写。
2.不是单词的首字母用了大写。
文章只有大小写字母,逗号句号呀~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-9 16:42:01 | 显示全部楼层
本帖最后由 kaohsing 于 2019-5-9 16:43 编辑

#猜一个
1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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