我遇到了一个问题,每当用户在数字中键入数字">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()