fq = lambda i: i if i.isnumeric() else f'{i}',fq获取不到i的值只能获取地址怎么修改
时间: 2024-02-24 18:54:42 浏览: 97
`fq` 函数中的 `i` 参数是一个字符串类型的变量,在 Python 中,字符串类型是不可变类型的,因此无法直接修改字符串的值。
如果要修改 `fq` 函数中的逻辑,可以考虑将 `i` 转换成列表类型,然后对列表进行操作,最后将列表转换回字符串类型。下面是修改后的代码示例:
```python
fq = lambda i: ''.join([str(i)] if not i.isnumeric() else [i])
# 测试
print(fq('123')) # 输出:123
print(fq('abc')) # 输出:'abc'
```
在上面的代码中,`fq` 函数首先使用 `if not i.isnumeric()` 判断 `i` 是否为数字,如果不是数字,则将字符串 `i` 转换为只包含一个元素的列表 `[str(i)]`,该元素为字符串类型的 `i` 值。
如果 `i` 是数字,则将数字作为一个元素添加到列表中,该元素为数字类型的 `i` 值。最后,使用 `join` 方法将列表转换成字符串类型的返回值。
这样就可以实现根据输入参数的类型返回相应的值了。
相关问题
fq = lambda i: i if i.isnumeric() else 'i' print(fq)打印不出来i的值
是的,打印fq只会输出这个lambda函数的定义,而不会执行它。要执行这个lambda函数并输出结果,可以像这样调用它:
```
fq = lambda i: i if i.isnumeric() else 'i'
print(fq('123')) # 输出 123
print(fq('abc')) # 输出 'i'
```
fq = lambda i: i if i.isnumeric() else f"'{i}'" AttributeError: 'int' object has no attribute 'isnumeric'怎么修改
这个错误是由于你传给 `fq` 函数的参数是一个 `int` 类型的对象,而 `int` 类型并没有 `isnumeric()` 方法。
如果你想要让 `fq` 函数支持 `int` 类型的参数,可以将函数改为:
```
fq = lambda i: str(i) if isinstance(i, (int, float)) or i.isnumeric() else f"'{i}'"
```
这样,如果传入的参数是 `int` 或 `float` 类型,则将其转换为字符串;如果传入的参数是字符串,就添加单引号。这样就可以同时支持数字和字符串类型的参数了。
阅读全文