在这种无限循环的尝试中我做错了什么?

时间:2014-08-26 23:14:31

标签: python loops infinite-loop

我正在尝试为我的python类创建一个代码,而我正在制作一个基本的钱包管理系统。但我无法让这个无限循环工作。我做错了什么?

def main():
# Initial balance
 balance = input ('Wallet balance: ')

# This constructs the infinite loop
while true:

    # Initial balance
     balance = input ('Wallet balance: ')

    # Withdraw amount from wallet balance
     withdraw= input ('Withdraw amount: ')

    #If there is no balance to withdraw from
     if balance < 1:
         print ('You have no funds to withdraw.')

    # Withdraw process and new balance display
     if balance > 0:
         new = balance - withdraw
         print ('Your new balance: '), new
main()

2 个答案:

答案 0 :(得分:3)

为您修复了它,它有一些错误

True必须在Python中大写

如果要将int传递给str,则需要将int转换为str

另外,我不确定你为什么使用主要功能?它没有将初始值传递给无限循环,似乎是多余的。

def main():
    # Initial balance
    balance = input ('Wallet balance: ')

# This constructs the infinite loop
while True:

    # Initial balance
    balance = input('Wallet balance: ')

    # Withdraw amount from wallet balance
    withdraw= input('Withdraw amount: ')

    #If there is no balance to withdraw from
    if balance < 1:
        print('You have no funds to withdraw.')

    # Withdraw process and new balance display
    if balance > 0:
        new = balance - withdraw
        print('Your new balance: ' + str(new))
main()

但是,我假设你正在尝试建立一个可以提取和存款的功能性钱包。我不确定你对python和课堂建设有多么舒服,但我建造了一个功能齐全的钱包供你查阅和学习。

class Wallet:

    #Grab the initial balance in the account
    def __init__(self, initial_balance):
        self.balance = initial_balance

    #method that deposits funds to the balance
    def deposit(self, deposit_amount):
        self.balance += deposit_amount

    #method that attempts to withdraw from the balance
    def withdraw(self, withdraw_amount):
        if withdraw_amount <= self.balance:
            self.balance -= withdraw_amount
        else:
            print("Insufficient funds. You have " + str(self.balance) + " in your account. Please deposit more or withdraw less.")

    #display the balance
    def display_balance(self):
        print("The current balance in the account is " + str(self.balance))
        print("-----")

#Check if this module is the one currently being run
if __name__ == "__main__":
    #Ask user for initial balance
    initial_balance = int(input("Initial balance in account: "))
    #initiate the class, passing the initial balance
    wallet = Wallet(initial_balance)
    wallet.display_balance()
    while True:
        #Pick an option to withdraw, deposit or exit
        print("1: Deposit funds")
        print("2: Withdraw funds")
        print("3: Exit")
        type = int(input("Please select an option (1, 2 or 3): "))
        if type == 1:
            deposit_amount = int(input("Please specify amount to deposit: "))
            wallet.deposit(deposit_amount)
            wallet.display_balance()
        elif type == 2:
            withdraw_amount = int(input("Please specify amount to withdraw: "))
            wallet.withdraw(withdraw_amount)
            wallet.display_balance()
        elif type == 3:
            break
        else:
            print("Invalid selection, please type either 1, 2 or 3")

答案 1 :(得分:0)

我没有python3,但这在python2中工作,我在print-statement后面添加了括号。

def main():
    # Initial balance
    balance = int(input('Wallet balance: '))

    # This constructs the infinite loop
    while True:
        # Withdraw amount from wallet balance
        withdraw = int(input('Withdraw amount: '))

        #If there is no balance to withdraw from
        if balance < 1:
            print ('You have no funds to withdraw.')

        # Withdraw process and new balance display
        if balance > 0:
            new = balance - withdraw
            print ('Your new balance: ', new)
main()