“九韶杯”–小明的作业(Python3)
题目描述
小明同学正在学习一种新的语言。在该语言中,如果出现了一次wa或者一次aw,则代表出现了一个警告。如果出现了连续的wa或者连续的aw,则代表出现了一个错误。小明由于学习比较粗心,所以他想要知道自己刚刚写完的作业中一共出现了多少处警告和错误。下面是小明刚刚写完的作业,请你帮助小明找到他一共出现了多少次警告和多少次错误。
abcwaawawawa中出现了一次警告(wa)和一次错误(awawaw)
abcdefg中没有出现一次警告和错误
waawwaawwawa中出现了四次警告(两次wa和两次aw)和一次错误(wawa)
awawwawa中只出现了两次错误(awaw和wawa)
输入描述
小明的作业如下:
iawaswapwauawhawdwafwanbiopwanivgbikvblvbwawawawvolyuvgbololvolgbyolgyowagbolgawgboplwawaolgyolwaogblwaygbowawagwabwayawopwawagyowabwaowapjwapcfrtuywawacvujwawawaufttyfuftywawawatifgugbgbyguwawawawayugbigwwwytigwygwgbwyoawawgoghwaogwborgrewabouyhwabyuhowabhnwawauygbawyawuwaoawfcawaaaahwaywauwagwawefwaafmbawklawjiawihnwanhawawawawijwajiofjeriofgjrefjhwaewarwaowagwahwauwaiwarwaiwaqwarwahwaqwawwaowapfweofbwewafwahwaiwaewawwawawawawafwawawawaeiufwepfhnewfwahwajwatwafowawajtokshwawafwaiwahwafwahmgoewawawawafkfjkewnwawafiewhfwawawafjkernhawkrenwawawawafujnrheiowanwakawawawawwanoifewajrwaoawawfweojnwawawawawawawafjkwenawawferkwmpwawawawaforeijawawferhfiueorghwuwafguwegfwaghrwiufgwahweofgowaidwiweaiwwawieyiwe
输出描述
出现警告的次数
出现错误的次数
答案
78
25
解析
首先列举出警告和错误的情况:
警告:
wa情况
后缀
#wa
text[i]=="w" and text[i+1]=="a" and text[i+2]!="w"
前缀
(1)XX wa
text[i-2]!="w" and text[i-1]!="a"
(2)Xa wa 或者 wX wa
1.text[i-2]!="w" and text[i-1] == "a"
2.text[i-2]=="w" and text[i-1]!="a"
aw情况
后缀
#aw
text[i]=="a" and text[i+1]=="w" and text[i+2]!="a"
前缀
(1)XX aw
text[i-2]!="a" and text[i-1]!="w"
(2) aXaw 或者 Xwaw
1.text[i-2]=="a" and text[i-1]!="w"
2.text[i-2]!="a"and text[i-1]=="w"
错误
(1)连续wa
text[i]=="w" and text[i+1]=="a" and text[i+2]=="w" and text[i+3]=="a"
此外需要注意wa前面不能再次出现wa,即
text[i-1]!="a"
(2)连续aw
text[i]=="a" and text[i+1]=="w" and text[i+2]=="a" and text[i+3]=="w"
此外需要注意aw前面不能再次出现aw,即
text[i-1]!="w"
注意:本题输入的字符串不是以"wa"或者"aw"结尾,如果以此两字符串结尾,则需要判断是否存在判断末尾的字符(可能会发生溢出)
代码
countwar=0 # 警告计数器
counterr=0 # 错误计数器
1. List item
text = input()
for i in range (len(text)-3):
if (text[i]=="w" and text[i+1]=="a" and text[i+2]!="w"):
if(text[i-2]!="w" and text[i-1]!="a")or(text[i-2]!="w" and text[i-1]=="a")or (text[i-2]=="w" and text[i-1]!="a"):
countwar+=1
elif(text[i]=="a" and text[i+1]=="w" and text[i+2]!="a"):
if(text[i-2]=="a" and text[i-1]!="w" )or(text[i-2]!="a"and text[i-1]=="w")or (text[i-2]!="a" and text[i-1]!="w"):
countwar+=1
elif text[i]=="w" and text[i+1]=="a" and text[i+2]=="w" and text[i+3]=="a":
if(text[i-1]!="a"):
counterr+=1
elif text[i]=="a" and text[i+1]=="w" and text[i+2]=="a" and text[i+3]=="w":
if (text[i-1]!="w"):
counterr+=1
print(countwar)
print(counterr)
运行结果
pycharm运行结果图:
IDLE运行结果图: