簡體   English   中英

在函數中循環 5 位數字的數字

[英]Cycling the digits of a 5 digit number in a function

我正試圖解決這個問題,但我只是卡在最后。

我需要創建一個循環 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:'))

我不知道如何從所有這些中獲得最大的數字。

你能幫我嗎?

你可以試試這個解決方案:

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方法,因為如果您不知道自己在做什么,它可能會非常危險,因此請盡可能避免使用它,除非您真的沒有其他方法處理一個問題。 更多在這里:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM