生成在两个数字组合中的任何一个中没有 num "6"的数字



我遇到了一个问题,每当用户在数字中键入数字">6"(它可以在数字的任何位置(时,他必须键入或生成两个值的组合,这两个值加起来就是输入的数字

Ex1:如果我输入数字";16"==>(7,9(或(8,8(或(1,15(等,但不是(0,16(或(6,10(等,

Ex2:如果我输入数字">61"==>(58,3(或(59.2(或(57,4(等,但不是(0,61(或

Ex3:如果我输入数字";168〃==>(75,93(或(80,88(或(10158(等,但不是(168,0(或(60108(等,

我试图解决这个问题,得到了:

''

def faulty_num():
x=str(input())
result=[]
for i in range(1, int(x)+1):
for j in range(1, int(x)+1):
if (i+j == int(x) and int(x)%10==6):
result.append((i,j))

print(*result[:(int(x)//2)])

''

当我输入16=>(1,15((2,14((3,13((4,12((5,11((6,10((7,9((8,8(

如果我的代码很乱,请原谅我。

在上面的代码中,我可以通过在我的";如果条件";。当数字的大小增加时,我将无法做到这一点。在上述代码块中,如果条件=

如果(i+j==int(x(和int(x(%10==6(:

将只生成所需的组合,当数字的一位为"0"时;6〃;并且仅生成具有数字6的组合。我想,代码只会变得越来越复杂。但是,老实说,我在这一点上一无所知。任何建议都会很有帮助。感谢您抽出宝贵的时间!

您的编码做得很好,这是一个写得很好的问题。我们可以把它看作一个字符串来搜索数字中的6?

def faulty_num():
x=str(input())
result=[]
for i in range(1, int(x)+1):
for j in range(1, int(x)+1):
if (i+j == int(x) and "6" not in str(i) and "6" not in str(j)):
result.append((i,j))

print(*result[:(int(x)//2)])
faulty_num()

编辑:我一直给你做一个函数,可以检查里面是否有六。希望它有意义,如果你有任何问题,请评论。

def has_a_six(n):
"""Returns True if there is a six in the number, and False otherwise"""
while n != 0:
if n % 10 == 6: return True
else: n = n//10
return False

def faulty_num():
x=input()
result=[]
for i in range(1, int(x)+1):
for j in range(1, int(x)+1):
if (i+j == int(x) and not has_a_six(i) and not has_a_six(j)):
result.append((i,j))

print(*result[:(int(x)//2)]) # This line is quite clever, I might not have thought of that.
faulty_num()
def faulty_num():
a=input('this is a number  ')
result=[]
for i in range(int(a)//2+1):

if '6' not in str(i) and '6' not in str(int(a)-i) :
if (i,int(a)-i) not in result:
#print(i)
result.append((i,int(a)-i))
print(*result)
faulty_num()
x = int(input('Target? '))
for i in range(1, x // 2 + 1):  # assuming you don't want reflections (1,2),(2,1)
j = x - i                   # i + j will always equal x this way
if '6' not in f'{i}{j}':    # test for 6 in two numbers concatenated together
print(i,j)

输出示例:

Target? 16
1 15
2 14
3 13
4 12
5 11
7 9
8 8

当然,如果你需要一个包含6的数字,你应该净化你的输入。类似于:

def get_x():
while True:
s = input('Target number with a six? ')
try:
x = int(s)
except ValueError:
print('not an integer')
else:
if '6' in s:
return x
print('needs a 6')
x = get_x()

相关内容

最新更新