MyPython-->练习

TEST 1
这里有个字符串
'here is a sample of english text'
问里面各个字符出现次数是多少
要求返回结果: (字典是无序的, 所以只要结果正确, 不要求顺序如此)
{'a': 2, ' ': 6, 'e': 5, 'g': 1, 'f': 1, 'i': 2, 'h': 2, 'm': 1, 'l': 2, 'o': 1, 'n': 1, 'p': 1, 's': 3, 'r': 1, 't': 2, 'x': 1}
第一遍自己 用了split()将字符串去空格获得数组 join()连接成没有空格的字符串 set()加列表生成式 得到没有重复的set集合 for循环 count()遍历每一个集合元素出现的次数 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
def count_abc(striing):
    '''指定字符串每个字母出现的次数并做成字典形式'''
    test1_list = striing.split()#将单词分成数组 空格也都没了
    print('test1_list %s'%test1_list)
    test1_s = ''.join(test1_list)#将所有数组连接成字符串
    print('test1_s %s'%test1_s)
    test1_set = set([x for x in test1_s])#利用set()去重
    print('test1_set %s'%test1_set)
    dict1 = {}#要return的空字典
    for x in test1_set:#遍历每一个字符出现的次数
        num_1 = striing.count(x)#count()方法返回指定字符出现的次数
        dict1[x] = num_1#添加到字典内
    return  dict1#返回字典

大牛的做法

1

1.创建一个空的字典

2.遍历字符串,如果字符串没有在字典内 添加改字符到字典内值为1

         如果字符串在字典内,该字符串重新赋值 值为原值+1

s = 'hello everbody'
d = {}
for x in s:
    d[c] = (d[c]+1) if (x in d) else (1)
print(d)
>>> s 
'here is a sample of english test,test 1,test 3' 
>>> d={} 
>>> for c in s: 
...     if c in d: 
...         d[c]=d[c]+1 
...     else: 
...         d[c]=1 
... 
>>> print d 

等同于上述的

2

import collections
print(collections.Counter('here is a sample of english text'))

-----------------------------------------------
3

d1 = dict((i,test1.count(i)) for i in set(test1)) d2 = dict((i,i+1)for i in range(10))print('------%s'%set(test1))

上述代码比较像我写的那个,不过我不知道的是 set()方法可以同样作用于字符串,返回一个没有重复的set集合

dict((i,i+1) for i in range(10)) 通过for循环不断的产生 i 提供给字典

麻烦点就这样写

d3 ={}
for x in set(test1):
    d3[x] =test1.count(x)
print(d3)

 TEST2

 

【程序20】
 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

http://www.cnblogs.com/feeland/p/4379984.html

定义 digital_sum 函数,传一 int 参数,return 其所有位数的数字相加的和;如:1234 返回 10(1+2+3+4); 900 返回 9 (9+0+0)

5. 定义 is_prime 函数,传一 int 参数,判断是否是质数(仅可被1或自己整除),若是,return True;不是,return False; 如:1 返回 True;2 返回 True;4 返回 False;13 返回 True

    规定 0 不是质数,返回 False

定义 reverse 函数,传一 str 参数,将所有字符串字符倒置并 return 该字符串;如:"abcd" return "dcba" 

 定义 censor 函数,传两个 str 参数:s, h;若 s 字符串中的单词包含 h(全小写)时(不区分大小写,暂时仅考虑空格分隔的单词),

   将其隐藏,每个隐藏的字母显示为 *;该方法为不完善的隐藏字符方法,如隐藏字符后有标点,则仍会显示。(若需完善,可用正则表达式,后续学习)

     如:censor("Fuck U fuck ... ","fuck")  会 return 字符串为 "**** U **** ... "  ;

       censor("My qq is: 1000100, pls add my QQ","qq")  会 return 字符串为 "My ** is: 1000100, pls add my **"

0. 定义 count_i 函数,传两个参数 l, item:l 为一 list,item 为任意类型元素;return l 中包含 i 的个数 ;

    如: count_i([1,2,3,4,2,1,3,1.0,"1"],1)         会 return 3    (1.0 也可算入;"1" 不可算入)

http://www.cnblogs.com/xiaoli2018/p/4419927.html

1.取任意小于1美元的金额,然后计算可换成哪几种硬币,分别有几个?硬币有1美分、5美分、10美分、25美分4种,如0.76美元可换3个25美分、1枚1美分

 

 5.打印出所有的水仙花数

所谓的水仙花数就是三位数的个十百三位的立方之和等于这个数本身

Python练习题:

1.有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多 少?

http://www.cnblogs.com/xiaoli2018/p/4418059.html

Python练习题:

1.有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多 少?

def a1234():
    l1 = ['1','2','3','4']
    count = 0
    for x in l1:
        for y in l1:
            if y == x:
                continue
            for z in l1:
                if z == x or z ==y:
                    continue
                else:
                    count +=1
                    print('1,2,3,4第 %s 种组合是 %s'%(count,x+y+z))
a1234()
View Code

 

3.一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数, 请问该数是多少?

输入某年某月某日,判断这一天是这一年的第几天?

在这里提供两种方法显示出Python中字典的优越性!(我竟然开始没有想到用字典)

http://www.cnblogs.com/anpengapple/p/5071215.html

5. 打印列表:[1, 2, 3, 4...n],n=20;请编写代码打印如下规律的输出:

复制代码
        1 [1*, 2, 3, 4, 5]
        2 [1, 2*, 3, 4, 5]
        3 [1, 2, 3*, 4, 5]
        4 [2, 3, 4*, 5, 6]
        5 [3, 4, 5*, 6, 7]
        6 [4, 5, 6*, 7, 8]
        ...
        20 [16, 17, 18, 19, 20*]

6. 写一个程序模拟银行排队, 只有一个队伍, 一个用户进入时允许插队(进入队伍任意位置), 但要保证每次导致队伍变更, 队伍中受影响的人都收到通知

Customer A line up at position 11
Customer B: order changed to 12
Customer C: order changed to 13
Customer D: order changed to 14
posted @ 2016-09-03 14:56  notJoke  阅读(329)  评论(0编辑  收藏  举报