鱼C论坛

 找回密码
 立即注册
查看: 2039|回复: 7

[已解决]找出输入字符串的密码

[复制链接]
发表于 2021-9-14 17:05:05 | 显示全部楼层 |阅读模式

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

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

x
str1 = input('输入你要找的字符串:')

length = len(str1)
for i in range(length):
    if str1[i].islower():
        if str1[i-1].isupper() and str1[i-2].isupper() and str1[i-3].isupper() and \
        str1[i+1].isupper() and str1[i+2].isupper() and str1[i+3].isupper():
            if str1[i+4].isupper() == False and str1[i-4].isupper() == False:
                return str1[i]
            
  我这里想实现的是找到这个小写字母,且小写字母前后仅有3个大写字母然后输出这个小写字母,我感觉我的语句没问题哇,但是报错了能给看看嘛
最佳答案
2021-9-16 12:20:39

inpurt 不支持输入多行字符,你拷贝到 input 实际上 只能接受一行字符

另外防止超出范围 length 应该减 4,参考代码:
str1 = ''' 拷贝过来的字符串 '''

length = len(str1)
for i in range(length-4):
    if str1[i].islower():
        if str1[i-1].isupper() and str1[i-2].isupper() and str1[i-3].isupper() and \
        str1[i+1].isupper() and str1[i+2].isupper() and str1[i+3].isupper():
            if str1[i+4].isupper() == False and str1[i-4].isupper() == False:
                print(str1[i],end='')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-14 18:54:18 | 显示全部楼层
1.return 要写在函数里面
return str1[i]
2.你这样很容易越界报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 22:12:14 | 显示全部楼层
确实,这样写很容易下标越界,
建议首尾各加4位小写字母,i 直接从第4位开始到倒数第四位,
这样能很简单的避免下标越界的情况,并且不用加大量的 if 去判断,也不用单独处理越界的情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 12:20:39 | 显示全部楼层    本楼为最佳答案   

inpurt 不支持输入多行字符,你拷贝到 input 实际上 只能接受一行字符

另外防止超出范围 length 应该减 4,参考代码:
str1 = ''' 拷贝过来的字符串 '''

length = len(str1)
for i in range(length-4):
    if str1[i].islower():
        if str1[i-1].isupper() and str1[i-2].isupper() and str1[i-3].isupper() and \
        str1[i+1].isupper() and str1[i+2].isupper() and str1[i+3].isupper():
            if str1[i+4].isupper() == False and str1[i-4].isupper() == False:
                print(str1[i],end='')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 12:25:10 | 显示全部楼层
range(3, length-3) # 區間前後內缩3位,防止越界
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-16 15:34:13 | 显示全部楼层
Twilight6 发表于 2021-9-16 12:20
inpurt 不支持输入多行字符,你拷贝到 input 实际上 只能接受一行字符

另外防止超出范围 length 应该 ...

str1 = input('输入你要找的字符串:')

length = len(str1)
for i in range(length-4):
    if str1[i].islower():
        if str1[i-1].isupper() and str1[i-2].isupper() and str1[i-3].isupper() and \
        str1[i+1].isupper() and str1[i+2].isupper() and str1[i+3].isupper():
            if str1[i+4].isupper() == False and str1[i-4].isupper() == False:
                print(str[i],end = '')
            
   
我本意是想用简单的来尝试一下 ,前面的会换的
我改成了这样,为啥还是会报错,Traceback (most recent call last):
  File "G:\phthon\练习\p20-2.py", line 9, in <module>
    print(str[i],end = '')
TypeError: 'type' object is not subscriptable乐意看下原因嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-16 15:44:10 | 显示全部楼层
wodeai999 发表于 2021-9-16 15:34
str1 = input('输入你要找的字符串:')

length = len(str1)



发代码时候发在 代码输入框里,不然你的代码会被编辑器吃了,重新发下吧

编辑器的 “添加代码文字”(这个符号:<>)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-16 16:21:59 | 显示全部楼层
Twilight6 发表于 2021-9-16 15:44
发代码时候发在 代码输入框里,不然你的代码会被编辑器吃了,重新发下吧

编辑器的 “添加代码文字 ...

已解决谢谢哇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-6 18:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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