鱼C论坛

 找回密码
 立即注册
查看: 3270|回复: 10

[已解决]字符串题目求助

[复制链接]
发表于 2022-9-12 14:31:18 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 元豪 于 2022-9-12 14:48 编辑

问: 判断一个字符串是否包含英文, 如果有, 返回第一个字母下标和最后一个字母下标.

如:
a = '01234ABCabc@$#$%'

返回:
5, 10

推荐简短
最佳答案
2022-9-12 14:47:20
本帖最后由 jackz007 于 2022-9-12 15:05 编辑
a , c = '01234ABCabc@$#$%' , -1
for i in range(len(a)):
    if a[i] . isalpha():
        d = i
        if c < 0:
            c = i
print(c , ',' , d) if c >= 0 else print('not found .')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-12 14:45:49 From FishC Mobile | 显示全部楼层
本帖最后由 临时号 于 2022-9-12 16:14 编辑
a,start = '01234ABCabc@$#$%',-1
for i in range(len(a)):
    if 'A' <= a[i] <= 'z' and start == -1:
        start = i
    elif 'A' <= a[i] <= 'z':
        end = i
print(start,',',end)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-12 14:47:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-9-12 15:05 编辑
a , c = '01234ABCabc@$#$%' , -1
for i in range(len(a)):
    if a[i] . isalpha():
        d = i
        if c < 0:
            c = i
print(c , ',' , d) if c >= 0 else print('not found .')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-12 15:01:05 | 显示全部楼层
本帖最后由 dolly_yos2 于 2022-9-12 15:16 编辑

一个不太优美的一行方法
[print(f'{r[0]}, {r[-1]}') if len(r) > 0 else print('not found') for r in [list(filter(lambda x: x != None, [i if a[i].isalpha() else None for i in range(len(a))]))]]

一个可能稍好一点的方法
import re;[print(f'{i.start()}, {i.end()-1}') if i != None else print('not found') for i in [re.search('[a-zA-Z](.*[a-zA-Z])?', a, re.DOTALL)]]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-12 15:16:33 | 显示全部楼层
dolly_yos2 发表于 2022-9-12 15:01
一个不太优美的一行方法

181651651454564511454545411451651561651556156615156615616515616561651651655.JPG
为什么会有[None]?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-12 15:19:03 | 显示全部楼层
元豪 发表于 2022-9-12 15:16
为什么会有[None]?

因为您使用的是交互式 shell ,这一行表达式求值的结果会被打印出来
如果从文件运行就只会打印 print 中的部分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-12 17:55:19 | 显示全部楼层
a = input() #读入
first_pos = last_pos = -1 #初始化变量
now_pos = 0
for i in a: #字符串遍历
        ascii_code = ord(i) #获取ascii码
        if 97 <= ascii_code <= 122 or 65 <= ascii_code <= 90: #判断是否是英文字母,122是'z'的ascii码,97是'a'的ascii码,90是'Z'的ascii码,65是'A'的ascii码
                last_pos = now_pos #更新答案
                if first_pos == -1: #如果first_pos == 1,就是这是第一个遇到的英文字母
                        first_pos = now_pos #更新答案
        now_pos += 1 #当前位置后移一位
if first_pos == -1: #未找到,输出未找到
        print("Not have English letters")
else: #找到了,答案输出
        print(first_pos, last_pos, sep = ', ')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-12 18:04:47 | 显示全部楼层

emm......你这东西怎么用啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-12 18:09:47 | 显示全部楼层
元豪 发表于 2022-9-12 18:04
emm......你这东西怎么用啊?

输入一个字符串就可以了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-12 18:12:09 | 显示全部楼层
zhangjinxuan 发表于 2022-9-12 18:09
输入一个字符串就可以了啊

在哪输入捏?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-12 18:12:24 | 显示全部楼层
???????????????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 19:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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