[英]Cycling the digits of a 5 digit number in a function
我正試圖解決這個問題,但我只是卡在最后。
我需要創建一個循環 5 位數字的函數。 例如,輸入是12345
,然后它應該是51234
、 45123
等。然后當它循環出來時,直到它再次開始是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.