Python作业--2(课后练习篇)

"""

Name:Test3 第一题.py
Author: wanglang
Connect: [email protected]
Date: "2018-05-02"
Desc:
计算字符串最后一个单词的长度,单词以空格隔开。
输入描述: 一行字符串,非空,长度小于5000。
输出描述: 整数N,最后一个单词的长度。
示例1:
输入:hello world
输出:5

"""
user_in = input('输入:').strip()
if len(user_in) <= 5000:
    print('%d' % (len(user_in.split(' ')[-1])))
else:
    print('错误输入!')

*********************************************************

"""

Name:Test3 第二题.py
Author: wanglang
Connect: [email protected]
Date: "2018-05-02"
Desc:
题目描述: 写出一个程序,接受一个有字母和数字以及空格组成的字符串,
和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
输入描述: 输入一个有字母和数字以及空格组成的字符串,和一个字符。
输出描述: 输出输入字符串中含有该字符的个数。
示例1:
输入:ABCDEF A
输出:1
"""
user_in = input('输入:').strip()
user_in = user_in.split()
user_in1 = ''.join(user_in[:-1])
if user_in[-1].isdigit():#最后的字符是数字直接找
    print('%d' % (user_in1.count(user_in[-1])))
else:#最后字符是字母全部转换为大写再找
    print('%d' % (user_in1.upper().count(user_in[-1].upper())))

*****************************************************

"""

Name:Test3 第三题.py
Author: wanglang
Connect: [email protected]
Date: "2018-05-02"
Desc:
密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。
哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。
假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个
密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可
以明目张胆地放在显眼的地方而不被别人知道真正的密码。
他是这么变换的,大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4,
jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码
中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,
声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先
变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。
输入描述:输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾;
输出描述:输出渊子真正的密文
示例1:
输入:YUANzhi1987
输出:zvbo9441987
"""
str1 = 'abcdefghijklmnopqrstuvwxyz'#定义一个字符串
dict1 = {'2': ['a', 'b', 'c'], '3': ['d', 'e', 'f'], '4': ['g', 'h', 'i'],
         '5': ['j', 'k', 'l'],'6': ['m', 'n', 'o'], '7': ['p', 'q', 'r', 's'], 
         '8': ['t', 'u', 'v'], '9': ['w', 'x', 'y', 'z']}#定义一个字典
list1 = []#空列表
fpasswd = input('输入:').strip()
for i in fpasswd:#依次译码添加进列表
    if i.isupper():
        if i == 'Z':
            list1.append('a')
        else:
            list1.append(str1[str1.index(i.lower()) + 1])#对输入的大写字母译码
    elif i.islower():
        for j in dict1:
            if i in dict1[j]:
                list1.append(j)#对输入的小写字母进行译码
            else:
                pass
    else:
        list1.append(i)
print(''.join(list1))

****************************************************

"""

Name:Test3 第四题.py
Author: wanglang
Connect: [email protected]
Date: "2018-05-02"
Desc:
给定一个正整数,编写程序计算有多少对质数的和等于输入的
这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
- 输入描述:
输入包括一个整数n,(3 ≤ n < 1000)
- 输出描述:
输出对数
- 示例1 :
输入:
10
输出:
 2

"""

user_in = int(input('输入:'))
list1 = []
num = 0
# 列出1000以内的质数
for i in range(2, 1000):
    list2 = []
    for j in range(2, i):
        list2.append(i % j)
    if 0 in list2:
        pass
    else:
        list1.append(i)
# 求满足条件的质数对个数
for i in list1:
    for j in list1:
        if user_in == i + j and i != j:
            num += 1
        else:
            pass
print(num)

*************************************************************

"""

Name:Test4 第一题.py
Author: wanglang
Connect: [email protected]
Date: "2018-05-02"
Desc:
现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,
点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数
(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的
IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。
输入描述:输入一个ip地址
输出描述:返回判断的结果YES or NO
示例1
输入: 10.138.15.1
输出: YES
"""
user_in = input('输入:')
num = 0
for i in user_in.split('.'):#分成四部分判断
    if int(i) <= 255:
        num += 1
if num == 4:
    print('YES')
else:
    print('NO')

************************************************************************

自动售货系统!!!!

大体代码如下:

admininfo = {'wanglang': '000000'}
moneyinfo = {'1元': 100, '2元': 100, '5元': 50, '10元': 50}
goodsinfo = {'001': ['绿茶', '1', '30'], '002': ['可乐', '2', '30'], '003': ['雪碧', '2', '30'],
             '004': ['红茶', '3', '30'], '005': ['咖啡', '5', '30'], '006': ['红牛', '7', '30']}
print('自动售货系统'.center(50, '*'))
view = '''                    1).查询商品信息
                    2).购买商品
                    3).存钱盒信息
                    4).初始化
'''
while 1:
    print(view)
    choice = int(input('请输入选择:'))
    if choice == 1:
        print('\t 种类:\t 价格:\t数量:')
        for i in goodsinfo:
            print('%s  %s' % (i, '      '.join(goodsinfo[i])))
    elif choice == 2:
        purchase()#定义购买函数
    elif choice == 3:
        print(moneyinfo)
    elif choice == 4:
        print('管理员登陆!'.center(50, '*'))
        for enter_count1 in range(3):
            user_name = input('请输入用户名:').strip()
            if user_name not in admininfo:
                print('该用户不存在!请重新输入!')
            else:
                user_passwd = input('请输入密码:').strip()
                if user_passwd == admininfo[user_name]:
                    print('登陆成功!')
                    mod()#定义初始化函数
                    break
                else:
                    print('密码错误!')
        else:
            print('错误输入三次!系统退出')
    else:
        print('请输入正确的选择!')

主要的购买函数定义如下:

<该函数完成了投币<输入模拟>,找钱<从大到小依次找钱>,钱币数量变动和商品数量变动的功能>


def purchase():
    while 1:
        num = input('请输入您要购买的产品编号(q退出购买!):')
        if num == 'q':
            break
        else:
            if num in ['001', '002', '003', '004', '005', '006']:
                if int(goodsinfo[num][2]) == 0:
                    print('该商品已售空!请重新选择!')
                else:
                    print('种类:\t价格:\t数量:')
                    print('     '.join(goodsinfo[num]))
                    while 1:
                        print('请投币%s元!' % (goodsinfo[num][1]))
                        pay = 0
                        pay += int(input('投币金额:'))
                        if pay >= int(goodsinfo[num][1]):
                            outmoney = pay - int(goodsinfo[num][1])
                            if outmoney >= 10:  # 找钱数大于10元
                                if outmoney // 10 <= moneyinfo['10元']:  # 10元的数量够找钱
                                    if outmoney % 10 >= 5:  # 找钱数大于5元
                                        if moneyinfo['5元'] >= 1:  # 5元的数量够找钱
                                            if outmoney % 10 - 5 >= 2:  # 找钱数大于2元
                                                if moneyinfo['2元'] >= (outmoney % 10 - 5) // 2:  # 2元的数量够找钱
                                                    if moneyinfo['1元'] >= (outmoney % 10 - 5) % 2 == 1:  # 1元的数量够找钱
                                                        print('购买成功!找您%s元!' % (outmoney))
                                                        moneyinfo['1元'] -= 1
                                                        moneyinfo['2元'] -= (outmoney // 10 - 5) // 2
                                                        moneyinfo['5元'] -= 1
                                                        moneyinfo['10元'] -= outmoney // 10
                                                        count = int(goodsinfo[num][2])
                                                        count -= 1
                                                        goodsinfo[num][2] = str(count)
                                                        break
                                                    elif (outmoney % 10 - 5) % 2 == 0:
                                                        print('购买成功!找您%s元!' % (outmoney))
                                                        moneyinfo['2元'] -= (outmoney // 10 - 5) // 2
                                                        moneyinfo['5元'] -= 1
                                                        moneyinfo['10元'] -= outmoney // 10
                                                        count = int(goodsinfo[num][2])
                                                        count -= 1
                                                        goodsinfo[num][2] = str(count)
                                                        break
                                                    else:  # 1元的数量不够找
                                                        print('购买失败!退款%s元!' % (pay))
                                                        break
                                                else:  # 2元的数量不够找
                                                    if moneyinfo['1元'] >= outmoney % 10 - 5 - moneyinfo['2元'] * 2:
                                                        print('购买成功!找您%s元!' % (outmoney))
                                                        moneyinfo['2元'] = 0
                                                        moneyinfo['1元'] -= outmoney % 10 - 5 - moneyinfo['2元'] * 2
                                                        moneyinfo['5元'] -= 1
                                                        moneyinfo['10元'] -= outmoney // 5
                                                        count = int(goodsinfo[num][2])
                                                        count -= 1
                                                        goodsinfo[num][2] = str(count)
                                                        break
                                                    else:
                                                        print('购买失败!退款%s元!' % (pay))
                                                        break
                                            else:  # 找钱数小于两块
                                                if moneyinfo['1元'] >= outmoney % 10 - 5 == 1:
                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    moneyinfo['1元'] -= 1
                                                    moneyinfo['5元'] -= 1
                                                    moneyinfo['10元'] -= outmoney // 10
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                elif outmoney % 10 - 5 == 0:
                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                else:
                                                    print('购买失败!退款%s元!' % (pay))
                                                    moneyinfo['5元'] += 1
                                                    moneyinfo['10元'] += outmoney // 10
                                                    break
                                        else:  # 5元的数量不够找
                                            if moneyinfo['2元'] >= (
                                                            outmoney % 10 - moneyinfo[
                                                        '5元'] * 5) // 2:  # 2元的数量够找钱
                                                if moneyinfo['1元'] >= (
                                                                outmoney % 10 - moneyinfo[
                                                            '5元'] * 5) % 2 == 1:  # 1元的数量够找钱
                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    moneyinfo['1元'] -= 1
                                                    moneyinfo['2元'] -= (outmoney % 10 - moneyinfo['5元'] * 5) // 2
                                                    moneyinfo['5元'] = 0
                                                    moneyinfo['10元'] = outmoney // 10
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                elif (outmoney % 10 - moneyinfo['5元'] * 5) % 2 == 0:
                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    moneyinfo['2元'] -= (outmoney % 10 - moneyinfo['5元'] * 5) // 2
                                                    moneyinfo['5元'] = 0
                                                    moneyinfo['10元'] = outmoney // 10
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                else:  # 1元的数量不够找
                                                    print('购买失败!退款%s元!' % (pay))
                                                    break
                                            else:  # 2元的数量不够找
                                                if moneyinfo['1元'] >= outmoney % 10 - moneyinfo['5元'] * 5 - moneyinfo[
                                                    '2元'] * 2:
                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    moneyinfo['1元'] -= outmoney % 10 - moneyinfo['5元'] * 5 - moneyinfo[
                                                                                                                 '2元'] * 2
                                                    moneyinfo['2元'] = 0
                                                    moneyinfo['5元'] = 0
                                                    moneyinfo['10元'] = outmoney // 10
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                else:
                                                    print('购买失败!退款%s元!' % (pay))
                                                    break
                                    else:  # 找钱数小于5元
                                        if outmoney % 10 >= 2:  # 找钱数大于2元
                                            if moneyinfo['2元'] >= (outmoney % 10) // 2:  # 2元的数量够找钱
                                                moneyinfo['2元'] -= (outmoney % 10) // 2
                                                if moneyinfo['1元'] >= (outmoney % 10) % 2 == 1:  # 1元的数量够找钱
                                                    moneyinfo['1元'] -= 1
                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                elif (outmoney % 10) % 2 == 0:
                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                else:  # 1元的数量不够找
                                                    print('购买失败!退款%s元!' % (pay))
                                                    moneyinfo['2元'] += (outmoney % 10) // 2
                                                    moneyinfo['10元'] += outmoney // 10
                                                    break
                                            else:  # 2元的数量不够找
                                                if moneyinfo['1元'] >= outmoney % 10 - moneyinfo['2元'] * 2:

                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    moneyinfo['1元'] -= outmoney % 10 - moneyinfo['2元'] * 2
                                                    moneyinfo['2元'] = 0
                                                    moneyinfo['10元'] = outmoney // 10
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                else:
                                                    print('购买失败!退款%s元!' % (pay))
                                                    break
                                        else:  # 找钱数小于两块
                                            if moneyinfo['1元'] >= outmoney % 10 == 1:
                                                print('购买成功!找您%s元!' % (outmoney))
                                                moneyinfo['1元'] -= 1
                                                moneyinfo['10元'] -= outmoney // 10
                                                count = int(goodsinfo[num][2])
                                                count -= 1
                                                goodsinfo[num][2] = str(count)
                                                break
                                            elif outmoney % 10 == 0:
                                                print('购买成功!找您%s元!' % (outmoney))
                                                moneyinfo['10元'] -= outmoney // 10
                                                count = int(goodsinfo[num][2])
                                                count -= 1
                                                goodsinfo[num][2] = str(count)
                                                break
                                            else:
                                                print('购买失败!退款%s元!' % (pay))
                                                break
                                else:  # 10元的数量不够找
                                    if moneyinfo['5元'] >= (outmoney - moneyinfo['10元'] * 10) // 5:  # 5元的数量够找钱
                                        if (outmoney - moneyinfo['10元'] * 10) % 5 >= 2:  # 找钱数大于2元
                                            if moneyinfo['2元'] >= (
                                                        (outmoney - moneyinfo['10元'] * 10) % 5) // 2:  # 2元的数量够找钱
                                                if moneyinfo['1元'] >= (
                                                            (outmoney - moneyinfo[
                                                                '10元'] * 10) % 5) % 2 >= 1:  # 1元的数量够找钱
                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    moneyinfo['1元'] -= 1
                                                    moneyinfo['2元'] -= ((outmoney - moneyinfo['10元'] * 10) % 5) // 2
                                                    moneyinfo['5元'] -= (outmoney - moneyinfo['10元'] * 10) // 5
                                                    moneyinfo['10元'] = 0
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                elif ((outmoney - moneyinfo['10元'] * 10) % 5) % 2 == 0:
                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    moneyinfo['2元'] -= ((outmoney - moneyinfo['10元'] * 10) % 5) // 2
                                                    moneyinfo['5元'] -= (outmoney - moneyinfo['10元'] * 10) // 5
                                                    moneyinfo['10元'] = 0
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                else:  # 1元的数量不够找
                                                    print('购买失败!退款%s元!' % (pay))
                                                    break
                                            else:  # 2元的数量不够找
                                                if moneyinfo['1元'] >= (outmoney - moneyinfo['10元'] * 10) % 5 - \
                                                                moneyinfo['2元'] * 2:
                                                    print('购买成功!找您%s元!' % (outmoney))
                                                    moneyinfo['1元'] -= (outmoney - moneyinfo['10元'] * 10) % 5 - \
                                                                       moneyinfo['2元'] * 2
                                                    moneyinfo['2元'] = 0
                                                    moneyinfo['5元'] -= (outmoney - moneyinfo['10元'] * 10) // 5
                                                    moneyinfo['10元'] = 0
                                                    count = int(goodsinfo[num][2])
                                                    count -= 1
                                                    goodsinfo[num][2] = str(count)
                                                    break
                                                else:
                                                    print('购买失败!退款%s元!' % (pay))
                                                    break
                                    else:  # 5元的数量不够找
                                        moneyinfo['5元'] = 0
                                        if moneyinfo['2元'] >= (
                                                        outmoney - moneyinfo['10元'] * 10 - moneyinfo[
                                                    '5元'] * 5) // 2:  # 2元的数量够找钱
                                            if moneyinfo['1元'] >= (outmoney - moneyinfo['10元'] * 10 - moneyinfo[
                                                '5元'] * 5) % 2 >= 1:  # 1元的数量够找钱
                                                print('购买成功!找您%s元!' % (outmoney))
                                                moneyinfo['1元'] -= 1
                                                moneyinfo['2元'] -= (outmoney - moneyinfo['10元'] * 10 - moneyinfo[
                                                    '5元'] * 5) // 2
                                                moneyinfo['5元'] = 0
                                                moneyinfo['10元'] = 0
                                                count = int(goodsinfo[num][2])
                                                count -= 1
                                                goodsinfo[num][2] = str(count)
                                                break
                                            elif (outmoney - moneyinfo['10元'] * 10 - moneyinfo[
                                                '5元'] * 5) % 2 == 0:
                                                print('购买成功!找您%s元!' % (outmoney))
                                                moneyinfo['2元'] -= (outmoney - moneyinfo['10元'] * 10 - moneyinfo[
                                                    '5元'] * 5) // 2
                                                moneyinfo['5元'] = 0
                                                moneyinfo['10元'] = 0
                                                count = int(goodsinfo[num][2])
                                                count -= 1
                                                goodsinfo[num][2] = str(count)
                                                break
                                            else:  # 1元的数量不够找
                                                print('购买失败!退款%s元!' % (pay))
                                                break
                                        else:  # 2元的数量不够找
                                            moneyinfo['2元'] = 0
                                            if moneyinfo['1元'] >= outmoney - moneyinfo['10元'] * 10 - moneyinfo[
                                                '5元'] * 5 - moneyinfo['2元'] * 2:
                                                print('购买成功!找您%s元!' % (outmoney))
                                                moneyinfo['1元'] -= outmoney - moneyinfo['10元'] * 10 - moneyinfo[
                                                                                                          '5元'] * 5 - \
                                                                   moneyinfo['2元'] * 2
                                                moneyinfo['2元'] = 0
                                                moneyinfo['5元'] = 0
                                                moneyinfo['10元'] = 0
                                                count = int(goodsinfo[num][2])
                                                count -= 1
                                                goodsinfo[num][2] = str(count)
                                                break
                                            elif outmoney - moneyinfo['10元'] * 10 - moneyinfo[
                                                '5元'] * 5 - moneyinfo['2元'] * 2 == 0:
                                                print('购买成功!找您%s元!' % (outmoney))
                                                moneyinfo['2元'] = 0
                                                moneyinfo['5元'] = 0
                                                moneyinfo['10元'] = 0
                                                count = int(goodsinfo[num][2])
                                                count -= 1
                                                goodsinfo[num][2] = str(count)
                                                break
                                            else:
                                                print('购买失败!退款%s元!' % (pay))
                                                break
                            elif 5 <= outmoney < 10:
                                if moneyinfo['5元'] >= 1:  # 5元的数量够找钱
                                    if outmoney - 5 >= 2:  # 找钱数大于2元
                                        if moneyinfo['2元'] >= (outmoney - 5) // 2:  # 2元的数量够找钱
                                            if moneyinfo['1元'] >= (outmoney - 5) % 2 >= 1:  # 1元的数量够找钱
                                                print('购买成功!找您%s元!' % (outmoney))
                                                moneyinfo['1元'] -= 1
                                                moneyinfo['2元'] -= (outmoney - 5) // 2
                                                moneyinfo['5元'] -= 1
                                                count = int(goodsinfo[num][2])
                                                count -= 1
                                                goodsinfo[num][2] = str(count)
                                                break
                                            elif (outmoney - 5) % 2 == 0:
                                                print('购买成功!找您%s元!' % (outmoney))
                                                moneyinfo['2元'] -= (outmoney - 5) // 2
                                                moneyinfo['5元'] -= 1
                                                count = int(goodsinfo[num][2])
                                                count -= 1
                                                goodsinfo[num][2] = str(count)
                                                break
                                            else:  # 1元的数量不够找
                                                print('购买失败!退款%s元!' % (pay))
                                                break
                                        else:  # 2元的数量不够找
                                            if moneyinfo['1元'] >= outmoney % 5 - moneyinfo['2元'] * 2:
                                                print('购买成功!找您%s元!' % (outmoney))
                                                moneyinfo['1元'] -= outmoney % 5 - moneyinfo['2元'] * 2
                                                moneyinfo['2元'] = 0
                                                moneyinfo['5元'] -= 1
                                                count = int(goodsinfo[num][2])
                                                count -= 1
                                                goodsinfo[num][2] = str(count)
                                                break
                                            else:
                                                print('购买失败!退款%s元!' % (pay))
                                                break
                                    else:  # 找钱数小于2块
                                        if outmoney - 5 == 1:
                                            if moneyinfo['1元'] >= 1:
                                                print('购买成功!找您%s元!' % (outmoney))
                                                moneyinfo['1元'] -= 1
                                                moneyinfo['5元'] -= 1
                                                count = int(goodsinfo[num][2])
                                                count -= 1
                                                goodsinfo[num][2] = str(count)
                                                break
                                            else:
                                                print('购买失败!退款%s元!' % (pay))
                                                break
                                        else:
                                            print('购买成功!找您%s元!' % (outmoney))
                                            moneyinfo['5元'] -= 1
                                            count = int(goodsinfo[num][2])
                                            count -= 1
                                            goodsinfo[num][2] = str(count)
                                            break
                                else:  # 5块的数量不够找钱
                                    if moneyinfo['2元'] >= outmoney // 2:  # 2元的数量够找钱
                                        if moneyinfo['1元'] >= outmoney % 2 == 1:  # 1元的数量够找钱
                                            print('购买成功!找您%s元!' % (outmoney))
                                            moneyinfo['1元'] -= 1
                                            moneyinfo['2元'] -= outmoney // 2
                                            moneyinfo['5元'] = 0
                                            count = int(goodsinfo[num][2])
                                            count -= 1
                                            goodsinfo[num][2] = str(count)
                                            break
                                        elif outmoney % 2 == 0:
                                            print('购买成功!找您%s元!' % (outmoney))
                                            moneyinfo['2元'] -= outmoney // 2
                                            moneyinfo['5元'] = 0
                                            count = int(goodsinfo[num][2])
                                            count -= 1
                                            goodsinfo[num][2] = str(count)
                                            break
                                        else:  # 1元的数量不够找
                                            print('购买失败!退款%s元!' % (pay))
                                            break
                                    else:  # 2元的数量不够找
                                        moneyinfo['2元'] = 0
                                        if moneyinfo['1元'] >= outmoney - moneyinfo['2元'] * 2:
                                            print('购买成功!找您%s元!' % (outmoney))
                                            moneyinfo['1元'] -= outmoney - moneyinfo['2元'] * 2
                                            moneyinfo['2元'] = 0
                                            count = int(goodsinfo[num][2])
                                            count -= 1
                                            goodsinfo[num][2] = str(count)
                                            break
                                        else:
                                            print('购买失败!退款%s元!' % (pay))
                                            break
                            else:
                                if outmoney >= 2:
                                    if moneyinfo['2元'] >= outmoney // 2:
                                        if moneyinfo['1元'] >= outmoney % 2 == 1:
                                            print('购买成功!找您%s元!' % (outmoney))
                                            moneyinfo['1元'] -= 1
                                            moneyinfo['2元'] -= outmoney // 2
                                            count = int(goodsinfo[num][2])
                                            count -= 1
                                            goodsinfo[num][2] = str(count)
                                            break
                                        elif outmoney % 2 == 0:
                                            print('购买成功!找您%s元!' % (outmoney))
                                            moneyinfo['2元'] -= outmoney // 2
                                            count = int(goodsinfo[num][2])
                                            count -= 1
                                            goodsinfo[num][2] = str(count)
                                            break
                                        else:
                                            print('购买失败!退款%s元!' % (pay))
                                            break
                                    else:
                                        if moneyinfo['1元'] >= outmoney - moneyinfo['2元'] * 2:
                                            print('购买成功!找您%s元!' % (outmoney))
                                            moneyinfo['1元'] -= outmoney - moneyinfo['2元'] * 2
                                            moneyinfo['2元'] = 0
                                            count = int(goodsinfo[num][2])
                                            count -= 1
                                            goodsinfo[num][2] = str(count)
                                            break
                                        else:
                                            print('购买失败!退款%s元!' % (pay))
                                            break
                                else:
                                    if moneyinfo['1元'] >= outmoney >= 1:
                                        print('购买成功!找您%s元!' % (outmoney))
                                        moneyinfo['1元'] -= 1
                                        count = int(goodsinfo[num][2])
                                        count -= 1
                                        goodsinfo[num][2] = str(count)
                                        break
                                    elif outmoney == 0:
                                        print('购买成功!找您%s元!' % (outmoney))
                                        count = int(goodsinfo[num][2])
                                        count -= 1
                                        goodsinfo[num][2] = str(count)
                                        break
                                    else:
                                        print('购买失败!退款%s元!(钱找不开!)' % (pay))
                                        break
                        else:
                            print('金额不够请继续投币')
            else:
                print('没有该编号的的商品!')

修改函数<比较简单>定义如下:

def mod():
    while 1:
        view1 = '''                    1).修改金钱
                    2).修改商品数量
                    3).退出初始化'''
        print(view1)
        choice1 = int(input('请输入选择:'))
        if choice1 == 1:
            moneyinfo['1元'] = int(input('1元钱的数量修改为:'))
            moneyinfo['2元'] = int(input('2元钱的数量修改为:'))
            moneyinfo['5元'] = int(input('5元钱的数量修改为:'))
            moneyinfo['10元'] = int(input('10元钱的数量修改为:'))
            print('修改成功!')
            break
        elif choice1 == 2:
            goodsinfo['001'][2] = input('绿茶的数量修改为:')
            goodsinfo['002'][2] = input('可乐的数量修改为:')
            goodsinfo['003'][2] = input('雪碧的数量修改为:')
            goodsinfo['004'][2] = input('红茶的数量修改为:')
            goodsinfo['005'][2] = input('咖啡的数量修改为:')
            goodsinfo['006'][2] = input('红牛的数量修改为:')
            print('修改成功!')
            break
        elif choice1 == 3:
            break
        else:
            print('请输入正确的选择!')

接下来是主要功能展示:

*********信息显示*********

**********购买及信息变化************

***********初始化设置***********

**********END***********

猜你喜欢

转载自blog.csdn.net/wl_python/article/details/80166151