当前位置: 首页 > 知识库问答 >
问题:

如果输入数字是重复的场景

林和畅
2023-03-14

代码:

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。但是,当数字重复出现时,不要对情景有任何想法。等。如果输入为22334567890或223344556677889900,则输出仍然需要为1,但不是。

还有,我不能用绳子。我知道0没有什么区别,因为我们正在使用-和。

共有1个答案

宫亦
2023-03-14

更简单的方法是将其转换为字符串并执行集合操作

>>> 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
>>> 
 类似资料:
  • 我正在开发一个程序,它会要求用户输入一个整数,然后输入另一个,并将它们作为图点。然后它会告诉他们之间的距离。用户必须输入一个整数或按“Q”退出。如果它是其他任何东西(不是整数或字母“Q”),它会告诉他们那是不正确的,请再试一次。我以为这就是我可以实现的方法,但它返回错误。非常感谢您的帮助! 如果我没有注释掉最后一个else语句,它就会默认为该语句,并且永远循环我的错误消息。

  • 我有这个JS var,后面跟着这个if语句: 我的问题是,当定义了contratType并且他的值是'Nouvelle Affaire'时,仍然输入if。 我错过什么了吗?

  • 问题内容: 我正在尝试找出如何创建输入验证的方法,在该方法中,您不能两次输入相同的数字,而且不能在数字范围内输入,除非它是整数,否则无法输入任何内容。我目前正在创建彩票程序,不确定如何执行此操作。任何帮助将非常感激。我的数字范围验证有效,而其他两个验证无效。我尝试了非重复号码验证,但我不确定如何执行仅数字验证。有人可以告诉我如何构建此结构。 此方法在我的Player类中 问题答案: 如下进行: 运

  • 我需要检查用户输入的内容是否正确。如果不是,我需要以msgbox的形式打印错误。 上面的代码似乎不起作用。 有什么想法吗?

  • 我是一个学生,我有一个小问题验证输入。 我试过的是把字符串解析成double的测试,但我做不到。我不知道如何测试双倍是否只是数字。 请给我一个我该做什么的线索。

  • 当前正在编辑代码以创建跳过列表,我正在尝试读取一个文件,其中包含需要插入、搜索或删除的数据(分别由i、s、d表示)。 当试图运行它时,我被抛出数字格式异常,当它在catch语句中打印堆栈跟踪时,它看起来好像没有读取第一个字符,应该是“i”。 以下是我的主代码当前的样子,因为这似乎就是问题所在 这是我的示例输入数据文本文件的样子 当它运行并吐回堆栈跟踪时,它会说 所以我现在猜测,出于某种原因,当50