无法将函数的返回值传递给python中的另一个函数 [英] Cannot pass returned values from function to another function in python

查看:80
本文介绍了无法将函数的返回值传递给python中的另一个函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的目标是开发一个小程序来检查客户是否获得银行贷款的批准.它要求客户每年收入> 30k,并且在他/她目前的工作中至少有2年的经验.这些值是通过用户输入获得的.我实现了正则表达式来验证输入是否只有数字,没有任何字符串或负数,也不是 0.

My goal is to have a small program which checks if a customer is approved for a bank loan. It requires the customer to earn > 30k per year and to have atleast 2 years of experience on his/her current job. The values are get via user input. I implemented regexs to validate the input to be only digits without any strigns or negatives, nor 0.

但是第三个函数 asses_customer 总是在执行 else 部分.我想每次参数要么是None,要么是0

But the 3rd function asses_customer is always executing the else part. I think everytime the parameters are either None, either 0

这是源代码:

import sys
import re
import logging
import self as self


class loan_qualifier():

    # This program determines whether a bank customer
    # qualifies for a loan.

    def __init__(self): #creates object
        pass

def main():

        salary_check()
        work_exp_check()
        asses_customer(salary = 0, years_on_job = 0)


def salary_check():

        input_counter = 0  # local variable

        # Get the customer's annual salary.
        salary = raw_input('Enter your annual salary: ')
        salary = re.match(r"(?<![-.])\b[1-9][0-9]*\b", salary)

        while not salary:

            salary = raw_input('Wrong value. Enter again: ')
            salary = re.match(r"(?<![-.])\b[1-9][0-9]*\b", salary)

            input_counter += 1

            if input_counter >= 6:
                print ("No more tries! No loan!")
                sys.exit(0)
            else:
                return salary


def work_exp_check():

        input_counter = 0 #local variable to this function

        # Get the number of years on the current job.
        years_on_job = raw_input('Enter the number of ' +
                                 'years on your current job: ')
        years_on_job = re.match(r"(?<![-.])\b[1-9][0-9]*\b", years_on_job)

        while not years_on_job:

            years_on_job = raw_input('Wrong work experience. Enter again: ')
            years_on_job = re.match(r"(?<![-.])\b[1-9][0-9]*\b", years_on_job)

            input_counter += 1

            if input_counter >= 6:
                print ("No more tries! No loan!")
                sys.exit(0)
            else:
                return years_on_job

def asses_customer(salary, years_on_job):

        # Determine whether the customer qualifies.
        if salary >= 30000.0 or years_on_job >= 2:

            print 'You qualify for the loan. '
        else:
            print 'You do not qualify for this loan. '

# Call main()
main()

推荐答案

您已经声明:

它要求客户年收入 > 30k,并且在他/她目前的工作中至少有 2 年的经验.

It requires the customer to earn > 30k per year and to have at least 2 years of experience on his/her current job.

我们可以编写一些简单的语句来请求一个数字,如果没有给出一个数字,则再次请求该数字.

We can write some simple statements that request a number and if a number is not given then ask for that number again.

以下代码是实现该目标的一种非常简单的方法.

The following code is a very simple approach to achieving that goal.

class Loan_Checker():
    def __init__(self):
        self.salary = 0
        self.years_on_job = 0

        self.request_salary()
        self.request_years()
        self.check_if_qualified()

    def request_salary(self):
        x = raw_input('Enter your annual salary: ')
        try:
            self.salary = int(x)
        except:
            print("Please enter a valid number")
            self.request_salary()

    def request_years(self):
        x = raw_input('Enter the number of years on your current job: ')
        try:
            self.years_on_job = int(x)
        except:
            print("Please enter a valid number")
            self.request_years()

    def check_if_qualified(self):
        if self.salary >= 30000 and self.years_on_job >= 2:
            print 'You qualify for the loan. '
        else:
            print 'You do not qualify for this loan. '

Loan_Checker()

这篇关于无法将函数的返回值传递给python中的另一个函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆