Python:如何从用户输入构建数组并找出其中的最大值?
解决方法:接收用户输入并存入数组后找出最大值
首先明确常见问题根源:Python3 里 map() 返回的是迭代器对象,而非直接可重复操作的列表。如果直接将其赋值给数组变量,迭代器遍历一次后就会耗尽,后续再操作就拿不到元素;另外若未把输入字符串转为数值类型,比较的会是字符串的 ASCII 值,而非数字大小。
正确实现步骤
接收输入并转为数值列表
先用input().split()获取分割后的字符串列表,再通过map()转成数值类型,最后用list()把迭代器转为可重复访问的列表:# 接收用户输入,转换为整数列表(如需浮点数则把int换成float) num_list = list(map(int, input("请输入多个数字,用空格分隔:").split()))手动遍历找最大值
if not num_list: print("未输入任何数字") else: max_num = num_list[0] # 逐个比较元素更新最大值 for num in num_list: if num > max_num: max_num = num print("输入的数组:", num_list) print("最大值:", max_num)
你的代码失效原因
如果你的代码类似这样:
arr = map(int, input().split()) # 第一次遍历耗尽迭代器 for num in arr: print(num) # 第二次遍历无元素可用 max_num = max(arr)
迭代器仅能被遍历一次,遍历后内部就没有元素了,后续打印数组、找最大值自然失败。将 map() 结果转为 list 就能解决这个问题,列表支持多次遍历与操作。
内容的提问来源于stack exchange,提问作者Alfred Nirmal
相关产品推荐
相关产品推荐

