Hoje, vou contar uma história sobre meu erro de copiar e colar e como uma string com vírgula final foi acoplada e se tornou uma Tuple() em meu programa Python. Estranhamente, eu não conhecia esse conceito antes de cometer esse erro.
Então, vamos começar aprendendo rapidamente sobre string e tupla em Python.
Definição: Uma sequência de caracteres usada para armazenar e manipular texto.
Sintaxe: Entre aspas simples ' ', aspas duplas " " ou aspas triplas ''' '''/""" """.
Imutabilidade: Strings não podem ser alteradas após a criação.
# Example mystring = "Hello, World!" print(type(mystring)) #Output:Tuplamystring2 =str() print(type(mystring2)) #Output:
Definição: Uma sequência imutável de valores.
Sintaxe: Definido entre parênteses ( ), separados por vírgulas.
Imutabilidade: Depois de criados, os elementos não podem ser alterados.
# Example mystring = "Hello, World!" print(type(mystring)) #Output:Agora, sabemos sobre string e tupla e como obter uma variável do tipo string ou tupla usando atribuição direta ou usando abordagem de classe usando construtor. Mas minha história é diferente :).mystring2 =str() print(type(mystring2)) #Output:
A instrução Python não precisa de ponto e vírgula (;) ou vírgula (,) ou qualquer outro símbolo de fechamento (o espaçamento é usado para lidar com o bloco), então como você pode terminar com uma vírgula final com uma string como “Ajit Kumar”, porque muitas vezes você copia o elemento string da lista do dicionário e muitas vezes termina com uma vírgula final. Foi isso que aconteceu comigo e então a história ficou interessante.
String com vírgula final
# Example mystring = "Hello, World!" print(type(mystring)) #Output:Agora, há duas coisas a observar:mystring2 =str() print(type(mystring2)) #Output:
1) O interpretador Python não gerará nenhum erro devido à vírgula final com a string 'mymistake', caso contrário, o erro não teria prosseguido.
2) O tipo de variável tornou-se 'tupla' do que a intenção original de criar uma variável de string mymistake.
Escrevi aqui e parece muito fácil e simples, mas demorou horas para depurar esse erro, pois estava passando a string como argumento para um método e os erros eram estranhos e continuo trabalhando no método e tentando entender o mensagem de erro. Por exemplo, a mensagem era tipo, a variável 'nome' não possui um método lower().
Problemas
Exemplo: mymistake = "Ajit Kumar", cria uma tupla ("Ajit Kumar",).
Então, se você deseja criar uma tupla contendo apenas item/elemento, você precisa ter muito cuidado. A seguir o exemplo, demonstre que, no primeiro exemplo, mesmo um item está entre colchetes (1), python trata isso como um número inteiro e não como uma tupla.
item único = (1)
imprimir(tipo(item único))
#Saída:
singleitem = (1) print(type(singleitem)) #Output:
tupla de item único = (1,)
imprimir (tupla de item único)
#saída: (1,)
imprimir(tipo(tupla de item único))
#saída:
singleitemtuple = (1,) print(singleitemtuple) #output: (1,) print(type(singleitemtuple)) #output:
No entanto, a documentação do Python mencionou isso claramente e foi meu erro ou negligência minha não ter percebido e sempre usado () para criar uma tupla mesmo para um único item com vírgula de treinamento. Fonte
De qualquer forma, isso me deu um novo aprendizado e um atalho para criar uma tupla com um único item ou mais itens sem usar (). Sim, tentei usar a "vírgula final" com mais itens para criar uma tupla e funcionou. Exemplo:
mylearning = "Ajit Kumar","Abril","python",
imprimir(meuaprendizagem)
#saída: ('Ajit Kumar', 'abril', 'python')
imprimir(tipo(meuerro))
#saída:
mylearning = "Ajit Kumar","April","python", print(mylearning) #output: ('Ajit Kumar', 'April', 'python') print(type(mymistake)) #output:
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3