一尘不染

切换索引,使用显示的相同精确的9位数字创建下一个最高数字

python

因此,我收到了一个挑战,陈述如下:“设计一个程序,输入一个9位数字,其中没有数字出现两次,并输出对应于下一个最高数字的相同9位数字作为输出。如果不存在这样的数字,
,算法应指出这一点。例如,如果输入为781623954,则输出为781624359。”

因此,我想到了翻转索引的想法,因此请检查一下最后一个索引是否正确,然后比较,然后在需要时翻转,但由于某些原因我的代码无法正常工作。我只检查最后两位数字而不是全部数字,因此,如果您可以帮助我并为我检查一下,并且您对解决此问题有更好的想法,请分享。

input = raw_input("Enter 9 Digits: ")
x = 9
while x>0:
    x-=1
    if input[8] > input[7]:
        temp = input[8]
        input[8] == input[7] 
        input[7] == temp
        print input
        break

阅读 160

收藏
2020-12-20

共1个答案

一尘不染

我不确信您会使用翻转数字的方法来保证找到 下一个 最高的数字(至少在没有进一步检查的情况下)

这是一个简单的解决方案:只需增加输入数字并检查是否满足条件或找不到数字。

set() 可用于获取数字中唯一的一组数字。

input_num = '781623954'
next_num = int(input_num) + 1
input_digits = set(input_num)
found = False
while not found:
    next_num += 1
    next_digits = set(str(next_num))
    found = len(next_digits) == 9 and input_digits == next_digits
    if next_num > 987654321:
        break

if found:
    print(next_num)
else:
    print("No number was found.")
2020-12-20