如何-编写程序来检查一个数字是否至少有一个相等的相邻数字

时间:2018-08-25 13:54:42

标签: python python-3.x

我已经做过一些研究,但我找不到解决方案或无法解决我的疑问。

我正在进行Coursera python课程,我有一个可选的练习,我没有弄清楚解决方案。

因此,练习很简单,“编写一个接收数字的程序,并检查接收的数字是否至少具有一个相等的相邻数字。” EX:12256(相邻数字),123456(没有相邻数字)仅使用while循环和/或if语句。因此,不允许使用列表和镜头。

我确实这样:

    x = int(input("Number: "))

    while (x != 0):
        resto = x % 10
        x = (x - resto) //10
    if resto == resto:
        print("yes")
    else:
        print("no")

这里的问题是我没有弄清楚如何将我的if语句评估为false。

在此先感谢您的帮助=)

3 个答案:

答案 0 :(得分:1)

如果需要检查数字的每个数字,请不要将其转换为int。然后,您可以测试每个数字:

num = input('enter number: ')
index = 0
prev = None
while index < len(num):
    if num[index] = prev:
        print('yes!')
        break
    prev = num[index]
    index += 1
else:
    print('no!') # no same adjacent digit

如果while循环终止而没有遇到break,则执行else子句。如果没有间断,则没有相邻的相同数字。我没有进行任何类型检查以确保输入的数字为数字

答案 1 :(得分:0)

你说

  

这里的问题是我没有弄清楚如何将if语句评估为false。

解决方案是

if resto == (x % 10):

代替

if resto == resto:

考虑一下:是否有任何可能的场景,其中resto不会等于其自身?

答案 2 :(得分:0)

接近您的版本。请注意,只有在while循环正常终止时才执行else循环的while语句,而不是通过break执行。

num = int(input('enter number: '))

prev = num % 10
num //= 10

while num:
    cur = num % 10
    if cur == prev:
        print('yes')
        break
    prev = cur
    num //= 10
else:
    print('no')

您将if语句放在while循环之后 -它应该在其中。并且应该将resto与其他内容(我的代码中的curprev)进行比较。