max = str(i) + max等同于max = int(''.join(nums[::-1]))
法1:
nums = sorted(nums)
for i in nums:
max = str(i) + max
min = min + str(i)
法2:
nums = sorted(nums)
max = int(''.join(nums[::-1]))
min = int(''.join(nums))
这两种方法在功能上是相同的,都是将列表 nums 进行排序,并将排序后的元素连接为字符串,然后将字符串转换为整数。
两种方式的结果是相同的,都能得到排序后的列表中元素的逆序排列的整数。选择哪种方式取决于个人偏好和代码风格。
在运行时间方面,两种方式的差异应该是非常小的,因为它们的逻辑和计算复杂度是相似的。无论是使用 sorted(nums) 进行排序,还是使用切片操作和字符串连接进行逆序排列,最后将字符串转换为整数,它们的时间复杂度都是线性的,取决于列表中元素的数量。
nums = sorted(nums):这种方式使用了 sorted() 函数对列表 nums 进行排序,得到一个新的排序后的列表。这种方式可以直接修改列表 nums 的顺序,但也会创建一个新的列表对象。
max = int(‘’.join(nums[::-1])):这种方式使用了切片操作 nums[::-1] 将列表 nums 中的元素逆序排列,并使用空字符串 ‘’ 进行连接,得到一个逆序排列的字符串。然后,使用 int() 函数将该字符串转换为整数,赋值给变量 max。这种方式没有修改原始列表 nums 的顺序,而是通过切片和字符串连接操作得到逆序排列的整数。
时间限制:
1s
内存限制:
128MB
题目描述:
任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
1、将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
2、将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);
3、求两个数的差,得到一个新的四位数(高位零保留)。
重复以上过程,最后一定会得到的结果是6174。
比如:4312 3087 8352 6174,经过三次变换,得到6174
输入描述:
一个四位整数,输入保证四位数字不全相同
输出描述:
一个整数,表示这个数字经过多少次变换能得到6174
样例输入:
4312
样例输出:
3
nums = [i for i in input()]
count = 0
while nums != '6174':
count += 1
nums = sorted(nums)
max = ''
min = ''
for i in nums:
max = str(i) + max
min = min + str(i)
max = int(max)
min = int(min)
nums =str(max - min)
print(count)
nums = [i for i in input()]
count = 0
while nums != '6174':
count += 1
max = ''
min = ''
nums = sorted(nums)
max = int(''.join(nums[::-1]))
min = int(''.join(nums))
nums =str(int(max) - int(min))
print(count)
num = int(input())
count = 0
while num != 6174:
nums = []
count += 1
#将四位数分开并排序
for i in str(num):
nums.append(int(i))
nums = sorted(nums)
#生成四位数能组成的最大值最小值
max = ''
min = ''
for i in nums:
max = str(i)+max #新学的方法
min = min+str(i)
#求max和min的差
max = int(max)
min = int(min)
num = max - min
#输出
print(count)
不理解nums = [i for i in input()]的宝子,可以查看我这篇文章python蓝桥杯备考——快捷一行输入