import sys

# 输入
str1 = list(map(str,input().split()))

# 输出
print(len(str1[-1]))

核心:map(str, input().split())语法拆解

1. 基础语法拆解

map(str, input().split())

这个表达式由三个部分组成:

  1. input()获取用户输入的一行文本(返回类型是字符串),例如输入 1 a Bc 会得到字符串 "1 a Bc"
  2. .split()对输入的字符串进行分割,默认按空格分割,返回列表:
  3. map(str, ...)map() 函数对列表中的每个元素应用 str 转换。但这里有个细节:因为 input().split() 的结果已经是字符串列表,所以 map(str, ...) 实际上没有改变原有数据类型。如果改成 map(int, ...) 就有意义了,例如将字符串列表转为整数列表。

2. 典型应用场景

场景1:将输入转为整数列表

# 用户输入:10 20 30
nums = list(map(int, input().split()))
print(nums)  # 输出:[10, 20, 30]

场景2:处理混合类型输入

# 用户输入:5 apple 3.14
data = list(map(str, input().split()))  # 强制转为字符串(实际无变化)
print(data)  # 输出:["5", "apple", "3.14"]

3. 关键注意事项

  1. 必须转换为列表才能查看结果map() 返回的是迭代器对象,需要 list() 显式转换:
  2. 分隔符的灵活性如果输入不是空格分隔,可以指定分隔符:
  3. 常见错误示例

4. 与列表推导式对比

map() 和列表推导式功能类似,但语法不同:

# map写法
nums = list(map(int, input().split()))

# 列表推导式写法(更直观)
nums = [int(x) for x in input().split()]

5. 完整示例演示

# 程序功能:输入多个数字求和
user_input = input("输入多个数字用空格分隔:")
numbers = list(map(int, user_input.split()))
total = sum(numbers)
print(f"总和为:{total}")

# 运行示例:
# 输入:3 5 7
# 输出:总和为:15