Це лише фрагмент мого коду:
print("Total score for %s is %s ", name, score)
Але я хочу, щоб він роздрукував:
"Загальна оцінка для (ім'я) - (оцінка)"
де nameє змінною у списку і scoreє цілим числом. Це Python 3.3, якщо це взагалі допомагає.
Це лише фрагмент мого коду:
print("Total score for %s is %s ", name, score)
Але я хочу, щоб він роздрукував:
"Загальна оцінка для (ім'я) - (оцінка)"
де nameє змінною у списку і scoreє цілим числом. Це Python 3.3, якщо це взагалі допомагає.
Відповіді:
Існує багато способів зробити це. Щоб виправити поточний код за допомогою %-форматування, вам потрібно передати кортеж:
Передайте його як кортеж:
print("Total score for %s is %s" % (name, score))Кортеж з одним елементом виглядає так ('this',).
Ось кілька інших поширених способів це зробити:
Передайте це як словник:
print("Total score for %(n)s is %(s)s" % {'n': name, 's': score})Існує також нове стильове форматування рядків, яке може бути трохи простіше для читання:
Використовувати нове стильове форматування рядків:
print("Total score for {} is {}".format(name, score))Використовуйте нове стильове форматування рядків з номерами (корисно для переупорядкування чи друку одних і тих же декількох разів):
print("Total score for {0} is {1}".format(name, score))Використовуйте форматування рядків нового стилю з явними іменами:
print("Total score for {n} is {s}".format(n=name, s=score))Об'єднайте рядки:
print("Total score for " + str(name) + " is " + str(score))Ясніші два, на мою думку:
Просто передайте значення як параметри:
print("Total score for", name, "is", score)
Якщо ви не хочете, щоб пробіли вставлялися автоматично printу наведеному вище прикладі, змініть sepпараметр:
print("Total score for ", name, " is ", score, sep='')
Якщо ви використовуєте Python 2, ви не зможете використовувати останні два, оскільки printце не функція в Python 2. Ви можете імпортувати цю поведінку з __future__:
from __future__ import print_functionВикористовуйте нове fструнне форматування в Python 3.6:
print(f'Total score for {name} is {score}')print("Total score for", name, "is", score)
.format()краще читатими, ніж старші, % (tuple)хоча я бачив тести, які показують, що %інтерполяція швидша. Це print('xxx', a, 'yyy', b)також добре для простих випадків. Я також рекомендую вчитися .format_map()зі словником як аргументом, а також 'ssss {key1} xxx {key2}'- приємно для генерації текстів із шаблонів. Є і старші string_template % dictionary. Але шаблони не дивляться , що чистий: 'ssss %(key1)s xxx %(key2)s'.
print(f"Total score for {name} is {score}")без явних викликів функцій (до тих пір, поки nameі scoreв області дії очевидно).
Існує багато способів роздрукувати це.
Давайте подивимось на інший приклад.
a = 10
b = 20
c = a + b
#Normal string concatenation
print("sum of", a , "and" , b , "is" , c)
#convert variable into str
print("sum of " + str(a) + " and " + str(b) + " is " + str(c))
# if you want to print in tuple way
print("Sum of %s and %s is %s: " %(a,b,c))
#New style string formatting
print("sum of {} and {} is {}".format(a,b,c))
#in case you want to use repr()
print("sum of " + repr(a) + " and " + repr(b) + " is " + repr(c))
EDIT :
#New f-string formatting from Python 3.6:
print(f'Sum of {a} and {b} is {c}')
print("sum of {0} and {1} is {2}".format(a,b,c)) це надмірність, ви можете опустити, print("sum of {} and {} is {}".format(a,b,c)) якщо ви не хочете змінити порядок.
Використання .format()::
print("Total score for {0} is {1}".format(name, score))
Або:
// Recommended, more readable code
print("Total score for {n} is {s}".format(n=name, s=score))
Або:
print("Total score for" + name + " is " + score)
Або:
`print("Total score for %s is %d" % (name, score))`
Зберігаючи це просто, мені особисто подобається об'єднання рядків:
print("Total score for " + name + " is " + score)
Він працює з обома Python 2.7 та 3.X.
ПРИМІТКА: Якщо оцінка є цілою , то слід перетворити її на str :
print("Total score for " + name + " is " + str(score))
Просто слідкуйте за цим
idiot_type = "the biggest idiot"
year = 22
print("I have been {} for {} years ".format(idiot_type, years))
АБО
idiot_type = "the biggest idiot"
year = 22
print("I have been %s for %s years."% (idiot_type, year))
І забудьте всіх інших, інакше мозок не зможе зіставити всі формати.
print("Total score for %s is %s " % (name, score))
%sможе бути замінено на %dабо%f
Якщо scoreце число, то
print("Total score for %s is %d" % (name, score))
Якщо оцінка - це рядок, то
print("Total score for %s is %s" % (name, score))
Якщо оцінка - це число, то це %d, якщо це рядок, то це %s, якщо оцінка - поплавок, то це%f
Це те, що я роблю:
print("Total score for " + name + " is " + score)
Не забудьте розмістити пробіл після forі до і після is.
print("Total score for "+str(name)"+ is "+str(score))