首页 > 解决方案 > 在函数中循环 5 位数字的数字

问题描述

我正在尝试解决这个问题,但我只是被困在了最后。

我需要创建一个循环 5 位数字的函数。例如,输入是12345,然后它应该是5123445123等等。然后当它循环出来,直到它再次开始12345,它应该打印出所有循环的最大数量。

def number_cycle(number):
    if number >= 99999 or number < 9999:#this is for limiting the number to 5 digits
        print('Error,number isnt in 5 digit format')
    else:
        e = number%10 #5th digit
        d = int(((number-e)/10)%10)#4th digit
        c = int(((((number - e)/10)-d)/10)%10)#3rd digit
        b = int(((((((number - e)/10)-d)/10)-c)/10)%10)#2nd digit
        a = int(((((((((number - e)/10)-d)/10)-c)/10)-b)/10)%10)#1st digit
        print(e,a,b,c,d)
        print(d,e,a,b,c)
        print(c,d,e,a,b)
        print(b,c,d,e,a)
        print(a,b,c,d,e)
        
   number = eval(input('Input number:'))

我不知道如何从所有这些中获得最大的数字。

你能帮我吗?

标签: pythonfunction

解决方案


你可以试试这个解决方案:

def get_largest(number):
    num_str = str(number)
    num_len = len(num_str)

    if num_len != 5:
        print(f"Error: {number} is not a 5 digit number")
        return

    largest = 0
    for i in range(num_len):
        cycled_number = int(num_str[i:] + num_str[:i])
        print(cycled_number)

        if cycled_number > largest:
            largest = cycled_number

    print("Largest: ", largest)


number = int(input("Input number: "))
get_largest(number)

它基本上会使用 for 循环将您的 5 位数字转换为字符串,然后旋转字符串,比较旋转后的数字并打印最大的数字。

笔记:

在您的原始代码片段中,我建议不要使用内置eval方法,因为如果您不知道自己在做什么,这可能会非常危险,因此请尽可能避免使用它,除非您真的没有其他方法可以处理有问题。更多在这里:


推荐阅读