【问题标题】:Scenario if in input numbers are repeat输入数字重复的场景
【发布时间】:2021-12-12 15:26:25
【问题描述】:

代码:

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 。 但是当数字重复时,不知道场景的想法。等等。如果输入为 22334567890223344556677889900 输出仍需要为 1 但不是。

附: 我不能用字符串来做。 我知道 0 没有区别,因为我们使用 - 和 +。

【问题讨论】:

  • 请提供有关您要达到的目标的信息。您发布的代码没有任何关于其目标的信息。

标签: python list input


【解决方案1】:

更简单的方法是将其转换为字符串并进行设置操作

>>> 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
>>> 

【讨论】:

  • 我不能用strings.Ty无论如何。
  • 数字也可以这样做
【解决方案2】:

我解决了。代码:

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 的所有数字放入第一个列表中。然后使用 for 循环 我们遍历第一个列表。如果在第一个列表中找到从 0 到 9 的数字,我们将它们从第二个列表中删除。 最后,我们将第二个列表的剩余元素的 sum(+) 保存到变量 sum 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多