鱼C论坛

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

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

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

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

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

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

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

如:
  1. a = '01234ABCabc@$#$%'
复制代码


返回:
  1. 5, 10
复制代码


推荐简短
最佳答案
2022-9-12 14:47:20
本帖最后由 jackz007 于 2022-9-12 15:05 编辑
  1. a , c = '01234ABCabc@$#$%' , -1
  2. for i in range(len(a)):
  3.     if a[i] . isalpha():
  4.         d = i
  5.         if c < 0:
  6.             c = i
  7. print(c , ',' , d) if c >= 0 else print('not found .')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-12 14:45:49 From FishC Mobile | 显示全部楼层
本帖最后由 临时号 于 2022-9-12 16:14 编辑
  1. a,start = '01234ABCabc@$#$%',-1
  2. for i in range(len(a)):
  3.     if 'A' <= a[i] <= 'z' and start == -1:
  4.         start = i
  5.     elif 'A' <= a[i] <= 'z':
  6.         end = i
  7. print(start,',',end)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-12 14:47:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-9-12 15:05 编辑
  1. a , c = '01234ABCabc@$#$%' , -1
  2. for i in range(len(a)):
  3.     if a[i] . isalpha():
  4.         d = i
  5.         if c < 0:
  6.             c = i
  7. print(c , ',' , d) if c >= 0 else print('not found .')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

一个不太优美的一行方法
  1. [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))]))]]
复制代码


一个可能稍好一点的方法
  1. 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)]]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

181651651454564511454545411451651561651556156615156615616515616561651651655.JPG
为什么会有[None]?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

因为您使用的是交互式 shell ,这一行表达式求值的结果会被打印出来
如果从文件运行就只会打印 print 中的部分
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

emm......你这东西怎么用啊?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

输入一个字符串就可以了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

在哪输入捏?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-12 18:12:24 | 显示全部楼层
???????????????
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-27 00:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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