我需要将1到99之间的数字转换为单词。这是我到目前为止所得到的:
num2words1 = {1: 'One', 2: 'Two', 3: 'Three', 4: 'Four', 5: 'Five', \
6: 'Six', 7: 'Seven', 8: 'Eight', 9: 'Nine', 10: 'Ten', \
11: 'Eleven', 12: 'Twelve', 13: 'Thirteen', 14: 'Fourteen', \
15: 'Fifteen', 16: 'Sixteen', 17: 'Seventeen', 18: 'Eighteen', 19: 'Nineteen'}
num2words2 = ['Twenty', 'Thirty', 'Forty', 'Fifty', 'Sixty', 'Seventy', 'Eighty', 'Ninety']
def number(Number):
if (Number > 1) or (Number < 19):
return (num2words1[Number])
elif (Number > 20) or (Number < 99):
return (num2words2[Number])
else:
print("Number Out Of Range")
main()
def main():
num = eval(input("Please enter a number between 0 and 99: "))
number(num)
main()
现在,到目前为止,我最大的问题是if,elif和else语句似乎不起作用。仅第一个if语句运行。
第二个问题是创建20-99之间数字的字符串版本。
PS:是的,我知道num2word库,但不允许使用它。
您的第一条陈述逻辑不正确。除非等于Number
或小于1,否则该语句 始终为 True;否则,该语句 始终为 True。200也大于1。
请and
改用,并1
在可接受的值中包括:
if (Number >= 1) and (Number <= 19):
您也可以使用链接:
if 1 <= Number <= 19:
对于20或更大的数字,可使用divmod()
来获得十位数和余数:
tens, remainder = divmod(Number, 10)
演示:
>>> divmod(42, 10)
(4, 2)
然后使用这些值从各个部分构建您的数字:
return num2words2[tens - 2] + '-' + num2words1[below_ten]
不要忘记考虑数字大于20且divmod操作没有余数的情况:
return num2words2[tens - 2] + '-' + num2words1[remainder] if remainder else num2words2[tens - 2]
全部放在一起:
def number(Number):
if 0 <= Number <= 19:
return num2words1[Number]
elif 20 <= Number <= 99:
tens, remainder = divmod(Number, 10)
return num2words2[tens - 2] + '-' + num2words1[remainder] if remainder else num2words2[tens - 2]
else:
print('Number out of implemented range of numbers.')
我无法在pandas dataframe中创建一个新列,该列使用python num2words库将数字转换为单词,它使用简单的int或float参数,但不使用series 这就是我曾经尝试过的: TypeError Traceback(最近的调用最后)在---- ###################################################################
问题内容: 我写了一个非常简单的查询,结果为500,我需要像下面这样转换该值:- 问题答案: 用力卢克;) SqlFiddleDemo 提示采用拼写形式。 编辑: 添加对以下内容的支持: SqlFiddleDemo 编辑2: 添加对float的有限支持: SqlFiddleDemo3 编辑3: 10.3的输出为十点三,但10.3的输出为十点三,10.03的输出为十点三。我怎样才能做到这一点? 根据
问题内容: 请建议如何将使用库转换为使用库。 我未成功执行的操作: 问题答案: 您无需使用。您应该使用Gson在JSON字符串和您自己的Java对象之间进行转换。 请参阅《Gson用户指南》: (序列化) (反序列化)
问题内容: 我正在编写将给定数量转换为单词的代码,这是我在谷歌搜索后得到的。但是我认为要完成一个简单的任务需要一些冗长的代码。两个正则表达式和两个循环,我想要更简单的方法。 我正在尝试使其尽可能短。并发布我的想法 有什么建议? 同样,上面的代码转换为英语编号系统,例如Million / Billion,我不希望使用南亚编号系统。就像在Lakhs和Crores 问题答案: 更新 :看起来这比我想象的
问题内容: 当我在mysql中执行查询时,我尝试按以下方式打印输出。 Salary列的值为45000,第三列中的第二列中的Value通过Query转换为单词。 我找到了一些文章,在Oracle中可以使用以下查询获得如上所述的结果: 输出: 在MySQL中,我尝试了LPAD,RPAD,但那些只是将字符串添加到结果中,而不是将单词转换为字符串。 我找到了一些教程,但所有这些教程都对“ TO_CHAR(
问题内容: 我正在尝试将以单词形式编写的数值转换为整数。例如,“ iPhone有233.7万个应用程序”将变成“ iPhone为230783个应用程序” 在开始编码之前,我想知道此转换是否存在任何功能/代码。 问题答案: 有很多页面讨论从数字到单词的转换。反方向的数量不多。 以获取一种不错的算法: 好吧,总的来说,您正在做两件事:查找标记(转换为数字的单词)和应用语法。简而言之,您正在为一种非常有