第20课:函数。喷饭问题一枚
本帖最后由 Peteryo01223 于 2021-1-11 18:25 编辑原题目:
1. 请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
a) 每位密码为单个小写字母
b) 每位密码的左右两边均有且只有三个大写字母。
我“直来直去”的思路,希望不会让大家喷饭:
str1= ''' '''
length = len(str1)
for i in range(length): # 解决换行问题,导致统计不能顺利经行
if str == '\n':
continue
if str1.islower() and str1[(i-1)].isuppwer() and str1[(i-2)].isuppwer()and str1[(i-3)].isuppwer()and str1[(i+1)].isuppwer()and str1[(i+2)].isuppwer() and str1[(i+3)].isuppwer():
print (i) # 我直来直去地对条件,予以如此翻译,行么?即:统计单个小写字母,且左右两边均有且只有三个大写字母。这个办法是不对,还是很笨,但可行?
else:
pass
问题:
请问为什么这个傻傻的思路不行啊?
小甲鱼的答案,我目前还没看懂呢,看后我再继续提问。
谢谢各位的耐心。
1. 代码可读性极差
2. 字符串中 第一个 字符左边没有字符,最后一个字符的右边也没有字符
3. 写代码是 模拟人的行为 ,你本人的思路都没有,就写出代码来,十有八九是错的,至少在这个代码里没有体现出个人的思路,纯粹就是生搬硬套。 多想一想吧,怎么可能如此简单 本帖最后由 Peteryo01223 于 2021-1-12 09:05 编辑
改了下,成功了。
不过,大家说的对,可读性极差。
现在去读读小甲鱼的答案,我得学习大佬思路。
str1= ''''''
length = len(str1)
for i in range(length-5): # 解决换行问题,导致统计不能顺利经行
if i == '\n':
continue
if str1.islower() and str1[(i+1)].isupper() and str1[(i+2)].isupper()and str1[(i+3)].isupper()and str1[(i+4)].islower()and str1[(i+5)].isupper() and str1[(i+6)].isupper() and str1[(i+7)].isupper() and str1[(i+8)].islower() :
# 即:第 i 个字母小写,
# 第 (i+1) 个字母大写,
# 第 (i+2) 个字母大写,
# 第 (i+3) 个字母大写,
# 第 (i+4) 个字母小写,也就是密码的位置,
# 第 (i+5) 个字母大写,
# 第 (i+6) 个字母大写,
# 第 (i+7) 个字母大写,
# 第 (i+8) 个字母小写,
print (str1, end = '') #
else:
pass
wp231957 发表于 2021-1-11 19:55
多想一想吧,怎么可能如此简单
修改了一下,笨办法,貌似成功了~~~ °蓝鲤歌蓝 发表于 2021-1-11 18:35
1. 代码可读性极差
2. 字符串中 第一个 字符左边没有字符,最后一个字符的右边也没有字符
3. 写代码是 模 ...
人的思路,不应该,首先是阅读原题目的思路么?否则,写Python,该怎么着手呢? Peteryo01223 发表于 2021-1-12 09:53
人的思路,不应该,首先是阅读原题目的思路么?否则,写Python,该怎么着手呢?
写程序之前先把它当作数学题来做一遍。
这题目说的清清楚楚, 每位密码的左右两边均 有且只有 三个大写字母,这句话就已经说明很多信息了。
1. 前三位 和 后三位 不可能是 密码
2. 如果 当前位 是密码,那么下一个 密码 肯定不在 当前位 的 后面 三位 里。
你自己也说了 首先是 阅读题目 的思路,那么上述 两条明显透露的信息 是否应该出现在你的思路里呢?
页:
[1]