python学习———函数测试题

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. 与机器交互实现取款, 存款, 转账, 查询余额,

       冻结账户, 修改密码等功能;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值