找回密码
 立即注册
搜索
查看: 2007|回复: 17

[其他] #

[复制链接]
头像被屏蔽
发表于 2018-12-31 17:31 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2018-12-31 17:52 来自手机 | 显示全部楼层
乘十取整除十
回复

使用道具 举报

     
发表于 2018-12-31 18:52 | 显示全部楼层

  1. firstDot = self.sender().text().find('.')
  2. if(firstDot  != -1):
  3.     self.lcdString = self.sender().text()[:firstDot+1] + self.sender().text()[firstDot+1:].replace('.', '')
  4. else:
  5.     self.lcdString = self.sender().text()
复制代码

回复

使用道具 举报

发表于 2018-12-31 19:26 | 显示全部楼层
本帖最后由 Hieda 于 2018-12-31 19:29 编辑

你这段代码的目的可以理解为预读下一个字符,如果是“.”则确认之前是否出现过一次“.”,如果已经有就无视这个字符,否则append到字符串末端
所以我建议你你增加一个布尔值field(或者变量)来存储是否已经出现过“.”,这样一个是效率更快(每次读取字符是O(1)而不是O(n)),一个是核心逻辑只会出现一次:

  1. if self.sender().text() == r"." and self._has_occurred:                                    #小数点输入超过一个忽略处理
  2.     pass
  3. else:
  4.     self.lcdString = self.lcdString + self.sender().text()  # 获得按键字符,按键字符并累计添加
  5.     if self.render().text == r".":
  6.          self._has_occurred = True
复制代码
回复

使用道具 举报

头像被屏蔽
 楼主| 发表于 2018-12-31 19:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
 楼主| 发表于 2018-12-31 22:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2018-12-31 22:42 | 显示全部楼层
输入完再截断不行吗
回复

使用道具 举报

     
发表于 2018-12-31 22:44 | 显示全部楼层
柳向城 发表于 2018-12-31 22:41
是取小数点及前面一串字符不变,小数字后面字符再有小数字就用空代替吗?

这个方法我想过,但是没有找 ...

我一开始没细看,是输入时处理?
我这个是输入后处理……把第一个点后面的点全清掉
回复

使用道具 举报

头像被屏蔽
 楼主| 发表于 2018-12-31 22:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
 楼主| 发表于 2018-12-31 23:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2018-12-31 23:07 | 显示全部楼层

那你试试吧,我没试过,脑补的代码
回复

使用道具 举报

头像被屏蔽
 楼主| 发表于 2018-12-31 23:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2019-1-1 05:55 来自手机 | 显示全部楼层
(\d+\.\d+)

—— 来自 vivo NEX S, Android 8.1.0上的 S1Next-鹅版 v2.1.0-play
回复

使用道具 举报

     
发表于 2019-1-1 18:07 来自手机 | 显示全部楼层
你的全家 发表于 2019-1-1 05:55
(\d+\.\d+)

—— 来自 vivo NEX S, Android 8.1.0上的 S1Next-鹅版 v2.1.0-play

我觉得(\d+(\.\d+)?)应该会更好一点

—— 来自 Xiaomi MI 6, Android 8.0.0上的 S1Next-鹅版 v2.1.2
回复

使用道具 举报

头像被屏蔽
 楼主| 发表于 2019-1-1 18:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2019-1-1 21:11 来自手机 | 显示全部楼层
柳向城 发表于 2019-1-1 18:51
用这个正则表达式查找后,通过结果判断是否pass?还是替换?

去拿最外层括号捕获到的分组应该就可以了

—— 来自 Xiaomi MI 6, Android 8.0.0上的 S1Next-鹅版 v2.1.2
回复

使用道具 举报

     
发表于 2019-1-3 14:27 来自手机 | 显示全部楼层
RAMDA 发表于 2019-1-1 21:11
去拿最外层括号捕获到的分组应该就可以了

—— 来自 Xiaomi MI 6, Android 8.0.0上的 S1Next-鹅版 v2.1. ...

match group 1

—— 来自 vivo NEX S, Android 8.1.0上的 S1Next-鹅版 v2.1.0-play
回复

使用道具 举报

     
发表于 2019-1-3 14:38 | 显示全部楼层
数字输入也是用的按钮吧,那'.'这个按钮加个标志就行了,按过一次就不再生效。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-17 02:50 , Processed in 0.112798 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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