Powinienem zdefiniować funkcję pad_with_n_chars(s, n, c)
, która pobieraciąg 's', liczbę całkowitą 'n' i znak 'c' i zwraca ciąg składający się z 's' wypełniony "c", aby utworzyć ciąg znaków z wyśrodkowanym "s" o długości 'n'. Na przykład: pad_with_n_chars(”dog”, 5, ”x”)
powinien zwrócić ciąg "xdogx
".Jak wstawić n znaków w Pythonie
Odpowiedz
Z Python2.6 lub nowszym, nie ma potrzeby definiowania własnej funkcji; metoda ciąg format może zrobić to wszystko dla Ciebie:
In [18]: '{s:{c}^{n}}'.format(s='dog',n=5,c='x')
Out[18]: 'xdogx'
Ładne i zwięzłe! –
To czysta magia! –
+1. Należy pamiętać, że format jest dość aktualny i prawdopodobnie nie będzie działać ze starszymi wersjami Pythona. –
Wygląda jakbyś tylko szuka wskazówek, a nie kompletnego rozwiązania. Więc tutaj jest jeden:
Można mnożyć ciągi w Pythonie:
>>> "A" * 4 'AAAA'
Dodatkowo chciałbym użyć lepszych nazw, zamiast s użyję tekst, który jest znacznie jaśniejsze. Nawet jeśli twój obecny profesor (przypuszczam, że uczysz się Python na uniwersytecie.) Używa takich okropnych skrótów.
Przyjęta odpowiedź jest elegancka i zwięzła, ale Myślę, że ten jest dużo bardziej wszechstronny i łatwiejszy do zapamiętania. – orodbhen
Cóż, ponieważ jest to zadanie domowe, prawdopodobnie nie zrozumiesz, co się dzieje, jeśli używasz "baterii", które są w zestawie.
def pad_with_n_chars(s, n, c):
r=n - len(s)
if r%2==0:
pad=r/2*c
return pad + s + pad
else:
print "what to do if odd ? "
#return 1
print pad_with_n_chars("doggy",9,"y")
Alternatywnie, gdy nie uczysz się więcej.
>>> "dog".center(5,"x")
'xdogx'
>>> dir(string)
['Formatter',
'Template',
'_TemplateMetaclass',
'__builtins__',
'__doc__',
'__file__',
'__name__',
'__package__',
'_float',
'_idmap',
'_idmapL',
'_int',
'_long',
'_multimap',
'_re',
'ascii_letters',
'ascii_lowercase',
'ascii_uppercase',
'atof',
'atof_error',
'atoi',
'atoi_error',
'atol',
'atol_error',
'capitalize',
'capwords',
'center',
'count',
'digits',
'expandtabs',
'find',
'hexdigits',
'index',
'index_error',
'join',
'joinfields',
'letters',
'ljust',
'lower',
'lowercase',
'lstrip',
'maketrans',
'octdigits',
'printable',
'punctuation',
'replace',
'rfind',
'rindex',
'rjust',
'rsplit',
'rstrip',
'split',
'splitfields',
'strip',
'swapcase',
'translate',
'upper',
'uppercase',
'whitespace',
'zfill']
Myślę, że powinieneś być w stanie dostrzec pierwszą wskazówkę tutaj ...
print '=' * 60
header = lambda x: '%s%s%s' % ('=' * (abs(int(len(x)) - 60)/2),x,'=' * (abs(int(len(x)) - 60)/2))
print header("Bayors")
tak po prostu użyć Ljust lub rjust do lewej uzasadnić (pad prawej) i prawym uzasadnić (pad po lewej) z dowolnym znakiem.
Na przykład ... dla '111' a 5-cyfrowy ciąg dopełniane „x'es
W Python3.6:
>>> '111'.ljust(5, 'x')
111xx
>>> '111'.rjust(5, 'x')
xx111
- 1. n ** n ** n heurystyki w Pythonie
- 2. Jak wstawić wiele białych znaków w Perlu?
- 3. Jak wstawić wszystkie liczby w ciągu znaków
- 4. Jak wydrukować ciąg znaków dosłownie w Pythonie
- 5. Utwórz ciąg znaków N
- 6. Jak rozwinąć ciąg znaków w ciągu znaków w pythonie?
- 7. Shift + Return, aby wstawić linebreak w pythonie
- 8. hex ciąg znaków w Pythonie
- 9. Jak zadeklarować długi ciąg znaków w Pythonie?
- 10. Jak podzielić ciąg znaków w Pythonie?
- 11. Usuń n znaków od początku ciągu znaków
- 12. Jak wymusić łańcuch Ruby na n znaków?
- 13. Jak wstawić spację po określonej liczbie znaków w ciągu znaków przy użyciu Pythona?
- 14. Jak mogę zacytować uciec znaków w csv pisarza w Pythonie
- 15. Jak wstawić listę do innej listy w pythonie?
- 16. PowerShell: Jak ograniczyć ciąg do N znaków?
- 17. Jak usunąć ostatnie n znaków z ciągu?
- 18. Uzyskiwanie mniejszych n elementów listy w Pythonie
- 19. W Pythonie, w jaki sposób utworzyć ciąg n znaków w jednym wierszu kodu?
- 20. Jak wstawić ng-repeat wewnątrz ng-repeat dla n razy
- 21. PhpExcel - Jak wstawić ten sam wiersz za wierszem N?
- 22. Jak wstawić "koniec tekstu" (ETX, ASCII 3) w ciągu znaków?
- 23. Jak mogę wydrukować n-tą literę alfabetu w Pythonie?
- 24. Jak działa zip (* [iter (s)] * n) w Pythonie?
- 25. Jak wyciąć listę z elementu n na koniec w pythonie?
- 26. Jak mogę utworzyć pusty plik PNG n * m w Pythonie?
- 27. Łączenie ciągów znaków w pythonie w wielolinie
- 28. Jak zapobiec automatycznym zmianom znaków specjalnych w Pythonie
- 29. Jak uzyskać pierwsze n znaków w pliku danych unixowych
- 30. Jak odzyskać pierwsze n znaków zmiennej w Bash?
Rzeczywiste rozwiązanie problemu jest na pewno ważne. Ale równie ważne jest wykrywanie i obsługa błędnych danych wejściowych. Pomyśl o swoich 3 argumentach wejściowych i zobacz, czy możesz antycypować, jakie wartości każdego z nich mogłyby spowodować problemy dla twojej funkcji 'pad_with_n_chars'. – PaulMcG