python自学做题记录之找数字

【问题描述】编写程序实现:对于一个输入的整数n,判断n的各位数中是否包含数字3或4。若包含,则打印true,否则,打印false。

【输入形式】标准输入的一行表示一个整型数值
【输出形式】标准输出的一行表示判断结果;若输入的数值不合法(如:小数等),输出"illegal input"
【样例输入】132
【样例输出】true

这题第一遍的代码思路是遍历字符串,用ASCII值判断是否有3或4,代码如下

n=input()
f=0
if n.isdigit():
    for i in n:
        if ord(i)==51 or ord(i)==52:
            print('true')
            f=1
            break
    if f==0:
        print('false')
else:
    print('illegal input')

提交发现有一个测试点错了,想了一会儿,发现还有负数这种可能性,所以后面加了一个判断语句:如果字符串第一个是负号并且其他的全是数字,结果终于对了

n=input()
f=0
if n.isdigit() or (n[0]=='-' and n.lstrip('-').isdigit()):
    for i in n:
        if ord(i)==51 or ord(i)==52:
            print('true')
            f=1
            break
    if f==0:
        print('false')
else:
    print('illegal input')

后来发现还有一种更快的方法

n=input()
if n.isdigit() or (n[0]=='-' and n.lstrip('-').isdigit()):
    if '3' in n or '4' in n:
        print('true')
    else:
        print('false')
else:
    print('illegal input')
  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值