python10道经典题练习0.2

提示:
代码会有格式上的小错误!其他没问题

问题11
2级

问题:
编写一个程序,该程序接受以逗号分隔的4位二进制数字序列作为输入,然后检查它们是否可被5整除。 被5整除的数字将以逗号分隔的顺序打印。
例子:
0100,0011,1010,1001
然后输出应为:
1010
注意:假设数据是通过控制台输入的。

提示:
如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

value = []
items=[x for x in raw_input().split(',')]
for p in items:
    intp = int(p, 2)
    if not intp%5:
        value.append(p)

print ','.join(value)


#----------------------------------------#
问题12
2级

问题:
编写一个程序,它将找到介于10003000之间的所有此类数字(均包括在内),以使该数字的每个数字均为偶数。
获得的数字应以逗号分隔的顺序打印在一行上。

提示:
如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

values = []
for i in range(1000, 3001):
    s = str(i)
    if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0):
        values.append(s)
print ",".join(values)


#----------------------------------------#
问题13
2级

问题:
编写一个接受句子并计算字母和数字数量的程序。
假设将以下输入提供给程序:
你好,世界! 123
然后,输出应为:
字母10
数字3

提示:
如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

s = raw_input()
d={"DIGITS":0, "LETTERS":0}
for c in s:
    if c.isdigit():
        d["DIGITS"]+=1
    elif c.isalpha():
        d["LETTERS"]+=1
    else:
        pass
print "LETTERS", d["LETTERS"]
print "DIGITS", d["DIGITS"]


#----------------------------------------#
问题14
2级

问题:
编写一个接受句子的程序,并计算大写字母和小写字母的数量。
假设将以下输入提供给程序:
你好,世界!
然后,输出应为:
大写1
小写案例9

提示:
如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

s = raw_input()
d={"UPPER CASE":0, "LOWER CASE":0}
for c in s:
    if c.isupper():
        d["UPPER CASE"]+=1
    elif c.islower():
        d["LOWER CASE"]+=1
    else:
        pass
print "UPPER CASE", d["UPPER CASE"]
print "LOWER CASE", d["LOWER CASE"]



#----------------------------------------#
问题15
2级

问题:
编写一个程序,以给定的数字作为a的值来计算a + aa + aaa + aaaa的值。
假设将以下输入提供给程序:
9
然后,输出应为:
11106

提示:
如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

a = raw_input()
n1 = int( "%s" % a )
n2 = int( "%s%s" % (a,a) )
n3 = int( "%s%s%s" % (a,a,a) )
n4 = int( "%s%s%s%s" % (a,a,a,a) )
print n1+n2+n3+n4


#----------------------------------------#
问题16
2级

问题:
使用列表推导对列表中的每个奇数取平方。 该列表由逗号分隔的数字序列输入。
假设将以下输入提供给程序:
1,2,3,4,5,6,7,8,9
然后,输出应为:
1,3,5,7,9

提示:
如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

values = raw_input()
numbers = [x for x in values.split(",") if int(x)%2!=0]
print ",".join(numbers)
#----------------------------------------#

问题17
2级

问题:
编写一个程序,该程序根据来自控制台输入的交易日志来计算银行帐户的净额。 事务日志格式如下所示:
D 100
200号

D表示存款,W表示提款。
假设将以下输入提供给程序:
D 300
D 300
200号
D 100
然后,输出应为:
500

提示:
如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

netAmount = 0
while True:
    s = raw_input()
    if not s:
        break
    values = s.split(" ")
    operation = values[0]
    amount = int(values[1])
    if operation=="D":
        netAmount+=amount
    elif operation=="W":
        netAmount-=amount
    else:
        pass
print netAmount


#----------------------------------------#
问题18
3级

问题:
网站要求用户输入用户名和密码进行注册。 编写程序以检查用户输入的密码是否有效。
以下是检查密码的标准:
1. [a-z]之间至少1个字母
2. [0-9]之间至少1个数字
1. [A-Z]之间至少1个字母
3. [$#@]中的至少1个字符
4.交易密码的最小长度:6
5.交易密码的最大长度:12
您的程序应接受逗号分隔的密码序列,并将根据上述条件进行检查。 符合条件的密码将被打印,每个密码之间用逗号分隔。
例子
如果输入以下密码作为程序输入:
ABd1234 @ 1,a F1#,2w3E *,2We3345
然后,程序的输出应为:
ABd1234 @ 1

提示:
如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

import re
value = []
items=[x for x in raw_input().split(',')]
for p in items:
    if len(p)<6 or len(p)>12:
        continue
    else:
        pass
    if not re.search("[a-z]",p):
        continue
    elif not re.search("[0-9]",p):
        continue
    elif not re.search("[A-Z]",p):
        continue
    elif not re.search("[$#@]",p):
        continue
    elif re.search("\s",p):
        continue
    else:
        pass
    value.append(p)
print ",".join(value)


#----------------------------------------#
问题19
3级

问题:
您需要编写一个程序以升序对(名称,年龄,身高)元组进行排序,其中名称是字符串,年龄和身高是数字。 元组由控制台输入。 排序标准是:
1:根据名称排序;
2:然后根据年龄排序;
3:然后按分数排序。
优先级是名称>年龄>得分。
如果给出以下元组作为程序的输入:
汤姆19,80
约翰20,90
乔尼17,91
乔尼,17,93
杰森21,85
然后,程序的输出应为:
['John''20''90'),('Jony''17''91'),('Jony''17''93'),('Json''21 ''85'),('Tom''19''80']

提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
我们使用itemgetter启用多个排序键。

解决方案:

from operator import itemgetter, attrgetter

l = []
while True:
    s = raw_input()
    if not s:
        break
    l.append(tuple(s.split(",")))

print sorted(l, key=itemgetter(0,1,2))

#----------------------------------------#
问题20
3级

问题:
用生成器定义一个类,该生成器可以迭代在给定范围0和n之间可以被7整除的数字。

提示:
考虑使用量

解决方案:

def putNumbers(n):
    i = 0
    while i<n:
        j=i
        i=i+1
        if j%7==0:
            yield j

for i in reverse(100):
    print i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值