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')

你可能感兴趣的:(python)