Почему Python печатает фигурные скобки здесь?
Когда я запускаю приведенный ниже код, появляется следующее сообщение. Почему он печатает эти раздражающие скобки там, где я их не хочу? Я использую Python 2.7 и EasyGui.
from __future__ import division
from easygui import *
import ystockquote
def main():
PRHSX_message()
def PRHSX_message():
prhsx_share_price = float(ystockquote.get_last_trade_price('PRHSX'))
prhsx_daily_change = ystockquote.get_change('PRHSX')
prhsx_total_shares = 47.527
prhsx_starting_value = 2500
prhsx_percent_change = (((prhsx_share_price * prhsx_total_shares) / prhsx_starting_value) - 1) * 100
prhsx_percent_change = str("%.2f" % prhsx_percent_change) + "%"
prhsx_current_value = prhsx_share_price * prhsx_total_shares
prhsx_profit = prhsx_current_value - prhsx_starting_value
prhsx_current_value = "$" + str("%.2f" % prhsx_current_value)
prhsx_profit = "$" + str("%.2f" % prhsx_profit)
prhsx_string = "T. Rowe Price Roth IRA Account\n____________________________\n \
\nPercent Change:", str(prhsx_daily_change), \
"\nShare Price:", prhsx_share_price, \
"\nCurrent Value:", prhsx_current_value, \
"\nPercent Growth:", prhsx_percent_change, \
"\nProfit:", prhsx_profit
return msgbox(prhsx_string)
if __name__ == '__main__':
main()
1 ответ
Решение
Вы передаете в кортеже, а не в строке. Используйте форматирование строки здесь, чтобы упростить создание строки:
def PRHSX_message():
prhsx_share_price = float(ystockquote.get_last_trade_price('PRHSX'))
prhsx_daily_change = ystockquote.get_change('PRHSX')
prhsx_total_shares = 47.527
prhsx_starting_value = 2500
prhsx_percent_change = (((prhsx_share_price * prhsx_total_shares) / prhsx_starting_value) - 1) * 100
prhsx_current_value = prhsx_share_price * prhsx_total_shares
prhsx_profit = prhsx_current_value - prhsx_starting_value
prhsx_string = (
"T. Rowe Price Roth IRA Account\n"
"____________________________\n\n"
"Percent Change: {}\n"
"Share Price: {}\n"
"Current Value: ${:.2f}\n"
"Percent Growth: {:.2f}%\n"
"Profit: ${:.2f}").format(
prhsx_daily_change, prhsx_share_price, prhsx_current_value,
prhsx_percent_change, prhsx_profit)
Форматирование значений с плавающей точкой перенесено в строковый формат.
Основная строка объединяется компилятором Python, поскольку между различными строками нет других операторов.
Вы также можете использовать многострочную строку с тройными кавычками, но тогда ваш отступ может выглядеть немного забавно:
def PRHSX_message():
prhsx_share_price = float(ystockquote.get_last_trade_price('PRHSX'))
prhsx_daily_change = ystockquote.get_change('PRHSX')
prhsx_total_shares = 47.527
prhsx_starting_value = 2500
prhsx_percent_change = (((prhsx_share_price * prhsx_total_shares) / prhsx_starting_value) - 1) * 100
prhsx_current_value = prhsx_share_price * prhsx_total_shares
prhsx_profit = prhsx_current_value - prhsx_starting_value
prhsx_string = """\
T. Rowe Price Roth IRA Account
____________________________
Percent Change: {}
Share Price: {}
Current Value: ${:.2f}
Percent Growth: {:.2f}%
Profit: ${:.2f}""".format(
prhsx_daily_change, prhsx_share_price, prhsx_current_value,
prhsx_percent_change, prhsx_profit)
По этой причине я обычно помещаю строку формата в качестве глобальной константы.