Istnieje wiele sposobów, aby to zrobić. Aby naprawić bieżący kod za pomocą %-formatting, musisz przekazać krotkę:
Podaj jako krotkę:
print("Total score for %s is %s"%(name, score))
Krotka z pojedynczym elementem wygląda ('this',).
Oto kilka innych typowych sposobów:
Przekaż jako słownik:
print("Total score for %(n)s is %(s)s"%{'n': name,'s': score})
Istnieje również formatowanie ciągów w nowym stylu, które może być nieco łatwiejsze do odczytania:
Użyj formatowania ciągów w nowym stylu:
print("Total score for {} is {}".format(name, score))
Używaj formatowania ciągów w nowym stylu z liczbami (przydatne do ponownego zamawiania lub drukowania tego samego jeden raz):
print("Total score for {0} is {1}".format(name, score))
Używaj formatowania ciągów w nowym stylu z wyraźnymi nazwami:
print("Total score for {n} is {s}".format(n=name, s=score))
Połącz ciągi znaków:
print("Total score for "+ str(name)+" is "+ str(score))
Najjaśniejsze dwa, moim zdaniem:
Po prostu przekaż wartości jako parametry:
print("Total score for", name,"is", score)
Jeśli nie chcesz, aby spacje były wstawiane automatycznie printw powyższym przykładzie, zmień sepparametr:
print("Total score for ", name," is ", score, sep='')
Jeśli używasz języka Python 2, nie będziesz mógł użyć dwóch ostatnich, ponieważ printnie jest to funkcja w języku Python 2. Możesz jednak zaimportować to zachowanie z __future__:
Moje +1. Obecnie wolę te .format()bardziej czytelne niż starsze % (tuple)- chociaż widziałem testy, które pokazują, że %interpolacja jest szybsza. print('xxx', a, 'yyy', b)Jest również dobre dla prostych przypadków. Polecam także uczyć się .format_map()ze słownikiem jako argumentem, a przy pomocy 'ssss {key1} xxx {key2}'- fajne do generowania tekstów z szablonów. Jest też starszy string_template % dictionary. Ale szablony nie wyglądają tak czysty: 'ssss %(key1)s xxx %(key2)s'.
FYI, jak Pythona 3.6, otrzymujemy f-strun , więc może teraz też zrobić print(f"Total score for {name} is {score}")bez wyraźnych wywołań funkcji (jak długo namei scoresą w zakresie oczywiście).
a =10
b =20
c = a + b#Normal string concatenationprint("sum of", a ,"and", b ,"is", c)#convert variable into strprint("sum of "+ str(a)+" and "+ str(b)+" is "+ str(c))# if you want to print in tuple wayprint("Sum of %s and %s is %s: "%(a,b,c))#New style string formattingprint("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)) to przesada, możesz to pominąć, print("sum of {} and {} is {}".format(a,b,c)) chyba że chcesz zmienić kolejność.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.
print("Total score for "+str(name)"+ is "+str(score))