https://blog.csdn.net/PoGeN1/article/details/82251877
这个代码实现了这个功能,我感觉这个代码更像是面向对象的编程,
在这组代码中我学到了不少知识,当然也花费了不少时间查阅资料,
希望明天会更好!
知识点
def 定义函数
try/except异常处理 - 尝试并抛出程序中的异常,避免程序终止
if not语句 - 如果不是什么什么的语句跟if语句相反
isdigit方法 - 检查列表中的值是否都是数字的方法
raise函数 - 抛出异常的函数
return 函数 - 如果不加返回值则返回函数,如果加返回值则返回相对应的值,
执行后下面语句就不知行了
sort方法 - 排列列表中数字大小的方法,其中reverse=True是从大到小的排列方法
join方法 - 是将字符串拼接的方法
while True函数 - 循环一直执行
split方法 - 字符串切片的方法能将字符串切开
break函数 - 结束while循环的语句,避免造成死循环
"""
题目:
设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
如:n=3时,3个整数13,312,343,连成的最大整数为34331213。
如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。
"""
"""
这个功能没有实现
a = int(input("请输入随机数字:"))
numbers = input().split()
temp = ""
def find(array):
global temp
if len(array) == 0:
return
b = array[0]
for i in array:
if b + i < i + b:
b = i
temp = temp + b
array.remove(b)
find(array)
return temp
print(find(numbers))
"""
# 定义函数judge(判定)
# 循环遍历列表
# 执行try函数将列表中输入的内容逐个比对
# 如果不是数字就执行NameError
# 继续执行
# 输出错误提示
# 返回程序
#
# 通过数字检测
# 使用列表中的sort的方法,利用reverse = True
# 来反转排序,让最大数字在最前
# 打印一个字符串,利用join的方法拼接l列表中的整数
# 返回程序
def judge(l):
for i in l:
try:
if not i.isdigit():
raise NameError
except NameError:
print("数字类型错误,请输入纯数字!")
return 0
else:
l.sort(reverse=True)
print(''.join(l)) # 拼接字符串
return 1
# while True这句说的是永远循环
# 1首先定义l是一个空列表
# 2用l_str来接收输入的数字
# 3把l_str这个列表用split的方法切成切片,用l这个空列表来接收
# 4如果judge这个判定函数有返回值就结束程序
if __name__ == '__main__':
while True:
# n = input('请输入正数个数')
l = []
l_str = input('请依次输入数值,中间用空格分隔:')
l = l_str.split(' ')
if judge(l):
break