鱼C论坛

 找回密码
 立即注册
查看: 496|回复: 19

[已解决]不能使用Python的内置方法,如何将十进制的字符串转换成整形

[复制链接]
发表于 2018-8-25 10:53:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
不能使用Python的内置方法,如何将十进制的字符串“1224546”转换成整形?大家有思路嘛
最佳答案
2018-8-25 11:34:53
本帖最后由 凌九霄 于 2018-8-25 11:42 编辑

比较笨的解决,但完全没任何内置函数
  1. def strnum2int(strnum):
  2.     l = 0
  3.     i = 0
  4.     for j in strnum[::-1]:
  5.         if j == '1':
  6.             l += 1 * 10 ** i
  7.         elif j == '2':
  8.             l += 2 * 10 ** i
  9.         elif j == '3':
  10.             l += 3 * 10 ** i
  11.         elif j == '4':
  12.             l += 4 * 10 ** i
  13.         elif j == '5':
  14.             l += 5 * 10 ** i
  15.         elif j == '6':
  16.             l += 6 * 10 ** i
  17.         elif j == '7':
  18.             l += 7 * 10 ** i
  19.         elif j == '8':
  20.             l += 8 * 10 ** i
  21.         elif j == '9':
  22.             l += 9 * 10 ** i
  23.         elif j == '0':
  24.             l += 0 * 10 ** i
  25.         i += 1
  26.     return l

  27. print(strnum2int('1124546'))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-25 10:57:45 | 显示全部楼层
不用int吗?用循环语句一位一位读取再乘以对应的倍数(10,100,1000)?
不懂为什么不用内置方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 10:57:47 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-8-25 11:05:06 | 显示全部楼层
solelysoar 发表于 2018-8-25 10:57
不用int吗?用循环语句一位一位读取再乘以对应的倍数(10,100,1000)?
不懂为什么不用内置方法{:10_269 ...

面试题,不能用int等内置方法。
我的思路是:
a = "1224546"
b = []
for i in a:
    b.append(i)
sum = 0
f = 0
for i in range(-1,-10,-1):
    n = b
    sum += n*(10**f)
    f +=1
print(sum)
但是这个n还是个字符串。。没办法了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 11:07:45 | 显示全部楼层
小鱼米 发表于 2018-8-25 11:05
面试题,不能用int等内置方法。
我的思路是:
a = "1224546"

不让用python的内置方法,可以用C的内置方法啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-25 11:09:10 | 显示全部楼层
塔利班 发表于 2018-8-25 11:07
不让用python的内置方法,可以用C的内置方法啊

没学过C呀,大神请赐教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 11:11:23 | 显示全部楼层
eval能用么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 11:12:55 | 显示全部楼层
小鱼米 发表于 2018-8-25 11:09
没学过C呀,大神请赐教

我也不太会C,题目限定的是否只有int还是把内置函数都否了,
语文得学好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-25 11:16:18 | 显示全部楼层
塔利班 发表于 2018-8-25 11:12
我也不太会C,题目限定的是否只有int还是把内置函数都否了,
语文得学好

不能使用Python的内置方法,将十进制的字符串”1224546”转换成整形。这就是题目,应该是把内置函数都否定了,像map以及reduce都不能用。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 11:16:33 | 显示全部楼层
小鱼米 发表于 2018-8-25 11:05
面试题,不能用int等内置方法。
我的思路是:
a = "1224546"

因为字符*10就变成一个重复10遍的字符串了
那你说不能用内置函数包不包括ord函数?先求“1”的ASC码,ASC码是数字可以进行计算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-25 11:17:01 | 显示全部楼层

不行,python内置函数都不能用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 11:17:38 | 显示全部楼层
看了下,eval也是内置方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-25 11:19:11 | 显示全部楼层
solelysoar 发表于 2018-8-25 11:16
因为字符*10就变成一个重复10遍的字符串了
那你说不能用内置函数包不包括ord函数?先求“1” ...

ord也是python内置的吧。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 11:20:37 | 显示全部楼层
if else算不算
if a == "1224546":
    a=1224546
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-25 11:21:59 | 显示全部楼层
塔利班 发表于 2018-8-25 11:20
if else算不算
if a == "1224546":
    a=1224546

这要是可以的话,那真是玩犊子了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 11:26:30 From FishC Mobile | 显示全部楼层
做个字典撒,‘0‘:0,以此类推,这个不算内置函数了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-25 11:31:57 | 显示全部楼层
chongchuigu 发表于 2018-8-25 11:26
做个字典撒,‘0‘:0,以此类推,这个不算内置函数了吧

做字典之后要取value,不还是用到了python的内置方法嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 11:33:03 | 显示全部楼层
楼上的可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-25 11:34:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2018-8-25 11:42 编辑

比较笨的解决,但完全没任何内置函数
  1. def strnum2int(strnum):
  2.     l = 0
  3.     i = 0
  4.     for j in strnum[::-1]:
  5.         if j == '1':
  6.             l += 1 * 10 ** i
  7.         elif j == '2':
  8.             l += 2 * 10 ** i
  9.         elif j == '3':
  10.             l += 3 * 10 ** i
  11.         elif j == '4':
  12.             l += 4 * 10 ** i
  13.         elif j == '5':
  14.             l += 5 * 10 ** i
  15.         elif j == '6':
  16.             l += 6 * 10 ** i
  17.         elif j == '7':
  18.             l += 7 * 10 ** i
  19.         elif j == '8':
  20.             l += 8 * 10 ** i
  21.         elif j == '9':
  22.             l += 9 * 10 ** i
  23.         elif j == '0':
  24.             l += 0 * 10 ** i
  25.         i += 1
  26.     return l

  27. print(strnum2int('1124546'))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-25 11:53:09 | 显示全部楼层
凌九霄 发表于 2018-8-25 11:34
比较笨的解决,但完全没任何内置函数

确实可以,厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 07:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表