鱼C论坛

 找回密码
 立即注册
查看: 2505|回复: 6

函数求助

[复制链接]
发表于 2020-12-16 00:08:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有没有大佬能解释一下为什么函数同时返回两个值会被调用两次呢
QQ图片20201216000646.png
QQ图片20201216000628.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-16 07:34:41 From FishC Mobile | 显示全部楼层
啥叫调用两次,函数里面的两个print语句明显是调试代码,属于多余的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-16 08:23:53 From FishC Mobile | 显示全部楼层
wp231957 发表于 2020-12-16 07:34
啥叫调用两次,函数里面的两个print语句明显是调试代码,属于多余的

运行是这样的,他会连续调用两次,跟print没关系
-3a980d5d730e489c.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-16 08:38:44 | 显示全部楼层
去你妈的编程梦 发表于 2020-12-16 08:23
运行是这样的,他会连续调用两次,跟print没关系

你不上代码 鬼知道你是如何调用的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-16 08:41:28 From FishC Mobile | 显示全部楼层
wp231957 发表于 2020-12-16 08:38
你不上代码 鬼知道你是如何调用的呢

不好意思哈,第一次求助,待会我回去了就发代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-16 11:33:36 | 显示全部楼层
wp231957 发表于 2020-12-16 08:38
你不上代码 鬼知道你是如何调用的呢

import pymysql
import random
import sys
import easygui as eg

#密码字符串
id_ = '0123456789'


#检查密码是否一致
def chack(a,b):
    if a == b:
        return 1
    else:
        eg.msgbox(msg='两次输入不一致,请重新输入')
        return 0

#生成随机卡号
def card_id_random():
    bank_id = ''
    # 生成随机银行号码,并检查是否在数据库中
    for i in range(8):
        bank_id += random.choice(id_)
    return bank_id

#生成新用户信息
def to_info():
    info = ['姓名','身份证号码','电话号码','密码','再次输入密码','存款金额']
    total_msg = eg.multenterbox(msg='请填写以下信息',title='创建新用户',fields=info)
    #检查两次密码是否一致
    while True:
        if chack(total_msg[3],total_msg[4]):
            break
        else:
            total_msg[4] = eg.enterbox(title='创建新用户',msg='两次密码不一致,请重新输入')
    # money =float(input('请输入你想存入的金额'))
    bank_id = ''
    # 生成随机银行号码,并检查是否在数据库中
    while True:
        bank_id = card_id_random()
        #print(bank_id)
        cs.execute("select * from user")
        result = cs.fetchall()
        if bank_id in result:
            pass
        else:
            break
    #插入数据
    s1 = "insert into  user VALUES ('{}',{},{},{})".format(total_msg[0],total_msg[1],total_msg[2],bank_id)
    con.commit()#提交数据
    s2 = "insert into  card VALUES ({},{},{},{})".format(bank_id,total_msg[3],total_msg[5],1)
    con.commit()
    cs.execute(s1)
    con.commit()
    cs.execute(s2)
    con.commit()
    eg.msgbox(msg=f'你好{total_msg[0]},你的银行卡号是{bank_id}')

#返回单个用户信息(未输入密码)
#res_1是用户信息,res_2是卡的信息
def search(a = 0):
    try:
        bank_id = eg.enterbox(msg='请输入你的卡号')
        if chack_card_lock(bank_id) or a == 1:
            cs.execute(sql_6.format(bank_id))
            result_1 = cs.fetchone()
            eg.msgbox(msg=f'你好{result_1[0]}')
            cs.execute(sql_5.format(bank_id))
            result_2 = cs.fetchone()
            return result_1, result_2
        else:
            eg.msgbox(msg='此卡已被上锁,不能进行任何操作')
    except:
        eg.msgbox(msg='账户不存在')


#检查密码
def enter_password():
    result_1, result_2 = search()
    password = eg.enterbox(msg='请输入你的密码,共有5次机会')
    i = 5
    while True:
        if int(password) == result_2[1]:
            return 1
        else:
            i-=1
            password = eg.enterbox(msg=f'输入错误,请重新输入,还有{i}次机会')
    return 0

#查询余额
def cer_search():
    try:
        result_1,result_2 = search()
        if enter_password():
            eg.msgbox(msg=f'你的余额为:{result_2[2]}')
    except:
        print('账户不存在')


#存钱
def load_in():
    result_1, result_2 = search()
    if enter_password():
        money = float(eg.enterbox(msg='请输入你要存款的金额'))
        money += result_2[2]
        cs.execute("update card set money = {} where card_id = {}".format(money,result_1[3]))
        con.commit()
        cs.execute(sql_5.format(result_1[3]))
        con.commit()
        temp = cs.fetchone()
        eg.msgbox(msg=f'存款成功,你目前剩余的金额为{temp[2]}')
#取钱
def load_out():
    result_1, result_2 = search()
    if enter_password():
        out = float(eg.enterbox(msg='请输入你要取出的金额'))
        temp = result_2[2] - out
        if temp >= 0:
            cs.execute("update card set money = {} where card_id = {}".format(temp,result_1[3]))
            con.commit()
            eg.msgbox(msg=f'取款成功,你当前可用余额为{temp}')
        else:
            eg.msgbox(msg='余额不足')

#转账
def move():
    result_1, result_2 = search()
    if enter_password():
        eg.msgbox(msg=f'你剩余的金额为{result_2[2]}')
        z_id = int(eg.enterbox(msg='请输入你要转入的账户'))
        try:
            #获取接收转账账户的信息
            cs.execute("select * from card where card_id = {} ".format(z_id))
            con.commit()
            res = cs.fetchone()
            m_money = float(eg.enterbox(msg='请输入转账的金额'))
            if m_money>result_2[2]:
                eg.msgbox(msg='余额不足')
            else:
                temp = result_2[2]-m_money
                temp_ = res[2] + m_money
                eg.msgbox(msg="正在转账....")
                cs.execute("update card set money = {} where card_id = {}".format(temp,result_1[3]))
                con.commit()
                cs.execute("update card set money = {} where card_id = {}".format(temp_,res[0]))
                con.commit()
                eg.msgbox(msg=f"转账成功")
        except:
            eg.msgbox(msg='你输入的账户不存在!')

#修改密码
def change_password():
    result_1, result_2 = search()
    if enter_password():
        eg.msgbox(msg=f'你的余额为{result_2[2]}')
        new_password = eg.enterbox(msg='请输入你的新密码')
        while True:
            password_ = eg.enterbox(msg='请再次输入密码')
            if chack(new_password,password_):
                break
    cs.execute("update card set password = {} where card_id = {}".format(new_password,result_1[3]))
    con.commit()
    eg.msgbox(msg="修改成功")

#锁卡
def lock_card():
    result_1, result_2 = search()
    if enter_password():
        en = eg.enterbox(msg="是否确认锁卡(YES/NO)?")
        if en == 'yes':
            cs.execute("update card set mention = {} where card_id = {}".format(0,result_1[3]))
            con.commit()
        else:
            pass

#开卡
def unlock_card():
    try:
        result_1, result_2 = search(a = 1)
        if enter_password():
            en = eg.enterbox(msg="是否确认开卡(YES/NO)?")
            if en == 'yes':
                cs.execute("update card set mention = {} where card_id = {}".format(1,result_1[3]))
                con.commit()
            else:
                pass
    except:
        pass

#检查是否锁卡
def  chack_card_lock(card_num):
    cs.execute("select * from card where card_id ={}".format(card_num))
    con.commit()
    res = cs.fetchone()
    if res[3] == 0:
        return 0
    return 1


#补卡
def rep_card():
    result_1, result_2 = search()
    if enter_password():
        bank_id = card_id_random()
        eg.msgbox(msg="正在创建...")
        s = "insert into  card VALUES ({},{},{},{})".format(bank_id, result_2[1],result_2[2], 1)
        s1 = "insert into  user VALUES ('{}',{},{},{})".format(result_1[0],result_1[1],result_1[2],bank_id)

        cs.execute(s)
        con.commit()
        cs.execute(s1)
        con.commit()
        eg.msgbox(msg="创建成功")
        cs.execute("delete from card where card_id  = {}".format(result_1[3]))
        con.commit()
        cs.execute("delete from user where bank_id  = {}".format(result_1[3]))
        con.commit()

#销户
def drop_user():
    result_1, result_2 = search()
    if enter_password():
        ensure = eg.enterbox(msg=f"是否要注销账户{result_1[3]}(yes/no)")
        if ensure == 'yes':
            eg.msgbox(msg="正在删除...")
            cs.execute("delete from card where card_id = {}".format(result_1[3]))
            con.commit()
            cs.execute("delete from user where bank_id = {}".format(result_1[3]))
            con.commit()
            eg.msgbox(msg="删除成功")

#退出
def quit():
    sys.exit()




#与数据库建立连接
con = pymysql.connect('localhost','root','000000','bank')
#建立游标
cs = con.cursor()
#sql语句    建表
sql = """
   create table card(
   card_id int(100) ,
   password int(100) ,
   money FLOAT (20) ,
   mention int(1))
    """
sql_1= """
    create table user(
    name varchar(100)  ,
    id_card varchar(100)  ,
    tel varchar(100)  ,
    bank_id  int(100))
"""
# sql_2 = 'insert into  user VALUES (%s,%s,%s,%s)'
# sql_3 = 'insert into  card VALUES (%s,%s,%s,%s)'
sql_4 ="select * from user"
sql_5 = "select * from card where card_id = {} "
sql_6 = "select * from user where bank_id = {}"
sql_7 = "update card set money = {} where bank_id = {}"
# sql_8 = "update card set money -= {} where bank_id = {}"
sql_9 = "update card set mention = {} where bank_id = {}"





choice_dict = {'开户':1,'查询':2,'存款':3,'取款':4,'转账':5,'改密':6,'锁卡':7,'解锁':8,'补卡':9,'销户':10,'退出':'q'}
#修改表,让其可以插入中文
# cs.execute(sql)
# cs.execute(sql_1)
cs.execute("alter table user convert to character set utf8mb4 collate utf8mb4_bin")
cs.execute("alter table card convert to character set utf8mb4 collate utf8mb4_bin")
while True:
    op = eg.buttonbox(msg = """                      ************************************
                      *************  主功能  *************
                      *****开户(1)            查询(2)*****
                      *****存款(3)            取款(4)*****
                      *****转账(5)            改密(6)*****
                      *****锁卡(7)            解锁(8)*****
                      *****补卡(9)            销户(0)*****
                      *************  退出(q)  ************
                      ************************************
                      """,title='请选择功能',choices=['开户','查询','存款','取款','转账','改密','锁卡','解锁','补卡','销户','退出'])
    op = str(choice_dict[op])

    if op == '1':
        to_info()#测试完成
    elif op == '2':
        cer_search()
    elif op == '3':
        load_in()
    elif op == '4':
        load_out()
    elif op == '5':
        move()
    elif op == '6':
        change_password()
    elif op == '7':
        lock_card()
    elif op == '8':
        unlock_card()
    elif op == '9':
        rep_card()
    elif op == '0':
        drop_user()
    elif op == 'q':
        quit()
    else:
        eg.msgbox(msg='非法输入!')
# con.commit()
# con.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-16 12:07:28 | 显示全部楼层
wp231957 发表于 2020-12-16 08:38
你不上代码 鬼知道你是如何调用的呢

是我自己调用了两次,哈哈,已经解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 00:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表