#python #python-3.x
#python #python-3.x
Вопрос:
Я создал эту простую функцию:
def alpha_1(x):
#num = 5
counter = 65
out = []
for i in range(len(x)):
if x.isalpha():
num = ord(x[i])
out.append(chr(num 1 if 65 <= num <= 89 or 97 <= num <= 121 else counter))
else:
print("Not a character!")
return 0
return "".join(out)
Здесь мне нужно увеличить счетчик, когда некоторые значения достигают однострочной инструкции if как count =5
, чтобы я не получал тот же ‘A’ для значений, которые не попадают под указанный диапазон. Я знаю, что этого можно достичь, используя обычные инструкции «if».
Я просто хочу знать, есть ли какой-либо способ достичь этого в однострочных операторах?
Комментарии:
1. Вы спрашиваете, как увеличить переменную в инструкции if?
2. пожалуйста, сформулируйте свой вопрос, но если вы ищете сокращение if ->
x = 10 if a > b else 11
3. Просто используйте полный оператор if , не используйте условное выражение, оно целенаправленно ограничено в том, что вы можете делать. Вы должны поддерживать читаемость условных выражений и отсутствие побочных эффектов
4. да, я использую полное «if», просто было любопытно узнать, можно ли этого достичь таким образом, Np .. спасибо всем!!
Ответ №1:
counter = 5 if statement else 0
вы имеете в виду что-то вроде этого?
это добавит 5 к счетчику, если оператор true , и добавит 0 к счетчику, если оператор false
Комментарии:
1. Я устал от этого, но его ошибка в виде:
out.append(chr(num 1 counter = 5 if 65 <= num <= 89 or 97 <= num <= 121 else counter)) SyntaxError: invalid syntax
2. какую версию python вы используете?
Ответ №2:
Целые числа в python неизменяемы, что означает, что единственный способ изменить значение, на которое указывает какая-либо переменная, подобная вашей counter
, — это повторно присвоить ее.
counter = 5
counter = counter 5 # tadaa!
Обойти это невозможно, и присваивания являются операторами, что означает, что вы не можете использовать их в качестве значения для чего-либо (например, if
инструкции).
Вы не сможете выполнить однострочную инструкцию if и изменить значение, пока не появится Python 3.8, когда выделенное выражение присваивания станет частью языка, который позволит именно то, что вы хотите:
if (counter := (counter 5)) > something_else:
# do something, also counter is now 5 bigger than before
Но если вы не хотите создавать текущий мастер cpython локально, вам придется подождать до 21.10.2019, чтобы начать его использовать.