flag作用求讲解
【问题描述】一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。 给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
【输入格式】30
【输出格式】 26
正确的代码是:
if __name__ == '__main__':
ans = 0
n = int(input())
for s in :
flag = True
for j in range(1, len(s)):
if s > s:
flag = False
break
if flag:
ans += 1
print(ans)
【输入格式】30
【输出格式】 26
自己写的代码:
n=int(input())
m=0
for i in range(1,n+1):
a=list(str(i))
for n in range(1,len(a)):
if a<a:
break
else:
m+=1
print(m)
【输入格式】30
【输出格式】 17
自己写的代码和源代码差不多,只是flag判断条件,但是结果却是不一样的,自己分部输出的时候发现正确代码将1~9也作为了一个数位递增的数,但个人觉得1~9不能作为一个数位递增的数。
【问题】
1.能不能给我讲解下flag的作用及在正确代码中的作用?
2.1~9为什么也算是一个数位递增的数? 感谢各位大佬帮我解答
本帖最后由 澍梵. 于 2020-4-18 19:43 编辑
~
n=int(input())
m=0
for i in range(1,n+1):
a=list(str(i))
for n in range(1,len(a)): // 这一行,当遍历1-9,range(1,1),返回空,没有进去计数,因此少了9次
if a<a:
break
else:
m+=1
print(m)
还是加个flag方便点 n=int(input())
m=0
for i in range(1,n+1):
a=list(str(i))
if len(a) == 1:
m += 1
else:
for n in range(1,len(a)):
if a<a:
break
else:
m+=1
print(m)
不加flag 就加个条件吧 flag就是一个标记,如果符合条件就设置为1.
然后在后面对这个标记进行判断。
页:
[1]