请稍候,加载中....

Python语法二级(三)

1.   编写⼀个程序,该程序根据控制台输⼊的交易⽇志来计算银⾏账户的净额。交易⽇志格式如下

D  100
W 200
 
D表示存款,W表示取款,数字表示存取金额

假设在程序中输⼊以下:
D 300
D 300
W 200
D 100
则程序应输出:
500

代码示例:

amount = 0
while True:
    s = input()
    if not s:
        break
    values = s.split(" ")
    operation = values[0]
    _amount = int(values[1])
    if operation=="D":
        amount += _amount
    elif operation=="W":
        amount -= _amount
    print(f"balance of account:{amount}")

 

2. ⽹站要求⽤户输⼊⽤户名和密码进⾏注册。 编写程序以检查⽤户输⼊的密码的有效性。
以下是检查密码的标准:
1.    ⾄少包含1个小写字⺟, [a-z]
2.   ⾄少包含0~9之间1个数字
3.   ⾄少包含1个大写字⺟,[A-Z]
4.   至少包含指定的特殊集[$#@]中的1个字符
5.   交易密码的⻓度在 6 ~ 12之间


输入⼀系列⽤逗号分隔的密码,并将根据上述条件进⾏检查。 符合条件的密码将被打印,每个密码之间⽤逗
号分隔。
例:
假设在程序中输⼊以下密码:
ABc123@10,a-F1222,12w3,2We1234
则程序应输出:
ABd1234@10

import re
result = []
inputs = input().split(',')
for password in inputs :
    if not 6 <= len(password) <= 12: 
        continue

    if not re.search("[a-z]", password):
        continue
    elif not re.search("[0-9]", password): 
        continue
    elif not re.search("[A-Z]", password): 
        continue
    elif not re.search("[$#@]", password):
       continue
    elif re.search("\s", p):
       continue
    else
       pass
    result.append(password)
else:
    print ",".join(result)

讲解:

这里主要是正则表达式的使用,元字符及常见的正则表达式应该要能写


 

3. 编写⼀个程序,以升序对(名称,年龄,分数)元组进⾏排序,其中名称是字符串,年龄和身⾼是数字。 元组由控制台输⼊。

排序标准是:

1:根据名称排序;
2:然后根据分数排序;
3:然后按年龄排序。优先级是名称>分数>年龄。
如果给出以下元组作为程序的输⼊:
Tom,19,80
John,20,90
Jony,17,91
Jony,17,93
Json,21,85
则程序应输出:
[('John','20','90'),('Jony','17','91'),('Jony','17','93'),('Json','21 ','85'),('Tom','19','80')]

示例代码:

lists = []
while True:
    inputs = input()
    if not inputs:
        break
    lists.append(tuple(inputs.split(",")))

print sorted(lists, key=lambda x:(x[0], x[2], x[1])

讲解:

sort默认排序按照元组顺序排序,通过key关键字可以指定排序位置

 

 

 


Python学习手册-