如何在python中将字符串转换为数字



我在codewars中看到了一个有趣的python练习。它是关于将字符串转换为数字。我需要一些建议或指导来解决这个python练习。谢谢你

这是练习:在这个类型中,我们要将字符串转换为整数。字符串只是用单词表示数字。例子:"人1

,这是我的代码:

def parse_int(string):
dict_of_numbers={ "zero":0, "one":1, "two":2, "three":3, "four":4, "five":5, "six":6, "seven":7, "eight":8, "nine":9,"ten":10, "eleven":11, "twelve":12, "thirteen":13, "fourteen":14, "fifteen":15, "sixteen":16, "seventeen":17, "eighteen":18, "nineteen":19, "twenty":20, "thirty":30, "forty":40, "fifty":50, "sixty":60, "seventy":70, "eighty":80, "ninety":90,"thousand":1000,"hundred":100}
string=string.replace(' ','-')
numbers=string.split('-')
created_number=0
for number in numbers:
for key,value in dict_of_numbers.items():
if number==key:
created_number+=value
return created_number

我有一个解决方案,我没有测试它的大集合的数字,但它可能会给你一些想法:

  1. 语音号码有时求和,有时相乘。
  2. 有时人们在数字之间加一个and。如:thirty seven thousand and twenty one
  3. 不要使用[]从你的字典中获取值。采用get法。因此,如果没有数据对应的数字,您可以控制返回。
  4. 使用str的.lower()来降低字符串中的字母,以避免大小写问题

我写的代码如下:

def parse_int(string):
dict_of_numbers = {"zero": 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7,
"eight": 8, "nine": 9, "ten": 10, "eleven": 11, "twelve": 12, "thirteen": 13, "fourteen": 14,
"fifteen": 15, "sixteen": 16, "seventeen": 17, "eighteen": 18, "nineteen": 19, "twenty": 20,
"thirty": 30, "forty": 40, "fifty": 50, "sixty": 60, "seventy": 70, "eighty": 80, "ninety": 90,
"thousand": 1000, "hundred": 100}
string = string.replace(" and ", " ")
the_number = 0
for each in string.lower().split():
if each in ["hundred", "thousand"]:
the_number *= dict_of_numbers.get(each, 1)
else:
the_number += dict_of_numbers.get(each, 0)

return the_number

print(parse_int("thirty seven thousand and twenty two")) # 37022

最新更新