python - 一个接收一串数字并返回整数而不使用内置 int() 函数的函数
问题描述
我需要创建一个接收字符串的函数,例如'142',并将其作为整数返回,而不使用 int() 函数。我完全不确定从哪里开始,提供给我们的“提示”是使用一个列表,例如
digits = list('0123456789')
编辑:我们还没有学过 chr、ord、eval() 或 ast.literal_eval?我们还没有学习什么是字符串和整数文字,也没有学习字典。也不鼓励使用 for 循环和 'in'。
有人对如何解决这个问题有任何想法吗?
解决方案
从'5768'
你可以得到8 * 1 + 6 * 10 + 7 * 100 + 5 * 1000
。您可以使用循环来访问字符串的字符,并且您必须跟踪乘数。
index
可用于查找当前字符在列表中的位置,然后您就有了正确的整数值进行乘法运算。
digits = list('0123456789')
value = 0
exp = 0
for c in reversed('5768'):
print(f'c={c} exp={exp}')
i = digits.index(c)
value += i * 10 ** exp
exp += 1
print(value)
在问题中获得更多约束后,可以将此代码调整为以下内容。
digits = list('0123456789')
number = '5768'
value = 0
character_position = 0
while character_position < len(number):
i = digits.index(number[character_position])
value += i * 10 ** (len(number) - character_position - 1)
character_position += 1
print(value)
单线解决方案:
print(sum('0123456789'.index(c) * 10 ** exp for exp, c in enumerate(reversed('5768'))))
推荐阅读
- powerbi - Power BI 创建仅选择 MaxDate Row 的度量值分组 Max(Date)
- java - Java SonarQube:需要排除或测试匿名类的覆盖率质量门
- php - 生成并打印从 woocomerce 到 starprint 打印机的订单信息
- python - 无法检索通过 ref 作为输出参数传递给 DLL 函数的 ctype 的值
- tableau-api - Tableau:从整个列表中查找未使用的视图
- c# - 使用 Parallel.Invoke() 时可以返回值吗?
- node.js - winston-elasticsearch 和自定义列
- r - 更改interact_plot 中的间隔功能区
- database - 如何处理不同类型的一张桌子?
- python - 如何操纵 GAN 的潜在空间?