如何压缩代码?(格式和计算)

2024-09-26 17:49:13 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起,我是新的编码,所以我道歉,如果这是一个业余的问题。一个练习要求我创建代码来计算一项投资1年、2年和3年的4%利息。我已经复制了很多代码,我想知道我如何做它不同:在一个更精简的方式。你知道吗

例如,是否有可能将每年的代码转换为类似这样的float(year1, year2, year3)以表示有多行代码?你知道吗

startingBalance = input("Please enter your starting bank balance: ")
startingBalance = int(startingBalance)

year1 = (startingBalance * 1.04)
year2 = (year1 * 1.04)
year3 = (year2 * 1.04)
year1 = "{0:.2f}".format(year1)
year2 = "{0:.2f}".format(year2)
year3 = "{0:.2f}".format(year3)


print("Starting Balance: " + str(startingBalance) + "\n" + "Year 1 Balance: " + year1 + "\n" + "Year 2 Balance: " + year2 + "\n" + "Year 3 Balance: " + year3)

answer=str(input("would you like to withdraw your profits? Y/N: "))
if answer in ['Y', 'y']:
  startingBalance = float(startingBalance)
  year1 = float(year1)
  year2 = float(year2)
  year3 = float(year3)
  year1Profit = year1 - startingBalance
  year1Profit = "{0:.2f}".format(year1Profit)
  year2Profit = year2 - startingBalance
  year2Profit = "{0:.2f}".format(year2Profit)
  year3Profit = year3 - startingBalance
  year3Profit = "{0:.2f}".format(year3Profit)
  str(year3Profit)
  print("Year   | Balance | Profit " + "\n" + "Year 1  " + str(year1) + "       " + year1Profit  + "\n" + "Year 2  " + str(year2) + "       " + year2Profit  + "\n" + "Year 3  " + str(year3) + "       " + year3Profit)
elif answer in ['N', 'n']:
  print("Goodbye")
else:
  print("Invalid Entry")

Tags: 代码answerformatfloatyearprintbalancestr
3条回答

这个问题在Code Review中可能更合适,但是:

year1 = "{0:.2f}".format(year1)

可替换为:

year1 = round(year1, 2)

在相同的代码中使用.format和print(“foo”+bar),我建议使用一种类型:

如果Python3.6或以上,则为F字串

print(f"Starting Balance: {startingBalance}\nYear 1 Balance: {year1}\nYear 2 Balance: {year2}\nYear 3 Balance: {year3}")

.Python2或3<;3.6格式

print("Starting Balance: {}\nYear 1 Balance: {}\nYear 2 Balance: {}\nYear 3 Balance: {}".format(startingBalance, year1, year2, year3))

无需在此处放置str():

answer=str(input("would you like to withdraw your profits? Y/N: "))

input()总是返回一个字符串。你知道吗

如果您想要(我猜)表格而不是一堆空格(难看),请使用“\t”:

print("Year   | Balance | Profit " + "\n" + "Year 1  " + str(year1) + "       " + year1Profit  + "\n" + "Year 2  " + str(year2) + "       " + year2Profit  + "\n" + "Year 3  " + str(year3) + "       " + year3Profit)

同样的事情在这里使用f-strings或.format来格式化你的字符串。你知道吗

为了避免编写相同的代码,可以创建一个函数来计算最终余额和利润。然后您可以使用其他答案来了解如何格式化变量并返回它们

def compute_year(starting_balance, number_of_year):
    return (startingBalance * 1.04 ** number_of_year, startingBalance * 1.04 ** number_of_year - startingBalance)

year1, year1Profit = compute_year(startingBalance, 1) 
year2, year2Profit = compute_year(startingBalance, 2) 
year3, year3Profit = compute_year(startingBalance, 3)

从技术上讲,这是一条线:

year1, year2, year3 = float(year1), float(year2), float(year3)

但是我认为如果你在初始化后不改变变量的类型会更清楚。您可以将它们一直保持为浮动,将打印行更改为:

print("Starting Balance: " + str(startingBalance) + "\n" + "Year 1 Balance: " + "{0:.2f}".format(year1) + "\n" + "Year 2 Balance: " + "{0:.2f}".format(year2) + "\n" + "Year 3 Balance: " + "{0:.2f}".format(year3))

这样可以避免您转换为字符串并再次转换。你知道吗

相关问题 更多 >

    热门问题