Diff
checker
Texto
Texto
Imagens
Documentos
Excel
Pastas
Legal
Enterprise
Aplicativo para desktop
Preços
Fazer login
Baixar o Diffchecker Desktop
Comparar texto
Encontre a diferença entre dois arquivos de texto
Ferramentas
Histórico
Editor live
Recolher inalteradas
Sem quebra de linha
Layout
Dividido
Unificado
Nível de detalhe
Inteligente
Palavra
Caractere
Realce de sintaxe
Escolher sintaxe
Ignorar
Transformar texto
Ir à primeira mudança
Editar entrada
Diffchecker Desktop
A maneira mais segura de usar o Diffchecker. Obtenha o aplicativo Diffchecker Desktop: seus diffs nunca saem do seu computador!
Obter Desktop
Solution to hwk7prob2
Criado
há 5 anos
O diff nunca expira
Limpar
Exportar
Compartilhar
Explicar
11 remoções
Linhas
Total
Removido
Caracteres
Total
Removido
Para continuar usando este recurso, atualize para
Diff
checker
Pro
Ver preços
50 linhas
Copiar tudo
33 adições
Linhas
Total
Adicionado
Caracteres
Total
Adicionado
Para continuar usando este recurso, atualize para
Diff
checker
Pro
Ver preços
63 linhas
Copiar tudo
"""Detect matching of parentheses in an expression"""
"""Detect matching of parentheses in an expression"""
# MCS 260 Fall 2021 Lecture 17
# MCS 260 Fall 2021 Lecture 17
Copiar
Copiado
Copiar
Copiado
# Read expression (which should include parentheses
)
# Read expression (which should include parentheses
/brackets
)
s = input("Expression: ")
s = input("Expression: ")
Copiar
Copiado
Copiar
Copiado
# We'll use a stack to keep track of all the "(
"
# We'll use a stack to keep track of all the "(
" or "[
"
# that haven't been matched with ")"
yet. Every
# that haven't been matched with ")"
or "]"
yet. Every
# new
"("
we see gets pushed, and every
")"
we see
# new
opening delimiter
we see gets pushed, and every
closing
#
closes whatever is at the top of the stack.
# delimiter
we see
closes whatever is at the top of the stack.
currently_open = []
currently_open = []
# We want both the characters of s and their positions
# We want both the characters of s and their positions
# so we use enumerate()
# so we use enumerate()
for i,c in enumerate(s):
for i,c in enumerate(s):
# c is character from s
# c is character from s
# i is the position (0-based index) of that character in s
# i is the position (0-based index) of that character in s
Copiar
Copiado
Copiar
Copiado
if c == "(
":
if c == "(
" or c == "[
":
# New left paren
opened; push it
# New left paren
/bracket
opened; push it
currently_open.append(
i
)
currently_open.append(
[c,i]
)
elif c == ")
":
elif c == ")
" or c == "]
":
# Right
paren
closes whatever left
paren
is at the
# Right
delim
closes whatever left
delim
is at the
# top of the stack. But we need to make sure the
# top of the stack. But we need to make sure the
# stack is nonempty before trying to pop.
# stack is nonempty before trying to pop.
try:
try:
Copiar
Copiado
Copiar
Copiado
currently_open.pop()
# i0 and c0 are the corresponding i and c
# for the opening paren/bracket
c0, i0 =
currently_open.pop()
if (c0 == "(" and c == "]") or (c0=="[" and c == ")"):
print("Error:")
print(s)
print(" "*i0 + "^ has mismatched delimiter types")
print("First delimiter is " + c0)
print("Second delimiter is " + c)
exit()
else:
print("Matching delimiters found: " + s[i0:i+1])
except IndexError:
except IndexError:
Copiar
Copiado
Copiar
Copiado
# Error because there was no
"("
on the
# Error because there was no
opening delim
on the
# stack to match
this ")"
# stack to match
the closing delimiter
print("Error:")
print("Error:")
print(s)
print(s)
print(" "*i + "^ does not match any preceding (")
print(" "*i + "^ does not match any preceding (")
exit()
exit()
Copiar
Copiado
Copiar
Copiado
# are there any
parentheses
open?
# are there any
delimiters
open?
# If so, it means that there is a (
with no match
# If so, it means that there is a (
or [
with no match
if len(currently_open) > 0:
if len(currently_open) > 0:
print("Error:")
print("Error:")
print(s)
print(s)
print(" "*currently_open.pop() + "^ is not matched by any following )")
print(" "*currently_open.pop() + "^ is not matched by any following )")
else:
else:
Copiar
Copiado
Copiar
Copiado
print("
Parentheses
matched successfully.")
print("
Delimiters
matched successfully.")
# Examples of what we expect the error messages to look like:
# Examples of what we expect the error messages to look like:
# (1 + ((2+3) - 5
# (1 + ((2+3) - 5
# ^ is not matched by any following )
# ^ is not matched by any following )
# ( 1 + (3-4))) + 5
# ( 1 + (3-4))) + 5
# ^ does not match any preceding (
# ^ does not match any preceding (
Diferenças salvas
Texto original
Abrir arquivo
"""Detect matching of parentheses in an expression""" # MCS 260 Fall 2021 Lecture 17 # Read expression (which should include parentheses) s = input("Expression: ") # We'll use a stack to keep track of all the "(" # that haven't been matched with ")" yet. Every # new "(" we see gets pushed, and every ")" we see # closes whatever is at the top of the stack. currently_open = [] # We want both the characters of s and their positions # so we use enumerate() for i,c in enumerate(s): # c is character from s # i is the position (0-based index) of that character in s if c == "(": # New left paren opened; push it currently_open.append(i) elif c == ")": # Right paren closes whatever left paren is at the # top of the stack. But we need to make sure the # stack is nonempty before trying to pop. try: currently_open.pop() except IndexError: # Error because there was no "(" on the # stack to match this ")" print("Error:") print(s) print(" "*i + "^ does not match any preceding (") exit() # are there any parentheses open? # If so, it means that there is a ( with no match if len(currently_open) > 0: print("Error:") print(s) print(" "*currently_open.pop() + "^ is not matched by any following )") else: print("Parentheses matched successfully.") # Examples of what we expect the error messages to look like: # (1 + ((2+3) - 5 # ^ is not matched by any following ) # ( 1 + (3-4))) + 5 # ^ does not match any preceding (
Texto alterado
Abrir arquivo
"""Detect matching of parentheses in an expression""" # MCS 260 Fall 2021 Lecture 17 # Read expression (which should include parentheses/brackets) s = input("Expression: ") # We'll use a stack to keep track of all the "(" or "[" # that haven't been matched with ")" or "]" yet. Every # new opening delimiter we see gets pushed, and every closing # delimiter we see closes whatever is at the top of the stack. currently_open = [] # We want both the characters of s and their positions # so we use enumerate() for i,c in enumerate(s): # c is character from s # i is the position (0-based index) of that character in s if c == "(" or c == "[": # New left paren/bracket opened; push it currently_open.append([c,i]) elif c == ")" or c == "]": # Right delim closes whatever left delim is at the # top of the stack. But we need to make sure the # stack is nonempty before trying to pop. try: # i0 and c0 are the corresponding i and c # for the opening paren/bracket c0, i0 = currently_open.pop() if (c0 == "(" and c == "]") or (c0=="[" and c == ")"): print("Error:") print(s) print(" "*i0 + "^ has mismatched delimiter types") print("First delimiter is " + c0) print("Second delimiter is " + c) exit() else: print("Matching delimiters found: " + s[i0:i+1]) except IndexError: # Error because there was no opening delim on the # stack to match the closing delimiter print("Error:") print(s) print(" "*i + "^ does not match any preceding (") exit() # are there any delimiters open? # If so, it means that there is a ( or [ with no match if len(currently_open) > 0: print("Error:") print(s) print(" "*currently_open.pop() + "^ is not matched by any following )") else: print("Delimiters matched successfully.") # Examples of what we expect the error messages to look like: # (1 + ((2+3) - 5 # ^ is not matched by any following ) # ( 1 + (3-4))) + 5 # ^ does not match any preceding (
Encontrar Diferença