Застрял на следующем генераторе писем - Python 3
В настоящее время я беру некоторые уроки информатики онлайн. Мне было поручено написать программу, которая после правильного ввода напечатает следующую букву в алфавите. Вот мой код:
char = input()
ordchar = ord(char)
nextletter = ordchar + 1
nextletter = chr(nextletter)
if nextletter == ("["):
print("A")
if nextletter == ("{"):
print("a")
if nextletter!=("[","{"):
print(nextletter)
Теперь я вижу проблему с кодом, хотя я не знаю, как его исправить. По сути, от второй до последней строки кода я хочу, чтобы он по существу говорил: "если next letter не равен {или [ print nextletter" ".
5 ответов
Вам не нужно проверять эти символы вообще. В коде перед этим вы убедитесь, что nextletter
никогда не будет [
или же {
, если вы просто назначите другое письмо nextletter
там:
if nextletter == "[":
nextletter = "A"
elif nextletter == "{":
nextletter = 'a'
Если вам все еще нужно сделать такой тест, используйте not in
оператор:
if nextletter not in '[{':
not in
возвращается True
если левый операнд отсутствует в последовательности справа. В моем примере я использовал строку с двумя символами, которая считается последовательностью:
>>> '[' in '[{'
True
>>> '0' in '[{':
False
Использование not in
членство оператора:
if nextletter not in ("[","{"):
print(nextletter)
Также обратите внимание, что вы можете избежать третьего теста, если вы использовали if-elif
построить, а не индивидуальный if's
, Таким образом, вы можете просто поместить третью часть в else
блок.
Проблема заключается в том, что вы спрашиваете, не соответствует ли nextletter кортежу ("[","{")
, Вы хотели спросить, не равно ли оно "[" или "{". Поэтому вы должны спросить,if nextletter != "[" and nextletter != "{"
Это проверит, не является ли это ни "[", ни "{". Надеюсь это поможет
В то время как другие ответы верны, правильный способ сделать то, что вы хотите, это использовать elif
а также else
:
if nextletter == ("[") :
print("A")
elif nextletter == ("{") :
print("a")
else :
print(nextletter)