python - 在函数中循环 5 位数字的数字
问题描述
我正在尝试解决这个问题,但我只是被困在了最后。
我需要创建一个循环 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
方法,因为如果您不知道自己在做什么,这可能会非常危险,因此请尽可能避免使用它,除非您真的没有其他方法可以处理有问题。更多在这里:
推荐阅读
- javascript - 结束日期过后自动隐藏行/更改颜色
- mvvm - Xamarin.Forms AppShell 中的共享 TitleView
- azure - 如何在 Azure 门户中的两个订阅之间迁移 SQL 数据
- python - 如何使用 python 中给出的预定义输入和响应创建聊天机器人?
- sql - 具有多个部分匹配条件的sql查询
- excel - 选择/输入单元格 (A1) 时,Excel 是否可以自动在单元格 (A2) 中输入值?
- python - 打开外部程序时如何自动“按键”?
- wso2 - 使用 Ballerina 将 Google 电子表格中的列号转换为相关的列字母
- python - Pytest,如何针对夹具的值或无进行测试?
- java - 配置变更跟踪系统