关闭

Python刷题笔记(5) - 判断“幸运数”

511人阅读 评论(0) 收藏 举报
分类:

题目:

In some countries of former Soviet Union there was a belief about lucky tickets. A transport ticket of any sort was believed to posess luck if sum of digits on the left half of its number was equal to the sum of digits on the right half. Here are examples of such numbers:

003111    #             3 = 1 + 1 + 1
813372    #     8 + 1 + 3 = 3 + 7 + 2
17935     #         1 + 7 = 3 + 5
56328116  # 5 + 6 + 3 + 2 = 8 + 1 + 1 + 6

Such tickets were either eaten after being used or collected for bragging rights.

Your task is to write a funtion luck_check(str), which returns true/True if argument is string decimal representation of a lucky ticket number, or false/False for all other numbers. It should throw errors for empty strings or strings which don't represent a decimal number.

中文简介:

判断输入的字符串是否幸运数,所谓幸运数就是将数字从中间分段,左边各位数相加等于右边各位数相加

想法:

1、对字符串输入进行判断,不为数字则扔出一个异常

2、将输入字符串对半切片,然后历遍两边边的各个字符,变为整数后再求和

3、切片的时候应注意字符串的长度为奇数还是偶数

实现:

import re
def luck_check(string):
    if re.match('[^0-9]',string):
        raise Exception('error input')
    if len(string) == 1:
        raise Exception('error input')
    else:
        if len(string) % 2 == 0:
            p = sum(int(s) for s in string[:len(string)/2])
            q = sum(int(s) for s in string[len(string)/2:])
            if p == q:
                return True
        else:
            p = sum(int(s) for s in string[:len(string)/2])
            q = sum(int(s) for s in string[len(string)/2 + 1:])
            if p == q:
                return True
    return False

对比总结:

提交完成后,对比首位的解决方法,发现处理字符长度为奇偶的方式非常巧妙。直接建立两个自变量,分别等于len(string)和len(string)+1,然后前面的切片切到len(string)/2,后面的切到(len(string)+1)/2,这样就可以不用分别处理奇偶长度了。另外,作者使用整除‘//’而不是我用的'/',虽然在python2.7下没问题,但是3.0的时候整数相除返回的也是浮点数了,这样处理应该会兼容。此外,使用了map()函数来直接进行数字处理,比我用的循环+int()函数的笨拙方式要更高明

0
0
查看评论

python 编程4,和7 幸运数字

题目描述: 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字。 前几个幸运数字为:4,7,44,47,74,77,444,447...  现在输入一个数字K,输出第K个幸运数。 输入 第一行一个数字T(T 输出 每组数据输出一行,第K个幸运...
  • Lucy_9_9
  • Lucy_9_9
  • 2016-09-07 21:42
  • 472

备考如何刷题以及保持稳稳的心态分享

作为一名从高考独木桥走出来的大学生,如今又要踏上考研的道路~回想当年高考时的复习状态,总感觉效率很低,所以最近在听媛媛姐的课,下面是对一些听课要点的总结。。。 这样做题更有效(理科神器,数学杀手) 找到复习中的关键的那20%三个条件(复习中的定位): 考试频率高的知识点和题目(考纲知识点的图谱表格...
  • loveCC_orange
  • loveCC_orange
  • 2018-01-18 12:38
  • 100

Python 刷题(想练python的可以对着刷一刷,持续更新)

这道题的意思是说
  • geniusluzh
  • geniusluzh
  • 2014-04-23 10:36
  • 8128

[LeetCode刷题笔记] 关于LeetCode的前言

又到了一年毕业就业季了,三年前的校招季我逃避了,可这一次终于还是要轮到我了=_=||。 作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢? LeetCode收录了许多互联网公司的算法题目,被称为刷题神器,我虽然早有耳闻,不过却一直没有上面玩过。即使这一年多来,做的编程还是...
  • tostq
  • tostq
  • 2016-07-22 21:32
  • 3137

牛客网刷题笔记

本来想在牛客网上刷完一道在线编程题后就写以下体会笔记,可是找了半天都没找到在哪里写东西,无奈,我就只好来CSDN上写了,只是想写而已,刚开始写,肯定会很不理想,但是没关系,慢慢写吧,总会有提高的。 今天在牛客网刷了一道求最长字串是回文数的长度,刚开始的时候,我用两个指针,一个指前边,一个指后边,对...
  • liu_sheng_1991
  • liu_sheng_1991
  • 2016-06-15 10:40
  • 1098

前端刷题笔记

解释语言的特性有那些:非独立、效率低。 笔记: 解释性语言和编译性语言的定义: 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。 翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。解释性语言的定义: ...
  • Conwey_stone
  • Conwey_stone
  • 2017-03-06 21:11
  • 371

python部落之python刷题宝之基础知识

1 any([True,False,True]), all([True,False,True]) any(iterable)->bool 迭代器对象中只要有一个为True,返回结果为True。 all(iterable)->bool 迭代器对象中都为True时,返回结果才为...
  • MarxWolf
  • MarxWolf
  • 2016-05-19 19:05
  • 1348

【刷题】剑指Offer 66 题 PYTHON版

目的:挤出时间夯实基础,准备秋招。记录刷题的思路以及反思不足。 目标: 三周内内初步刷完,工作日平均2题/day,周末5~6题/dayBegin 2017-7-161.题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二...
  • sinat_31824577
  • sinat_31824577
  • 2017-07-16 16:12
  • 662

LeetCode刷题笔记一

Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answ...
  • FailureXzZ
  • FailureXzZ
  • 2016-12-10 11:44
  • 342

幸运数 算法比赛

幸运数 问题描述 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。 首先从1开始写出自然数1,2,3,4,5,6,.... 1 就是第一个幸运数。 我们从2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 .... 把它们缩紧,重新记序,为: ...
  • u010870518
  • u010870518
  • 2014-03-21 13:32
  • 2571
    个人资料
    • 访问:9804次
    • 积分:197
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论