精华内容
下载资源
问答
  • 需求 1 2 ...今天了三千二百行代码。...今天了3200行代码。...可以后往前遍历,遇到的是09的数字,就乘以前位的单位,遇到新的单位(十百千)就替换成数字供下数字用。 举例 1 2 3...

    需求

    1
    2
    今天写了三千二百行代码。
    今天写了3200行代码。

    两行意思相同,只是表达方式不太能够,统一掉。

     

    原理

    数字的特征是   数字 + 单位,例如三百,四十二,九千零二

    可以从后往前遍历,遇到的是0到9的数字,就乘以前一位的单位,遇到新的单位(十百千万)就替换成数字供下一个数字用。 

    举例 

    1
    2
    3
    4
    5
    6
    五百四十三
    1. 三-->3  3 <10  :  total = 3
    2. 十-->10, 10 ≥10,且不为0 : r = 10
    3. 四-->4, 4<10 : total = 3 + 4*10 = 43
    4. 百-->100, 10 0≥10,且不为0 : r = 100
    5. 五-->5, 5<10 : total = 43 + 5*100 = 543 

     

    参考代码

    复制代码
    #-*- coding: cp936 -*-
    import re
    import string
    
    common_used_numerals_tmp ={'':0, '':1, '':2, '':2, '':3, '':4, '':5, '':6, '':7, '':8, '':9, '':10, '':100, '':1000, '':10000, '亿':100000000}
    common_used_numerals = {}
    for key in common_used_numerals_tmp:
        common_used_numerals[key.decode('cp936')] = common_used_numerals_tmp[key]
    
    def chinese2digits(uchars_chinese):
        total = 0
        r = 1                           #表示单位:个十百千...
        for i in range(len(uchars_chinese) - 1, -1, -1):
            val = common_used_numerals.get(uchars_chinese[i])
            if val >= 10 and i == 0:    #应对 十三 十四 十*之类
                if val > r:
                    r = val
                    total = total +  val
                else:
                    r = r * val
                    #total =total +  r * x 
            elif val >= 10:
                if val > r:
                    r = val
                else:
                    r = r * val
            else:
                total = total +  r * val
        
        return total
    
    
    print chinese2digits('两百三十二'.decode('cp936'))
    print "-------------------------"
    print chinese2digits('十二'.decode('cp936'))
    print "-------------------------"
    print chinese2digits('一亿零八万零三百二十三'.decode('cp936'))
    复制代码

     

    结果

     






    本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3586942.html,如需转载请自行联系原作者

    展开全文
  • 可以后往前遍历,遇到的是09的数字,就乘以前位的单位,遇到新的单位(十百千)就替换成数字供下数字用。 三、举例 五百四十三 1. 三-->3 3 <10 : total = 3 2. 十-->10, 10 ≥10,且不为0 :...
  • 小学数字写法.doc

    2020-12-26 10:31:58
    让学生看看数位顺序,说数位顺序中可以知道哪些方面的知识(数位顺序中可以知道右边起第位是个位,第五位是万位……,还可以知道个位千位组成个级,亿位千亿位组成亿级)。 2.让学生...
  • 二、原理数字的特征是 数字 + 单位,例如三百,四十二,九千零二可以后往前遍历,遇到的是09的数字,就乘以前位的单位,遇到新的单位(十百千)就替换成数字供下数字用。三、举例五百四十三1. 三...

    本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法。分享给大家供大家参考,具体如下:

    一、需求

    今天写了三千二百行代码。

    今天写了3200行代码。

    两行意思相同,只是表达方式不太能够,统一掉。

    二、原理

    数字的特征是 数字 + 单位,例如三百,四十二,九千零二

    可以从后往前遍历,遇到的是0到9的数字,就乘以前一位的单位,遇到新的单位(十百千万)就替换成数字供下一个数字用。

    三、举例

    五百四十三

    1. 三-->3 3 <10 : total = 3

    2. 十-->10, 10 ≥10,且不为0 : r = 10

    3. 四-->4, 4<10 : total = 3 + 4*10 = 43

    4. 百-->100, 10 0≥10,且不为0 : r = 100

    5. 五-->5, 5<10 : total = 43 + 5*100 = 543

    四、参考代码

    #-*- coding: cp936 -*-

    import re

    import string

    common_used_numerals_tmp ={'零':0, '一':1, '二':2, '两':2, '三':3, '四':4, '五':5, '六':6, '七':7, '八':8, '九':9, '十':10, '百':100, '千':1000, '万':10000, '亿':100000000}

    common_used_numerals = {}

    for key in common_used_numerals_tmp:

    common_used_numerals[key.decode('cp936')] = common_used_numerals_tmp[key]

    def chinese2digits(uchars_chinese):

    total = 0

    r = 1 #表示单位:个十百千...

    for i in range(len(uchars_chinese) - 1, -1, -1):

    val = common_used_numerals.get(uchars_chinese[i])

    if val >= 10 and i == 0: #应对 十三 十四 十*之类

    if val > r:

    r = val

    total = total + val

    else:

    r = r * val

    #total =total + r * x

    elif val >= 10:

    if val > r:

    r = val

    else:

    r = r * val

    else:

    total = total + r * val

    return total

    print chinese2digits('两百三十二'.decode('cp936'))

    print "-------------------------"

    print chinese2digits('十二'.decode('cp936'))

    print "-------------------------"

    print chinese2digits('一亿零八万零三百二十三'.decode('cp936'))

    结果:

    2017526120117665.png?20174261228

    PS:这里再为大家提供几款数字转换相关工具供大家参考使用:

    希望本文所述对大家Python程序设计有所帮助。

    展开全文
  • 目前问题:mysql 单个表格 12用户信息,包括帐号密码手机型号头像等...个用户每次登录都把这个用户的个人信息老用户读取出来,写到新建的10个就解决了。 如果以后用户量再增加的话,就建个热表,重复

    目前问题:mysql 单个表格 12万用户信息,包括帐号密码手机型号头像等字符串信息


    2千人同时去读写数据库,导致数据库压力过大,虽然有索引,还是效果不好。


    解决方法:把这个12万的老用户信息,拆开10个表,根据id末尾数的数字分开算表。一个用户每次登录都把这个用户的个人信息从老用户读取出来,写到新建的10个表之一就解决了。


    如果以后用户量再增加的话,就建个热表,重复操作上面的步骤,分解数据库压力。

    展开全文
  • 实例054 将数据中的字段添加ComboBox控件 59 实例055 带查询功能的ComboBox控件 61 2.4 RichTextBox控件应用 63 实例056 利用RichTextBox控件实现文档管理功能 63 实例057 利用RichTextBox控件实现文字...
  • 9.8将个5×5的矩阵中最大的元素放在中心,4个角分别放在4个最小的元素(按右,下的顺序,依次从小大存放),写一个函数实现之,并用main函数调用。 78 10.9在主函数中输入10个等长的字符串。用另...
  • 用户数字上来看,安卓在完成这目标的路上走得相当成功——在我这篇文章时,有超过两种不同的设备正在使用安卓系统。这成就已经超过了任何种操作系统。 支持如此众多的设备意味着系列

    原作者Josh Hight
    原文

    Android平台的最大优势之一就在于它支持各种类型的设备。从你的手机、平板、智能手表到你的电视、汽车等等,不一而足。Android希望自己可以成为全能的移动终端操作系统。从用户数字上来看,Android在完成这一目标的路上走得相当成功——在我写这篇文章时,有超过两万种不同的设备正在使用Android系统。我们可以说,这一成就已经超过了以往的任何一种操作系统。

    当然,支持如此众多的设备就意味着一系列的挑战。因为尽管不同设备在硬件及软件上有极大的不同,用户们却还是希望apps可以在每一种设备上都能够可靠地运行。与此同时,Android的不断更新还给应用开发者们带来了一种特别的麻烦——用户们往往用着过时的Android系统。实际上在开发应用时,开发者们都应该预设他们的用户正在使用着18个月前的Android版本。

    我们不妨设想一下,在这样一种情况下,为了让自己的产品适应大多数用户,应用开发者们将会被迫做出一些令人懊恼的让步,比如放弃新功能以兼容老版本的Android。幸运的是,Android开发团队将兼容老的系统版本及硬件设备视为极为重要的任务,他们站出来为开发者们提供了帮助以使得开发者们并不用那么大费周章的自己去解决兼容问题。然而,这种帮助听起来有些不切实际,因为想要在将来发布的Android版本中兼容老版本这种事情并不那么容易,毕竟Android的API总是要随着时间而不断更新的。这些新的API又怎样能同时兼顾老的Android系统呢?

    答案就是“Android Support Library

    Android Support Library是什么?

    Android Support Library在2011年被最早发布时被称为 Android Compatibility Library。在那时它是被使用的最为广泛的Android Library。应用开发者们在那时已经知道 Android Support Library为老的系统版本提供了新的API。然而这只是故事的开始。
    Android Support Library并不是一个单独的Library,而是一系列Library的合集。我们可以简单地将这些合计分为两个部分:兼容库和组件库(compatibility and component libraries)。

    每一个Library都使用一种命名规范来指定向下兼容的最低版本SDK,开发者们在自己的项目中必须导入Library的名字。Library的命名规范有时看起来会令人困惑,因为人们总是自然而然的认为高版本号的Library兼容着低版本号Library的内容(比如你会认为v7-appcompat改进并兼容着v4的内容)。可惜在大多数情况下,这种脑补出的兼容情况是不存在的。而似乎是为了增加这种困惑一样,Library有一个自己的“修订编号”。举例来说,“AppCompat v21”实际上指的是支持 v7-appcompat的修订版本21。

    兼容库 Compatibility Libraries

    Compatibility Libraries致力于将新的Android的特性向后提供给老的Android版本。如此一来人们就可以在老设备上享受到新版本API所带来的便利。其中,最主要的Compatibility Librariesv4v7-appcompat

    v4

    身躯庞大的v4库是这类Library的始祖。如其名称所示,它将众多的新特性提供给古老的API 4.
    除了支持常见类如FragmentLoader(两者在API 11中被引入),你还能再v4库里见到一些在其他地方找不到的常用类,比如ViewPagerDrawerLayout

    别被他的名字给忽悠了,尽管是一个直通Android1.6的老古董,它却还是一个在当前版本中被广泛使用的的重要Library。在开发过程中,我们总会用到它。

    v7-appcompat

    这个Library常被人简称为AppCompat,它让API 7可以实现在API 11中被引入的ActionBar以及在API 21中才被引入的Toolbar。这个Library需要v4库的支持,却并不包含v4库的内容。所以,任何需要v7库支持的特性都必须得到v4库的支持。

    底层

    Compatibility Libraries大量的使用了垫片(shims)来将新特性兼容到老版本中。如果用户使用的系统版本支持程序调用的API,那么这些垫片就仅仅像一个薄薄的表层覆盖在被调用的组件上,你不会感觉到它的存在。而如果用户使用了陈旧的系统版本,这些垫片就会调用某些轻量级的支持,以代替组件自己来实现Android系统框架接口或传递参数。
    当然,在某些情况下这些兼容性的垫片并不会被使用,或者说程序并不去实现Android系统框架接口。因为Library往往更倾向于实现自己的接口来取代Android提供的框架接口。即使设备的当前系统版本支持那些框架接口。比如,v4中的Fragment

    这种处理方式颇有些趣味,它会产生某种连锁反应,这就仿佛在平静的Android系统框架中丢进了一颗石子,激起层层涟漪。为了实现这一机制,谷歌为Android的重要的特性开发了不止一种的实现接口,他们重复创建了各种函数,然后把这些东西封装成不同的类和资源包,做成了API。所有这些API并行存在于Android里,它们拥有各自自己的继承关系,版本,以及bug

    当然,谷歌声称除了封装包的名字以及少数“不重要的”方法名不同以外,这些重复的API往往都是相同的。然而在实践中,我们总能发现一些并不是那么“不重要的”API之间的不同。而随着时间的推移,这些区别会慢慢扩大。

    问题还不仅如此,应用开发者们往往会认为他们在Android框架接口和Support Library接口中拥有选择的余地。结果却发现这些Library的相互依赖关系会代替开发者们做出选择。举例来说,v7-appcompat library为开发者们提供了Material Design UIAPI 21引入) 。然而其中的所有Activity都继承自 v4 libraryFragmentActivity。于是在项目中,所有针对低于API 21的开发工作都必须使用v4 library里的Fragments,而不是Android框架所提供的Fragments

    即使有的时候并不需要support libraries的支持,谷歌仍然认为使用它们是很好的开发习惯。在为开发者们提供的大多数开发范例和开发模板中,谷歌都使用了v7-appcompatv4
    谷歌在开发这些support libraries上投入了相当大的精力。同时,谷歌也希望开发者们能够真正的依赖这些support libraries。

    组件库 Component Libraries

    除了兼容库compatibility librariesAndroid Support Library 还提供了一些更小的更模块化的组件库Component Libraries来帮助开发者实现某些Android框架本身并不提供的功能。因为这些轻量级Library互相之间不存在依赖关系,所以开发者们可以很轻松的将它们的添加进或删除出自己的工程,而不必担心产生什么不良影响。下面举出的是一些极有价值的组件库:

    v7-recyclerview:支持 RecyclerView 组件,这一被设计来代替ListView的组件可以有效地展示或以动画形式表现大批数据。

    v7-cardview: 支持 CardView 组件,使得cards UI设计模式得以实现。

    v7-gridlayout: 支持 GridLayout 类,使开发者们可以将界面元素整合进一个Grid。

    v7-mediarouter: 支持MediaRouter及相关类,让开发者可以使用Google的媒体路由服务。

    v7-palette: 支持Palette类,开发者可以通过它来突出图片中的颜色效果。

    在基于gradle的安卓项目中添加以上的任何一个组件库对你来说都是易如反掌的。

    这些组件库将功能模块化并给开发者提供了相当大的便利,而且还让谷歌可以再不改动Android框架的前提下提供新的API。这些新的API在被最终加入Android框架之前将被开发者们不断的使用和测试,这些实际使用的信息会被谷歌收集并加以利用。所以对这些新的API的修正将在庞大和复杂的Android框架之外进行,而不是之内,感谢上帝。

    其他库 Other Libraries

    Android Support Library 里还有一些并不常用但却依然很价值的库:

    v8:API 11 引入的RenderScript提供给API 8

    v13:v4库中的Fragment UI 提供额外的兼容支持。

    v17: 支持电视界面开发。

    multidex: 当你的一个Dex文件里包含太多函数时会用的上它。

    annotations: 支持注释功能,比如@NonNull@IntDef

    常见问题 Common Questions

    我什么时候用这些Android Support Library?

    当你开发的应用所面向的最低版本Sdk(minSdkVersion)并不提供你所使用的现有功能时,或是Android基础框架并未提供此功能,而你仅能从Support Library中获取支持时,你就该使用Android Support Library了。

    当然,按照谷歌的说法,你不必在意这些细节,只要Android Support Library里有你要的东西,你尽量去用就好了。

    我该使用哪个版本的Android Support Library?

    简单来说,哪个用得上就用哪个。对于把功能模块化的组件库来说,该用哪个就用哪个。比如当你想使用RecyclerView时,把 v7-recyclerview 导进工程就好。

    由于v13库捆绑了v4库,所以只要你的应用面向的最低版本Sdk(minSdkVersion)支持v13库,那么你就可以使用v13来代替 v4。当然,如果想支持低于API 13的Android系统,你还是得使用v4

    值得注意的是。各种包之间的相互依赖关系会指明哪些库会被用到。

    结论 Conclusion

    为了让Android在谷歌的标准下保持成功,它还需要不断成长。为了实现这一目标,它的其中一个主要任务就是扩大它所支持的设备种类。而这些品种繁多的设备中的相当一部分是永远也不会更新到最新版本的Android系统的。

    尽管看起来并不总是那么优雅,也并不总是那么便利,Android Support Library还是成功的担负起了它的责任。应用开发者们在它的帮助下得以在陈旧的系统版本上使用新的特性和功能,或在Android基础框架外使用新的API。它是Android开发当中重要的一部分,我们作为应用开发者们有义务去理解并使用它。

    展开全文
  • Unicode 分配给字符个唯一的数字编号,这个编号范围 0x000000 0x10FFFF (十六进制),有 110 多,每个字符都有个唯一的 Unicode 编号,这个编号一般成 16 进制,在前面加上 U+。 Unicode 就相当于一张...
  • 【隔行插入】 在当前工作中允许M行N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并能...
  • 【隔行插入】 在当前工作中允许M行N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【隔行插入】 在当前工作中允许M行N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并...
  • 【隔行插入】 在当前工作中允许M行N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并...
  • 2.5.2 某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有 26台计算机,每个子公司在一个网段中,则子网掩码应设为? 2.5.3 与10.110.12.29mask 255.255.255.224属于同一网段的主机IP地址是? ...
  • 【隔行插入】 在当前工作中允许M行N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并...
  • 考虑书中分散介绍了40多个具体算法,译文中归纳增加了个算法列表。另外,对原书的索引,考虑中文的习惯进行了一些调整,并按中文次序进行了排列,希望能更好地服务于读者。 封面 -27 封底 -26 书名 -25 版权 -...
  • 自己不亲自写一遍,里面的细节永远不知道。 以下是我列举的经典题目(带 91 字样的表示出自 91 天学算法活动): 面试题 17.09. 第 k 个数 面试题 17.23. 最大黑方阵 0002. 两数相加 0003. 无重复字符的最长...
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...
  • 13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...
  • Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
  • Java面试宝典2010版

    2011-06-27 09:48:27
    13、是否可以从一个static方法内部发出对非static方法的调用? 14、Integer与int的区别 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 16、下面的代码有什么不妥之处? 17、请说出作用域public,...
  • 要想学习和掌握它的诸多新特性,只能Oracle手册入手,而数页的11g手册不免让人心存畏惧,从中挑出对新特性的描述更需要双“火眼金睛”。  好消息!在本书第1版出版时隔4年后,Thomas Kyte及时了解了大家的这...
  • 翻译的过程中,译者感到此言不虚:作者数据库的基本概念数据库建模,如何运用规范化原则如何做成实际的数据库如何保护数据库完整性如何提高数据库的性能,数据库的安全机制并发事务控制,...
  • 生成一个0到strTableChar.Length的数字a,然后使用strTableChar[a]就可以随机返回一个字母,重复n次(n等于防伪码的长度),这样就可以组合到一串随机字符串,也就是防伪码了。 6、思路及技巧 1)随机数生成...
  • ✅ 中国诗人:款收录80首,远古、古代、当代、近现代的古诗网站,支持用户上传创作诗词 ✅ VR+360全景图展示:款360度VR现场模式全景展示卖房案例。支持flash和h5两种模式。VR模式需要配带VR设备支持 2019...

空空如也

空空如也

1 2 3 4
收藏数 78
精华内容 31
关键字:

从一写到一万数字表