【问题描述】编写程序实现:对于一个输入的整数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')