Test4
1. 题目描述
现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。
输入描述:输入一个ip地址
输出描述:返回判断的结果YES or NO
#!/usr/bin/env python
#coding:utf-8
#_____________________ _____________________
#_____________________ README _____________________
# Author :WANG *
# Email :wang@qq.com *
# Version :1.0 *
# Create_date :2018-01-10 *
# Description : *
# *
#______________________ _______________________
#______________________ END _______________________
print """
**************************************************************
IP地址合法性判断
**************************************************************
"""
def judge(IP):
ip = IP.split(".") #将IP分片
if len(ip) != 4:
return False
else:
for i in ip:
if not (255>int(i)>0): #每位数<255
return False
break
return True
def main():
while True:
IP = raw_input("输入:")
if judge(IP):print "YES"
else:print "NO"
if raw_input("是否继续(y/n)?")== 'n':break
if __name__=="__main__":
main()
2. 题目描述
考生需要模拟实现一个简单的自动售货系统,实现投币、购买商品、退币、查询库存商品及存钱盒信息的功能。系统初始化时自动售货机中商品为6种商品,商品的单价自定义,存钱盒内放置1元、2元、5元、10元钱币,商品数量和钱币张数通过初始化命令设置。
商品:每种商品包含商品名称、单价、数量三种属性,其中商品名不重复。不能修改商品名称和单价,初始化命令设置商品数量。
#!/usr/bin/env python
#coding:utf-8
#_____________________ _____________________
#_____________________ README _____________________
# Author :WANG *
# Email :wang@qq.com *
# Version :1.0 *
# Create_date :2018-01-10 *
# Description : *
# *
#______________________ _______________________
#______________________ END _______________________
print """
**************************************************************
自动售货系统
**************************************************************
"""
foods = {
'商品':['苹果','牛奶','手机','字典','方便面','手套'],
'序号':['1','2','3','4','5','6'],
'价格':['10','15','100','5','2','1.5'],
'数量':['6','6','6','6','6','6']
}
save = {'1':5,'2':5,'5':5,'10':5} #存钱盒
def new():
global foods
print "_"*20+"库存"+"_"*20
for i,v in enumerate(foods['商品']):
foods['数量'][i]=input("%s库存:"%(v))
def display():
print '''
自动售货系统菜单
【1】菜单
【2】购买商品
【3】投币
【4】退币
【5】查看存款
【6】退出
'''
return int(raw_input("请选择:"))
def add():
global save
mony = 0
l =['10','5','2','1']
for i in l:
mony +=save[i]*int(i)
return mony
def add1(v2,m):#退币时钱存入存钱盒
global save
save[v2] = 0
return m
def a(v1,m): #投币时钱从存钱盒取出
global save
c = m/int(v1)
if save[v1] >= c:
save[v1] -= c
m -= int(v1)*c
else:
save[v1]=0
m -=save[v1]*int(v1)
return m
def delete(m): #支付时存钱盒值减少
global save
l=['10','5','2']
for i in l:
m=a(i,m)
if not(m == 0):
save['1']-=m
def manu(): #显示商品信息
print "_"*20+"菜单"+"_"*20
l =['商品','序号','价格','数量']
global foods
bools = True
for i in l:
print "%5s"%(i),
for j in foods[i]:
print '%-5s'%(j),
print
def buy(): #选购商品
bools = True
manu()
while True:
item = input("请选择(序号):")
if str(item) in foods['序号']:
if foods['数量'][item-1] != '0':
print "价格:%5s"%(foods['价格'][item-1])
break
else:print "商品已卖完!!!"
else:
if raw_input("无此选项,是否继续(y/n)?") == 'n':
bools = False
break
return bools,item
def cash(item):#支付
print "_"*20+"支付"+"_"*20
global save
global foods
s = add()
print "你需要支付%s元"%(foods['价格'][item-1])
M = foods['价格'][item-1]
Count = int(foods['数量'][item-1])
m = input("请输入支付金额:")
if s-m>=0:
if m >= int(M):
delete(int(M)) #存钱盒支出
foods['数量'][item-1] = str(Count-1)
print '''
应付%s元
实际付款%s元
找零%s元
'''%(M,m,str(m-int(M)))
else:
print "支付金额不足!!!"
else:
print "余额不足"
return
def retu():#退币
print "_"*20+"退币"+"_"*20
global save
m = add()
l = ['10','5','2','1']
print "余额%d"%(add())
if raw_input("是否退币(y/n)?") == 'y':
print "退还余额%d,欢迎下次光临"%(add())
for i in l:
m = add1(i,m)
def Save():#投币
global save
l = ['10','5','2','1']
for i in l:
save[i] += input("充值%s/张:"%(i))
def main():
new()
while True:
item = display()
if item == 1:manu()
elif item == 2:
bools,i = buy()
cash(i)
elif item == 3:Save()
elif item == 4:retu()
elif item == 5:
print "_"*20+"余额查询"+"_"*20
print "余额:%d"%(add())
elif item == 6:
print "_"*20+"欢迎下次光临"+"_"*20
exit()
else:pass
if __name__=="__main__":
main()
3. ATM
ATM柜员机管理系统
实现功能:
1. 当用户在登陆界面输入卡号和密码能登陆;
2. 实现开户功能;
3. 与机器交互实现取款, 存款, 转账, 查询余额,
冻结账户, 修改密码等功能;