我已经做过一些研究,但我找不到解决方案或无法解决我的疑问。
我正在进行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。
在此先感谢您的帮助=)
答案 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
与其他内容(我的代码中的cur
和prev
)进行比较。