检查n=eval(input('n=')) def black_hole_num(x): d=str(x) ls=list(d) ls1=ls.sort(reverse=True) ls2=ls.sort(reverse=False) a=''.join(ls1) b=''.join(ls2) c==a-b if c==x: return True else: return False for i in range(0,n+1): if black_hole_num(i): print(i)
时间: 2023-10-24 22:08:45 浏览: 75
您的代码存在几个问题,我来帮您分析一下:
1. 在第4行,您使用了`ls1=ls.sort(reverse=True)` 和 `ls2=ls.sort(reverse=False)`,这两个语句的返回值都是None,因为sort()方法是对原列表进行排序,而不是返回一个新的列表。您可以改为`ls1=sorted(ls,reverse=True)` 和 `ls2=sorted(ls,reverse=False)`。
2. 在第6行,您使用了`c==a-b`,应该使用`c=int(a)-int(b)`,而且变量c应该在第5行进行定义,而不是在第6行。
3. 在第7行,应该使用`if c==int(x):`,而不是`if c==x:`。
下面是修改后的代码:
```
n=eval(input('n='))
def black_hole_num(x):
d=str(x)
ls=list(d)
ls1=sorted(ls,reverse=True)
ls2=sorted(ls,reverse=False)
a=''.join(ls1)
b=''.join(ls2)
c=int(a)-int(b)
if c==int(x):
return True
else:
return False
for i in range(0,n+1):
if black_hole_num(i):
print(i)
```
希望对您有帮助!
相关问题
def black_hole_num(x): ls=list(str(x)) a=sorted(ls,reverse=True) b=sorted(ls) c=int(''.join(a))-int(''.join(b)) if x==c: return True else: return False n=eval(input('n=')) for i in range(1,n+1): if black_hole_num(i)==True: print(i)修改代码结果换行
你可以在print语句中加入end参数,将默认的换行符\n改为其他字符,如空格或空字符串。修改后的代码如下:
```python
def black_hole_num(x):
ls=list(str(x))
a=sorted(ls,reverse=True)
b=sorted(ls)
c=int(''.join(a))-int(''.join(b))
if x==c:
return True
else:
return False
n=eval(input('n='))
for i in range(1,n+1):
if black_hole_num(i)==True:
print(i, end=' ')
```
这样修改后,输出结果中每个数之间会以空格分隔,而不是换行。
阅读全文