python - 为什么 int2word 程序只打印前十行?
问题描述
我正在导入一个文件,字数从一到九十九。目标是读取每一行并返回一个与文件中的单词对应的整数值。但是,我似乎无法弄清楚为什么我的代码只适用于前十个数字/行?
def word_to_int(w):
i = 0
ones = [[1,'one'], [2,'two'], [3,'three'], [4,'four'], [5,'five'], [6,'six'], [7,'seven'], [8,'eight'], [9,'nine']]
teens = [[10,'ten'], [11,'eleven'], [12,'twelve'], [13,'thirteen'], [14,'fourteen'], [15,'fifteen'], [16,'sixteen'], [17,'seventeen'], [18,'eighteen'],[19,'nineteen']]
tens = [[2,'twenty'], [3,'thirty'], [4,'forty'], [5,'fifty'], [6,'sixty'], [7,'seventy'], [8,'eighty'], [9,'ninety']]
if(w.find ('-') != -1):
a = w.split('-') #gets rid of hyphen and seperates parts
for first in tens:
if(a[0] == first[1]): #first half of word
i = first[0]*10
for second in ones:
if (a[1] == second[1]): #second half of word
i += second[0]
else:
for num in ones:
if w == num[1]:
i = num[0]
if(i == 0):
for num2 in teens:
if w == num2[1]:
i == num2[0]
if(i == 0):
for num3 in tens:
if w == num3[1]:
i = num3[0]*10
return i
有任何想法吗?
解决方案
请更改如下代码:
if(i == 0):
for num2 in teens:
if w == num2[1]:
i = num2[0] # not i == num2[0]
print(num2)
谢谢
推荐阅读
- javascript - 从突变请求字段构建 GraphQL 查询
- javascript - 当元素存在而不使用 setInterval
- python - 当不满足某些条件时从列表中删除元组
- google-bigquery - 我的 PowerBI 报告(由 Google Bigquery 提供)在线时无法刷新,我做错了什么?
- c - 有效地将文件中的数据送入环形缓冲区
- vb.net - 使用 EWS,CcRecipients 和 DisplayCc 不匹配
- bash - Bash 选择格式
- android - 我是编程新手。我正在尝试制作 android app soundrecoder
- sql - 在where子句中带有大小写的sql
- okta - IOS 10 上 React Native 中的 Okta