Вы применяете строковые методы для целых слов, а не для отдельных символов. Вы не применяете условие any
или all
, чтобы проверить, соответствуют ли любые или все символов в каждом слове.
Например, с условием any
для каждого слова:
def fun(s):
for i in s:
print('\n', i)
if any(letter.isalnum() for letter in i):
print('Alnum', True)
if any(letter.isalpha() for letter in i):
print('Alpha', True)
if any(letter.isdigit() for letter in i):
print('Digit', True)
if any(letter.isupper() for letter in i):
print('Upper', True)
if any(letter.islower() for letter in i):
print('Lower', True)
s = input().split()
fun(s)
Результат:
One test 123
One
Alnum True
Alpha True
Upper True
Lower True
test
Alnum True
Alpha True
Lower True
123
Alnum True
Digit True
Простым ответом было бы сделать цикл foreach на странице, где вы хотите меню, и привязать к нему коллекцию, создав HTML-теги из коллекции. Если вы хотите, чтобы он был в файле _Layout.cshtml, то в дополнение к данным меню в коллекции вам нужно было бы добавить также представление, к которому оно относится, чтобы вы могли отфильтровать то, какие элементы отображаются на какой странице. Таким образом, пример будет выглядеть примерно так:
@foreach (var item in menuItems.Where(x => x.View == "pass the view name"))
{
<div class="menuItem" name="item.Name"/>
....
}
Или если вы используете какую-то другую структуру меню, например, <li>
или treeList, используйте разные теги:)
Имя представления может быть передано ViewData["viewName"]
или ViewContext.RouteData.Values["controller"].ToString()
По мере того, как оно должно проходить текущий вид, меню находится в нем и соответственно заполняет меню.
Вы должны рассмотреть возможность использования Просмотр компонента . Это хорошее решение для динамических меню.