鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: zltzlt

[已解决]Python:每日一题 275

[复制链接]
 楼主| 发表于 2019-11-17 08:37:41 | 显示全部楼层
学Python不开车 发表于 2019-11-17 08:35
请问版主,我把这个每日一题订阅了,但是从哪才能找到呢,我才刚开始做,每次都要搜索 每日一题 xx,找不到 ...

https://fishc.com.cn/forum.php?m ... n=view&ctid=588
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-17 08:41:30 | 显示全部楼层
  1. def func(s):
  2.         l=[i for i in s if i.islower() or i.isdigit()]
  3.         return l==reversed(l)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-17 08:46:43 | 显示全部楼层

  1. def f275(s):
  2.     l=list(filter(lambda x:x.islower() or x.isdigit(),s))
  3.     return l==l[::-1]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-17 09:02:35 | 显示全部楼层
  1. import re
  2. def f275(strings):
  3.     st = re.sub('[^a-z0-9]','',strings)
  4.     return st == st[::-1]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-17 11:51:57 | 显示全部楼层
number = [input("请输入一串数字")]
j=len(number)
for i in int(len(number)):
    if 'a'<number[i]<'z':
        member = [append(int(number[i]))]
    if '1'<number<'9':
        member=[append(int(number[i]))]
for i in int(len(number)):
     if 'a'<number[i]<'z':
        list = [insert(int(number[i]),len(number)-i)]
     if '1'<number[i]<'9':
        list = [insert(int(number[i]),len(number)-i)]
if member == list:
    print("True")
else:
    print("False")
上面代码运行后到第三行出错了,谁来帮帮我啊
TypeError: 'int' object is not iterable
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-17 15:43:26 | 显示全部楼层

s = ''.join(map(f, s));这句怎么理解不了,可否解释下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-17 16:11:08 | 显示全部楼层
  1. import string
  2. def fun275(s):
  3.       s1=[i for i in s if i in string.digits+string.ascii_lowercase]
  4.       if s1==list(reversed(s1)):return True
  5.       else:return False
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-17 18:43:48 | 显示全部楼层
学Python不开车 发表于 2019-11-17 08:35
请问版主,我把这个每日一题订阅了,但是从哪才能找到呢,我才刚开始做,每次都要搜索 每日一题 xx,找不到 ...

你点这儿.png 你点击这里的每日一题,然后把那个网页添加到浏览器收藏夹,或许能好使。
如果你在那里点击过订阅的话,如果更新,应该会有消息提醒的。


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

使用道具 举报

发表于 2019-11-17 19:26:38 | 显示全部楼层
  1. import string
  2. def f(str):
  3.     a=string.ascii_lowercase+string.digits
  4.     b=[i for i in str if i in a]
  5.     if b==b[::-1] and len(b)>=2:
  6.         print(True)
  7.     else:
  8.         print(False)
  9. f('123321')
  10. f('123a;321')
  11. f('1232A21')
  12. f('0')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-17 22:50:22 | 显示全部楼层

感觉,你这个的判断条件可以简化一下呢。
  1. str1[count1].islower() == False and str1[count1].isdecimal() == False
  2. #可以改成
  3. not (str1[count1].islower() or str1[count1].isdecimal())
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 01:05:36 | 显示全部楼层
uestcsjw 发表于 2019-11-17 15:43
s = ''.join(map(f, s));这句怎么理解不了,可否解释下

str.join(iterable)->str
map(function, iterable)->map
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 10:13:42 | 显示全部楼层
阴阳神万物主 发表于 2019-11-17 22:50
感觉,你这个的判断条件可以简化一下呢。

才反应过来。。。我一开始写的类似这个但是not后面没加括号,not只覆盖了or前面的条件表达式,然后就改成这样了。
反正都是要写一行的,运算速度也不会提升的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 10:23:01 | 显示全部楼层
  1. def fun275(x):
  2.     x = ''.join([i for i in x if i.islower() or i.isdigit()])
  3.     if x == x[::-1]:
  4.         return True
  5.     return False
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 16:40:16 | 显示全部楼层
danteer 发表于 2019-11-18 10:13
才反应过来。。。我一开始写的类似这个但是not后面没加括号,not只覆盖了or前面的条件表达式,然后就改成 ...

改了以后,单次判断速度会提升一丝儿。
因为 and 是两边都判断完了才会得出结果,而 or 只要出现左边为真,就直接会得结果,从步骤来说,or 在某些情况下是会比 and 快的。
并且,str.islower() 这种语句,本身需要时间,== 这样的操作也是要点时间的,str.islower() == False 这样的操作是会比 str.islower() 稍微用时长一点的。
假设每种操作用时为 1,那么你的用时 (1+1)+(1+1)+1 = 5
改了之后,假设 or 的两端都会判断,用时最长的情况 (1+1)+1 = 3
虽然在数据量小的情况下体现不出来优势,因为单次判断的用时差距几乎可以忽略不计,但是数据量大的话,时间的差距可就不能忽略不记了,也就是说,你的代码,用时还能更短。
一样的道理:
  1. not str1[count1] == str1[count2]
  2. #可以改成
  3. str1[count1] != str1[count2]
复制代码
因为我不晓得 != 符号的具体操作所以不敢肯定是不是会用时更短。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 17:08:08 | 显示全部楼层
阴阳神万物主 发表于 2019-11-18 16:40
改了以后,单次判断速度会提升一丝儿。
因为 and 是两边都判断完了才会得出结果,而 or 只要出现左边为 ...

got!thanks
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-19 11:08:22 | 显示全部楼层
  1. def fun(s):
  2.     s1 = ''.join([a for a in s if a.isdigit() or a.islower()])
  3.     l = len(s1)
  4.     for i in range(l//2):
  5.         if s1[i] == s1[l-i-1]:
  6.             continue
  7.         else:
  8.             return False
  9.     return True
  10.                

  11. print(fun('123321'))
  12. print(fun('123a;321'))
  13. print(fun('1232A21'))
  14. print(fun('123DFVGHBNJaaDFGHJK#$%^&*(321'))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-19 14:27:11 | 显示全部楼层
zltzlt 发表于 2019-11-17 08:37
https://fishc.com.cn/forum.php?mod=collection&action=view&ctid=588

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

使用道具 举报

发表于 2019-11-19 20:32:38 | 显示全部楼层
a='1232A21'
listnum=[]
for i in a:
    if i.isdigit() is True or i.islower() is True:
        if  i.isdigit() is True:
            listnum.append(int(i))
        else:
            listnum.append(i)
if listnum==listnum[::-1]:
    print(True)
else:
    print(False)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-21 21:24:18 | 显示全部楼层

  1. import re
  2. def f275(s: str):
  3.     s = re.sub(r"(?![0-9]|[a-z]).", "", s)
  4.     return True if s == s[::-1] else False
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 19:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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