如果输入数字重复的场景
Scenario if in input numbers are repeat
代码:
n = int(input("Type n: "))
def some_function(n):
numbers, numbers_sum = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0], 45
while True:
digit = n % 10
n //= 10
if digit in numbers:
numbers.remove(digit)
numbers_sum -= digit
else:
break
return numbers_sum
print(some_function(n))
程序需要打印输入中未找到的数字的总和。
我介绍了数字不重复的情况,对于这种情况,如果输入是 234567890 输出是 1 。
但是当数字为 repeating.Etc 时,对场景一无所知。如果输入是 22334567890 或 223344556677889900 输出仍然需要是 1 但它不是。
P.S。
我不能用字符串来做。
我知道 0 没有什么区别,因为我们使用的是 - 和 +。
更简单的方法是将其转换为字符串并进行集合操作
>>> n=22334567890
>>> numbers=set("123456789")
>>> numbers-set(str(n))
{'1'}
>>>
然后转换回整数
>>> sum(map(int,{'1'}))
1
>>>
如果您不想进行字符串转换,只需创建一个函数来为您提供数字的数字并执行相同的操作
>>> def digits(n): #this is a generator function
if n==0:
yield 0
while n:
n,d = divmod(n,10)
yield d
>>> n=22334567890
>>> numbers=set(range(10))
>>> numbers
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> list(digits(n))
[0, 9, 8, 7, 6, 5, 4, 3, 3, 2, 2]
>>>
>>> numbers - set(digits(n))
{1}
>>> sum({1})
1
>>>
我解决了it.Code:
n, finish = int(input("Type n: ")), 0
dig_list, num_list = [], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
def sum(n):
while n > 0:
digit = n % 10
n //= 10
dig_list.append(digit)
for i in range (0, 11):
if i in dig_list:
num_list.remove(i)
return num_list
for e in (sum(n)):
finish += e
print(finish)
代码的用途。
解释:
首先,我们创建 2 个列表。
第一个(dig_list)没有元素,我们将把输入(n)的所有数字放在那里。
第二个列表是从 0 到 9 (num_list) 的数字列表。
然后我们将 n 的所有数字放入第一个 list.Then 使用 for 循环 我们遍历第一个 list.If 从 0 到 9 的数字在第一个列表中找到我们从第二个列表中删除它们。
最后,我们将第二个列表剩余元素的sum(+)保存到一个变量sum.
代码:
n = int(input("Type n: "))
def some_function(n):
numbers, numbers_sum = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0], 45
while True:
digit = n % 10
n //= 10
if digit in numbers:
numbers.remove(digit)
numbers_sum -= digit
else:
break
return numbers_sum
print(some_function(n))
程序需要打印输入中未找到的数字的总和。
我介绍了数字不重复的情况,对于这种情况,如果输入是 234567890 输出是 1 。 但是当数字为 repeating.Etc 时,对场景一无所知。如果输入是 22334567890 或 223344556677889900 输出仍然需要是 1 但它不是。
P.S。 我不能用字符串来做。 我知道 0 没有什么区别,因为我们使用的是 - 和 +。
更简单的方法是将其转换为字符串并进行集合操作
>>> n=22334567890
>>> numbers=set("123456789")
>>> numbers-set(str(n))
{'1'}
>>>
然后转换回整数
>>> sum(map(int,{'1'}))
1
>>>
如果您不想进行字符串转换,只需创建一个函数来为您提供数字的数字并执行相同的操作
>>> def digits(n): #this is a generator function
if n==0:
yield 0
while n:
n,d = divmod(n,10)
yield d
>>> n=22334567890
>>> numbers=set(range(10))
>>> numbers
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> list(digits(n))
[0, 9, 8, 7, 6, 5, 4, 3, 3, 2, 2]
>>>
>>> numbers - set(digits(n))
{1}
>>> sum({1})
1
>>>
我解决了it.Code:
n, finish = int(input("Type n: ")), 0
dig_list, num_list = [], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
def sum(n):
while n > 0:
digit = n % 10
n //= 10
dig_list.append(digit)
for i in range (0, 11):
if i in dig_list:
num_list.remove(i)
return num_list
for e in (sum(n)):
finish += e
print(finish)
代码的用途。
解释: 首先,我们创建 2 个列表。 第一个(dig_list)没有元素,我们将把输入(n)的所有数字放在那里。 第二个列表是从 0 到 9 (num_list) 的数字列表。 然后我们将 n 的所有数字放入第一个 list.Then 使用 for 循环 我们遍历第一个 list.If 从 0 到 9 的数字在第一个列表中找到我们从第二个列表中删除它们。 最后,我们将第二个列表剩余元素的sum(+)保存到一个变量sum.