Ir para conteúdo
Fórum Script Brasil

Felipe222

Membros
  • Total de itens

    89
  • Registro em

  • Última visita

Tudo que Felipe222 postou

  1. Olá! Olha sou iniciante em C, mas acho que posso ajudar . . . Bom pelo que vi o seu código parece estar funcionando direito, mas tenho algumas observações a fazer . . . - Os 2 alertas estão lhe alertando para o fato de você ter declarado, mas não utilizado as variáveis “f” e “m” |11|warning: unused variable ‘f’ [-Wunused-variable]| |11|warning: unused variable ‘m’ [-Wunused-variable]| - O alerta abaixo está lhe alertando para o fato de que a função gets(), é perigosa, pois possui algumas características de funcionamento que fazem com que o seu uso seja desaconselhável., tente utilizar outras funções. |20|warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]| - Se o problema continuar tente eliminar a função fflush(stdin); Obs.: para a sua variavel "sex" neste caso se não me engano o mais apropriado seria utilizar o codigo de formatação "%c" especifico para a entrada de caracteres. Bom por hora é só . . . veja se as dicas acima lhe ajudam em algo . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  2. Ola! Olha sou iniciante C, sem contar que não estou nada bem ultimamente para analisar o código de outros ususarios, mas vamos lá . . . Eu não entendi muito bem o que você quis fazer, mas, o principal problema que vejo é o de que você fez uma confusão com o vetor que vai armazenar as strings. char ch [ 500 ]; char *array[500]; nas duas linhas acima você está especificando variáveis que irão armazenar cada, uma ÚNICA string com um tamanho de 500 elementos, que dependendo do que você quer fazer é perfeitamente aceitavel, mas se você quer ler linha por linha e salvar cada uma em um posição de um vetor, você deve fazer algo similar a isto: char ch [ 10 ] [ 500 ]; char *array [ 10 ] [500]; onde o [ 10 ] indica o numero de elementos do tipo string que o ( vetor de strings ) vai possuir, e o [ 500 ] o numero de elementos ( caracteres ) que cada elemento do vetor vai possuir. Se é isso, que você quer fazer, eu não sei dizer exatamente como isso seria feito usando o laço ( while ), da forma que você usou, porem tenho uma noção básica de como você poderia fazer usando o laço ( for ): int main(void) { char url[] = "cadastro.txt"; char ch [ 3 ] [ 60 ]; int k = 0; int i = 0; FILE *arq; arq = fopen ( url, "r" ); if ( arq == NULL ) { printf ( "\nErro, não foi possivel abrir o arquivo\n" ); } else { for ( k = 0; k < 3; k++ ) { fgets ( ch [ k ], 60 , arq ); } fclose ( arq ); } for ( i = 0; i < 3; i++ ) { printf ( "\n%s", ch [ i ] ); } return 0; } Como eu disse, esta é uma noção basica de como voce poderia fazer usando um laço ( for ), sem contar que na maioria dos meus codigos, eu uso está estrutura para ler os dados, mas é claro que dependendo do que voce queira fazer pode não ser muito util para o seu caso, e como já deixei claro não estou muito bem para analisar outros codigos ultimamente! Bom por hora é só . . . veja se com as dicas e o codigo acima voce consegue alguma luz . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  3. Olá! Olha sou iniciante em C enão em C++ e fora o fato de que ultimamente não estou nada bem para entender o código de outros programadores, mas vou tentar lhe ajudar . . . - |15|error: ‘tamanho’ was not declared in this scope| - este erro está lhe alertando para o fato de que a variável “ tamanho ” não existe no código, não foi declarada - |21|error: expected unqualified-id before ‘int’| - este erro se deve ao fato de que você colocou uma virgula ( , ) depois da variável int resultado, quando o correto seria ponto e virgula ( ; ) - |26|error: invalid conversion from ‘int*’ to ‘int’ [-fpermissive]| - este erro se deve ao fato de que na sua função você especificou que das 4 variáveis apenas a primeira vai receber um(o) vetor: inserirlistaseq(dados,dados,quantidade,novovalor); sendo assim você não pode passar o segundo “dados” para a sua função, pois, pela sintaxe da sua função apenas a primeira é que deveria ser passada, a segunda não! - Não estou certo quanto a linguagem C++, mas na linguagem C quando você quer passar um valor ( variável ) por referencia, deve-se fazer o seguinte procedimento: Na declaração da sua função, você vai especificar qual variável vai receber o valor por referencia usando um asterisco ( * ) para indicar que a variável é do tipo ponteiro: int inserirlistaseq ( int lista[], int tam, int *quant, int valor ) { . . . } e ao chamar a sua função, indicar que você deseja passar a variável por referencia usando um e-comercial ( & ) para indicar o endereço na memoria da variável: resultado = inserirlistaseq ( dados, alterar_variavel, &quantidade, novovalor ); - E dentro da sua função, existem dois (2) return, um que retorna 1 e o outro que retorna 0, a questão é que em casos como esse, você deixe o código bem definido colocando um abre e fecha chaves a fim de facilitar e deixar bem explicito o que cada parte do código vai fazer e em que condições. - tente dar uma pesquisada sobre a passagem de valores para funções, seja atraves de valor ou atraves de referencia Bom como disse não estou nada bem para entender o codigo de outros programadores ultimamente, então só vou ate aqui, veja se com as dicas acima voce já consegue alguma luz! Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  4. Olá! Sou iniciante em C, mas acho que posso dar uma força . . . Nesta linha scanf ( "%s", &elemento1 [ 20 ] ); por se tratar de uma string você só precisa colocar o nome da variável que você deseja acessar, o código de formatação “%s” já diz ao compilador C que você vai acessar uma variável do tipo string. Além do mais por se tratar de uma string, não é necessário o uso do “ & ” na frente da variável, pois, por se tratar de um vetor de caracteres, o primeiro elemento do vetor é uma referencia ao restante dos elementos do vetor neste caso da string, é como se você dissesse onde começa o inicio de uma fila, ou neste caso da string. E também ocorreu de você colocar o [ 20 ] depois da variável elemento1, neste caso isso não é necessário, retire o [ 20 ] do código: mude disso: scanf ( "%s", &elemento1 [ 20 ] ); para isso: scanf ( "%s", elemento1 ); Não tenho certeza, mas muito provavelmente este é o mais provavel causador da mensagem de erro! Sem contar que na linguagem c, você não pode fazer a comparação direta entre variáveis do tipo string, sendo assim a linha seguinte não vai funcionar, além de que não é necessário colocar o [ 20 ]: if ( elemento1 [ 20 ] == 'Hidrogenio' ) Sendo assim, para você realizar a comparação entre duas strings, você vai precisar utilizar uma função que realize tal tarefa, dê uma olhada neste tópico que já respondi e que fala exatamente isso: https://www.scriptbrasil.com.br/forum/topic/182241-d%C3%BAvida-sobre-c/#comment-686135 Outro detalhe, na linguagem c, as aspas simples normalmente são utilizadas para a representação de caracteres simples ‘a’, ‘b’, ‘^’, sendo assim elas só devem ser usadas para valores de variáveis do tipo char: ex: char letra; letra = ‘A’; sendo que para variáveis do tipo string utiliza-se aspas duplas: ex: char nome [ 6 ]; nome = “marcos”; Obs.: quando voce tem uma cadeia de caracteres ( string ) voce só utiliza o colchetes com um valor dentro dele [ 20 ] para representar a posicao do vetor em que voce quer ler ou alterar um valor especifico, sendo que em c a posicao começa em 0. Dê uma olha neste outro tópico de outro forum em que eu chego a explicar como voce poderia utilizar o if de outra maneira: http://forum.clubedohardware.com.br/topic/1146973-ajuda-com-char/#comment-6306515 Bom por hora é só . . . veja se as dicas acima lhe ajudam . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  5. Felipe222

    Erro de Sintaxe

    Olá! Bom, ao que parece voce cometeu 2 erros no seu if: - no primeiro, voce esta tentando atribuir a variavel texto um valor inexistente ( aprovado ) na linguagem Python, quando o correto seria colocar o valor dentro de aspas "aprovado" - no segundo, voce colocou um dois pontos, no final da palavra aprovado: onde no caso da linguagem python isto não é permitido O mais apropriado seria: texto = "aprovado" media = 6 if media == 6: texto = "aprovado" Ubuntu 14.04 - Python 2.7.6 - Python 3.4.3 Espero Ter Ajudado ! ! !
  6. Felipe222

    Inserir Menu

    Olá! Bom aqui esta a minha analise básica do seu código . . . - |6|error: ‘int main()’ previously defined here – esse erro está relacionado pelo fato de existirem 2 main(), no seu programa - Os alertas seguintes estão relacionados ao fato de que você declarou, mas não utilizou as variáveis indicadas nos alertas: |100|warning: unused variable ‘dados’ [-Wunused-variable]| |101|warning: unused variable ‘quantidade’ [-Wunused-variable]| |102|warning: unused variable ‘resultado’ [-Wunused-variable]| |102|warning: unused variable ‘novovalor’ [-Wunused-variable]| - os erros seguintes muito provavelmente se devem ao fato de que, ou você não declarou os protótipos de suas funções ou tais funções não foram declaradas, neste caso quando você for chamar uma função que precise receber algum argumento ( parâmetro ) você deve passar tais parâmetros quando chama tal função: |20|error: ‘inserirlistaseq’ was not declared in this scope| |27|error: ‘listarlista’ was not declared in this scope| |33|error: ‘buscarlistaseq’ was not declared in this scope| |40|error: ‘removerlistaseq’ was not declared in this scope| |46|error: ‘exit’ was not declared in this scope| Este é + ou - o protótipo da sua função: int inserirlistaseq ( int lista[], int , int , int ); Esta é a forma como você deve chamar e passar argumentos ( parâmetros ) para a função desejada: switch ( op ) { case 1: inserirlistaseq ( lista, tam, quant, valor ); break; { - |96|error: ISO C++ forbids comparison between pointer and integer [-fpermissive]| - se não me engano, esse erro está relacionado ao fato de que na linguagem C++ você não pode fazer a comparação direta entre um inteiro e um ponteiro, neste caso só faltou você indicar o índice do vetor que você deseja acessar. Ex: if ( lista [ x ] == valor ) - |118|error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]| - aqui é algo parecido ao error anterior, lista é um vetor e você está tentando atribuir um valor do índice do próprio vetor, ao vetor em si, quando o correto é indicar o índice do vetor que você deseja acessar. Ex: lista [ x ] = lista [ i + 1 ]; - e você não fez exatamente o que lhe sugerir sobre a função Menu(): você deve criar uma função chamada Menu() a qual vai chamar as funções que forem necessárias. Obs.: apenas observando, que dependendo da forma como você queira enviar ( passar ) os valores das suas variáveis para as suas funções, é que você vai precisar ou não introduzir os valores de suas variáveis dentro da função Menu() e então passar tais variáveis para a função que for chamada, ou ao contrario a variável ou o seu valor será definido dentro da função chamada, e na da menu(). void Menu ( void ) { while(1) { cout << "===========MENU==========" << endl; cout << "1 - Inserir" << endl; cout << "2 - Listar" << endl; cout << "3 - Buscar" << endl; cout << "4 - Remover" << endl; cout << "Introduza a opção: " << endl; int op; cin >> op; int idade = 0; cin >> idade; switch(op) { case 1: { inserirlistaseq ( idade ); break; } . . . . case 5: { exit(1); } default: { break; } } } return 0; } Neste caso a variável idade é declarada e recebe um valor dentro da função Menu(), e quando uma função que precise usar a variável idade for chamada, a variável idade é passada como argumento da função que foi chamada: void Menu ( void ) { int idade = 0; cin >> idade; switch(op) { case 1: { inserirlistaseq ( idade ); break; } } e ao final de execução da função que for chamada, chamar a função Menu(); antes da ultima chave de fechamento da função, apenas observando que a forma como isso é feito pode variar dependendo da forma que você deseja que o código retorne ou não valores. inserirlistaseq ( lista, tam, quant, valor ); { . . . . Menu(); } Bom é + ou - isso ai, veja se consegue agora . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  7. Felipe222

    Inserir Menu

    Olá! Desculpe a demora para a resposta, ontem ( 16 ) fiquei o dia inteiro sem conexão depois que a fonte de alimentação do modem DSL queimou, e como já diz a Lei de Murphy, " tudo que pode dar errado, vai dar " ainda por cima ontem foi feriado na cidade ( Petropolis ), então nem pensar em sair para comprar outra . . . Bom, dei uma compilada aqui, e rapidamente já surgiram alguns erros e alertas, a não ser que voce já os tenha solucionado, volto mais tarde com alguma dica!
  8. Felipe222

    Inserir Menu

    Olá! Bom não sei se entendi bem a sua duvida, você quer criar um menu para chamar uma função desejada? Bom se é isso, você pode tentar criar uma função chamada menu do tipo void, e dentro dela coloque uma função para printar as opções disponiveis, normalmente um numero para cada opção, e uma função para que o usuário entre com a opção desejada. A opção desejada vai ser avaliada talvez por um switch, onde cada case vai ser uma das funções que será chamada. Ao final de execução de qualquer uma das funções, você deve chamar novamente a função menu, para caso você queira realizar alguma outra tarefa, vou colocar um exemplo em C, já que sou inciante na linguagem e não sei nada de C++! Ex: void menu ( void ) { int opcao = 0; printf ( “ 1 – inserir ” ); printf ( “ 2 – buscar ” ); scanf ( “%d”, &opcao ); switch ( opcao ) { case 1: inserir ( a , b , c , d ); break; . . . . . case 5: exit(); } } int inserirlistaseq ( int lista[], int tam, int &quant, int valor ) { . . . menu() } e dentro do main() int main() { menu(); return (0); } Bom esse é a minha opinião e o que consigo fazer em C, não sei se em C++ se recomenda fazer de forma diferente . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  9. Olá! Sou inciante no mundo da programação e em Python, além de que não entendi bulhufas do que o seu código deve fazer, então não serei nada util, mas . . . Ao tentar executar o código aqui apareceu o seguinte erro: Traceback (most recent call last): File "/home/felipe/ciclo for não funciona.py", line 113, in <module> J.append(((I_d[a])**2) * R20 * (1 + alpha * (Ts - (20+K)))) TypeError: unsupported operand type(s) for -: 'list' and 'int' Dentro do laço - for i in range ( 0, l ): Ao que parece você está tentando realizar uma operação de subtração entre uma lista e um inteiro, neste caso você deve indicar qual o elemento da lista que você deseja realizar a operação, algo como: ( Ts [ x ] - ( 20 + K ) ) Além do mais o erro aparece aos montes dentro deste laço, como já disse não faço a menor ideia do que o seu código deve fazer, mas eu fui colocando [ a ] onde aparecia a mensagem de erro anteriormente mencionada,para avançar na execução do programa, porem eu não pude continuar pois não sei o que está acontecendo na linha 183: C.append(math.pi*l_f*(Ts- Ta[a])*N) mesmo colocando [ a ] aparece um erro, além do mais como não sei muito bem a ordem das operações que esta linha deve ter, acho que acabaria fazendo besteira. Bom como eu já disse, eu não seria muito útil neste quesito, mas foi a única coisa que pude fazer por hora, veja se ajuda em algo . . . Ubuntu 14.04 - Python 2.7.6 - Python 3.4.3 Espero Ter Ajudado ! ! !
  10. Felipe222

    Python te limita?

    Olá! Olha eu sou iniciante no mundo da programação, incluindo Python, então não sou nem de longe a pessoa certa para falar sobre o assunto, mas . . . Bom tecnicamente qualquer linguagem de programação vai te Limitar em alguma coisa, algumas em alguns pontos mais sensíveis do que em outros. Em minha opinião e pouca experiência com Python, o que vai definir o quanto Python irá lhe limitar será, em 3 pontos principais: - o tipo de problema para o qual você deseja resolver usando Python - a sua experiência e capacidades com Python - e com relação a sua capacidade como programador, em realmente ser capaz de pensar e raciocinar sobre o problema que você está enfrentando Dependendo do tipo de problema que você for encarar, é muito provável que exista não uma única e especifica forma, mas sim, aquela seja a mais eficiente para o problema em geral. Exemplo: você pode desenvolver 3 algoritmos ( códigos - diferentes ) que realizem uma mesma tarefa, com os mesmos resultados, porem um destes algoritmos vai ser o mais eficiente levando em consideração vários aspectos, entre eles a sintaxe da linguagem de programação. Sendo assim, cada linguagem vai ter as suas características sendo mais apropriadas para determinadas tarefas do que em outras, Python não escapa dessa regra: Mas a não ser que a limitação esteja ou seja na sintaxe em si da linguagem de programação, você sempre poderá contar com a flexibilidade da linguagem para utilizar de bibliotecas criadas por você mesmo ou por terceiros, e neste ultimo caso existem aos montes e muito uteis! Sem contar que a linguagem possui certa capacidade de usar implementações com outras linguagens de programação como Java, C e se não me engano .NET Mas em geral minha experiencia com Python tem sido muito boa . . . Bom por hora era só isso . . . tenho certeza que outros ususarios mais experientes poderão lhe dar uma visão muito maior sobre Python . . . Ubuntu 14.04 Python 2.7.6 - Python 3.4.3 Espero Ter Ajudado ! ! !
  11. Olá! Olha sou inciante na Linguagem C e não sei basicamente nada sobre C++, mas . . . Existem linguagens de programação que permitem que seja feita uma avaliação direta entre duas strings, tão facilmente quanto contar de 1 a 10. Porem, em outras a coisa é um pouco diferente, na linguagem C, para se fazer a comparação entre duas strings, verificando se elas são iguais, exatamente da forma como você deseja fazer, se faz necessário a utilização de uma função que realize tal tarefa. Na Linguagem C você pode usar a função strcmp(), que se encontra na biblioteca #include<string.h> Essa função faz a comparação entre duas strings e retorna verdadeiro ou falso para a avaliação: char nome1 [ 6 ] = “marcos” char nome2 [ 6 ] = “marcos” if ( strcmp ( nome1, nome2 ) == 0 ) { . . . } Caso as duas strings sejam iguais, a função retorna como valor ( 0 ), valor o qual é comparado com o ( 0 ), a ser comparado e já explicito dentro do if, neste caso: if ( 0 == 0 ) { . . . } Neste caso a avaliação do if se torna verdadeira, porem caso as strings fossem diferentes o valor retornado pela função seria ( 1 ) onde: if ( 1 == 0 ) { . . . } Neste caso a avaliação do if se torna falsa, pois 1 e 0 não são iguais, assim o conteúdo do if não seria executado. Na linguagem C++ você pode usar a mesma função que lhe apresentei, tenho apenas duas observações: - por não conhecer C++, não tenho certeza se realmente a linguagem não é capaz de fazer a comparação direta entre duas strings, mas estou quase certo de que ela não é capaz. - como não sei a sintaxe de C++, vou deixar para você introduzir a função strcmp(), no seu código. Observação: Não quero ser chato, mas é sempre bom dar uma pesquisada no forum, para ver se um tópico similar já não existe, seja para poupar tempo de esperar por respostas, o que sei que pode ser frustante, ou para evitar a criação de topicos com assuntos repetidos: Bom por hora é só . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  12. Felipe222

    Dúvida no código

    Olá! Bom aqui o compilador através da IDE retornou os seguintes alertas: - Os três alertas seguintes estão relacionados ao scanf() da linha 8: |8|warning: writing into constant object (argument 2) [-Wformat=]| |8|warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘char *’ [-Wformat=]| |8|warning: too many arguments for format [-Wformat-extra-args]| Basicamente o que está causando o problema é que dentro do seus scanf(), você separou cada código de formatação para cada uma das suas variáveis, o que ate onde pude aprender sobre scanf() é incorreto. É só mudar de: scanf("%f","%f","%f","%f",&n1,&n2,&n3,&n4); para: scanf ( "%f %f %f %f", &n1, &n2, &n3, &n4 ); - os dois alertas seguintes se referem ao fato que de a compilador não encontrou qualquer referencia a forma como a função pow() deve funcionar, mais especificamente o compilador está lhe alertando para a falta do protótipo da função pow(), que nesta caso está dentro do arquivo-cabeçalho: #include <math.h> |9|warning: implicit declaration of function ‘pow’ [-Wimplicit-function-declaration]| |9|warning: incompatible implicit declaration of built-in function ‘pow’ [enabled by default]| Na maior parte das vezes ate onde pude aprender de C, isto tem mais a ver com os programadores que mexerão com o código do que para o compilador, não sei qual o seu nível sobre C, mas quando você começar a ver como as funções de C funcionam, você vai entender o que digo! Bom por hora é só . . . veja se as dicas acima lhe ajudam . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  13. Olá! Bom encontrei alguns pequenos, mas relevantes problemas no seu codigo . . . - Para o seu algoritmo o ideal é de que todas as suas variaveis sejam do tipo float, incluindo a variavel peso. - Nos seus dois scanf() faltou o ( & ) antes do nome da variavel para indicar o endereço da mesma, sem isso é problema na certa. - no calculo do IMC, na Linguagem C assim como em boa parte das linguagens de programação, existe algo chamado prescedencia de operadores, o que significa que se voce não especificar quais operações ( + - / * - entre outras ) devem ser realizadas primeiro, a Linguagem C vai usar a prescedencia definida pela propria Linguagem de Programação, neste caso a Linguagem C, vai primeiro fazer a divisão do peso pela altura, e depois multiplicar o resultado pela altura, o que vai dar como resultado aproximado 45. Para evitar que isso aconteça voce deve usar parenteses para especificar a ordem das operações, neste caso IMC = peso / ( altura * altura ); - Alem disso o compilador atraves da sua IDE deve ter lhe retornado algum destes alertas: Os dois alertas seguintes estão relacionados ao fato de que ao declarar uma variável é sempre bom definir um valor nulo inicial antes de usar a variável, normalmente para evitar problemas com o lixo de memoria, ex: float peso = 0; |11|warning: ‘peso’ is used uninitialized in this function [-Wuninitialized]| |14|warning: ‘altura’ is used uninitialized in this function [-Wuninitialized]| Os dois alertas seguintes estão relacionados ao fato de que voce esqueceu o ( & ) para indicar o endereço das variaveis que serão usadas: |11|warning: format ‘%i’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]| |14|warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double’ [-Wformat=]| Bom por hora é só . . . Veja se com as dicas acima o problema se resolve . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  14. Olá! Rapidinho só pra finalizar . . . - O ( \n ) serve para você dizer ao interpretador Python que você deseja que ele pule uma linha, você pode colocá-lo em qualquer parte de uma string, principalmente aquelas em que você deseja exibir na tela, usando print, isso deixa a visualização dos dados mais organizado. - já o motivo para o código que você fez não funcionar é o de que na maioria absoluta das linguagens de programação, não se usa a virgula ( , ) para representar números decimais ( float ), mas um simples ponto ( . ) sem contar que como já disse em um dicionario cada par de chaves com seus respectivos valores são separados por virgulas, sendo assim você não poderia usar virgula dentro de um dicionario a não ser para a função para a qual ela foi desempenhada para funcionar ali dentro. É só mudar isso: dicionario_planetas = { "mercurio" : 3,2"venus" : 2 } para isso: dicionario_planetas = { "mercurio" : 3.2 , "venus" : 2 } Espero Ter Ajudado ! ! !
  15. Olá! Bom não tem erro é só fazer da mesma forma como você faz para receber a variável planeta: numero = input ( “\nEntre com um Número: ” ) Apenas Atentando: que no Python 3, a função input() é usada para a entrada de strings ( Palavras ) sendo assim você não poderia utilizar o valor numerico sem antes converter o valor: numero = int ( numero ) ou numero = int ( input ( “\nEntre com um Número: ” ) ) Uma vez a conversão sendo corretamente realizada você pode utilizar a variavel para o que você deseja fazer . . . resultado = dicionario_planetas [ planeta ] + numero Caso seja possível para você, tem esse canal no YouTube - Ignorância zero: https://www.youtube.com/channel/UCmjj41YfcaCpZIkU-oqVIIw/videos ele me ajudou bastante no inicio de meus estudos em Python e tenho certeza que lhe será bastante útil também . . . Bom por hora é só . . . se voce tiver mais alguma duvida é só posta-la, que acredito que vai ter alguém no forum que vá lhe ajudar, hoje e na proxima semana é quase certo que vai ser muito dificil para mim postar qualquer coisa, mas quem sabe . . . Ubuntu 14.04 Python 2.7.6 - Python 3.4.3 Espero Ter Ajudado ! ! !
  16. Olá! Traceback (most recent call last): File "C:/Users/Larp/Documents/PYTHON PROGRAMS/teste.py", line 4, in <module> resultado = planeta + 2 TypeError: Can't convert 'int' object to str implicitly O erro acima está acontecendo porque, você está tentando fazer uma operação, mais especificamente ( soma ) entre dois tipos de dados completamente diferentes, o que está sendo mostrado de forma explicita por: TypeError: Can't convert 'int' object to str implicitly Esta parte da mensagem está dizendo que não é possível converter o objeto inteiro ( numero ) para o tipo string ( palavra ) de forma implícita ( + / - automaticamente ) pelo próprio interpretador. Resumindo: você está tentando somar uma palavra com um numero! O que não é permitido . . . Se com: resultado = planeta + 2 você queria pegar o valor do planeta digitado pelo usuário ex: “mercurio” que é igual a 1 e somá-lo com 2, resultando talvez em um outro valor ( 3 ) que você também poderia encontrar no dicionario de planetas, o correto seria nesta parte: resultado = dicionario_planetas [ planeta ] + 2 print ( resultado ) ou resultado = dicionario_planetas [ planeta ] + 2 print ( dicionario_planetas [ resultado ] ) Obs.: com a segunda opção vai surgir um erro que vou deixar para você resolver . . . tente fazer uma interpretação detalhada de o porque o erro acontecer, e se possivel e/ou mesmo voce se sentir a vontade poste a sua interpretação do que pode estar causando o erro . . . Bom por hora é só . . . Ubuntu 14.04 - Python 2.7.6 - Python 3.4.3 Espero Ter Ajudado ! ! !
  17. Olá! Não sei nada sobre QT 4 mas vamos lá . . . “ IndentationError: unexpected indent ” Bom isso está acontecendo porque as linhas 15, 16, 17,18 e 20 estão com a edentação ( alinhamento ) errado, basta colocar um espaço em branco adicional no inicio de cada uma dessas linhas para o erro desaparecer. “ there's an error in your program: invalid syntax ” Esse erro vai aparecer na linha 18 assim que você consertar as linhas anteriores, isso ocorre porque em: flayout.addRow("Informe a sua idade") , txtIdade) você colocou um fecha parênteses depois das aspas de fechamento de ( informe a sua idade ), basta retirar esse fecha parentes para o erro desaparecer. “ IndentationError: unexpected indent ” Novamente este erro vai aparecer só que agora nas linhas 30, 31, 32 e 33, o alinhamento está errado, só que desta vez há um espaço em branco adicional em cada uma dessas linhas, é só retirar o espaço em branco adicional do inicio de cada linha para o problema desaparecer. Apena sobservando: que aqui o IDLE padrão do Python, ele deixou estas linhas alinhadas com o import sys Tenho duas observações finais importantes a lhe fazer: - é melhor você prestar um pouco de atenção as mensagens de erro que lhe são retornadas pelo interpretador, pois, neste caso só faltou atenção para com o correto alinhamento do código e o interpretador lhe disse exatamente onde, então lhe sugiro pegar todos código que já funcionam corretamente e propositalmente criar erros nos seus códigos e ver cada mensagem de erro que o interpretador lhe reporta, vai por mim isso pode lhe ajudar a encontrar erros de uma forma muito mais fácil no futuro. - quando você começar a usar uma biblioteca ( API ), não importa a qual e para qual função é sempre bom você estar ciente de que nem sempre vai ser fácil encontrar em algum fórum pessoas capazes de lhe ajudar com o código. No meu caso por exemplo eu não sei nada sobre QT 4, mas pude lhe ajudar no que sabia sobre Python o que acho que já vai dar uma força enorme, para a resolução do problema, mas sempre existirão limitações: Ex: aqui o código executou, porem, nenhuma interface ( janela ) surgiu, além de que apareceu uma mensagem de erro dentro do IDLE de execução do programa: Traceback (most recent call last): File "/home/felipe/qt4 scriptbrasil-forum.py", line 31, in <module> app = principal(None) File "/home/felipe/qt4 scriptbrasil-forum.py", line 12, in __init__ txtSobrenome = QlineEdit(self) NameError: global name 'QlineEdit' is not defined onde não vou mentir, não faço a menor ideia do que está causando o problema . . . Bom era só isso . . Ubuntu 14.04 - Python 2.7.6 - Python 3.4.3 Espero Ter Ajudado ! ! !
  18. Olá! Ao que parece, o erro está acontecendo porque voce esqueceu de colocar os itens mercurio e venus entre aspas: dicionario_planetas = { “mercurio” : 1, “venus” : 2 } Sendo assim o interpretador está interpretando que mercurio e/ou venus devem ser nomes de identificadores, mais provavelmente variaveis, mas como não existe uma variavel chamada mercurio ou venus dai o erro!
  19. Olá! Também sou iniciante em Python . . . Bom pelo que vi o mais apropriado para você agora, acho que poderia ser usando uma variável do tipo Dicionario: Nesse tipo de variável, você pode ter dentro dela vários ( pares ), separados por virgulas ( pares ) estes formados por uma chave e um valor correspondente a esta chave. Exemplo: dicionario_planetas = { “mercurio” : 1, “venus” : 2 } planeta = input ( “\nEntre com o Nome do Planeta: ” ) print ( dicionario_planetas [ planeta ] ) Se o código acima lhe ser útil . . . Tente estudar mais sobre dicionários em Python e criar variações do seu problema brincando com dicionarios de Python! Espero Ter Ajudado ! ! !
  20. Olá! Bom o principal problema para o seu código se perder, é o de que em uma matriz, quando você quer atribuir ou ler um valor especifico em uma matriz, você precisa especificar a posição da matriz sobre a qual se deseja operar. Sendo assim: puts ( "Digite um numero: " ); scanf ( "%d", v_matriz ); deve ser substituído por: puts ( "Digite um numero: " ); scanf ( "%d", &v_matriz [ 0 ] [ 2 ] ); - Sem contar que você se esqueceu do “ & ” para atribuir o endereço da sua variável! Bom por hora é só . . . veja se as dicas acima já lhe ajudam em algo. Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  21. Olá! Oi sou iniciante no mundo da Programação , e principalmente em Python, então me desculpem qualquer coisa que eu diga da errado . . . Se não me engano o que voce está tentando fazer se chama introspecção e ate onde sei existem duas funções principais que podem ser usadas para a tarefa: - dir() - help() Eu não entendi bem o que voce quer que seja mostrado, mas acredito que o que lhe disse acima deva ser algo bem proximo ao que voce deseja . . . Caso não seja exatamente o que voce deseja, tente postar algum exemplo do que voce quer que seja exibido, o mais detalhadamente possivel, para que nos dê uma luz . . . Ubuntu 14.04 Python 2.7.6 Python 3.4.3 Espero Ter Ajudado ! ! !
  22. Felipe222

    Função Phyton

    Olá! Olha sou inciante em programação, e principalmente em Python, então muito provavelmente vou dizer algo errado . . . Já me aconteceu algo parecido a algumas semanas, pela busca que fiz, o erro: unsupported operand type(s) for *: 'int' and 'NoneType' Parece estar sendo causado pelo uso da função print() na variável ( dias ), o que acho que esta acontecendo é que: - você declara uma variável chamada dias, e atribui a ela o seguinte comando: print ( str ( input ( "Digite o número de dias no hotel" ) ) ) - primeiro, essa linha vai fazer é chamar a função input(), para receber um valor introduzido pelo teclado, neste caso do tipo string, sendo assim o tipo da variável dias, assim que ela receber o valor de retorno da função input() vai ser do tipo string - segundo, ao vai ser receber o valor de retorno da função int(), a qual foi usada para converter o valor de string para o tipo inteiro, nesse momento o tipo da variável dias vai mudar do tipo ( string ) para o tipo ( int ) - terceiro e ultimo, a variável dias vai receber o valor de retorno da função print(), e esse é o seu problema, a função print() é uma função que não retorna nenhum valor, ou seja ela é um objeto cujo tipo é ( NoneType ), sendo assim neste momento o tipo da variável dias vai mudar do tipo ( inteiro ) para o tipo ( NoneType ), que não possui nenhum valor e é isso que que está causando a mensagem de erro: pois, quando você chama a sua função hotel(), passa para ela o valor da variável (dias) que tem como valor ( NoneType ), isso é completamente permitido, pela sintaxe da linguagem Python, mas quando você esta tenta realizar a operação de multiplicação, entre um valor inteiro e um valor do tipo NoneType, é retornado um erro pela tentativa de realizar uma operação que não é permitida ( suportada ) Ate onde pude estudar de Python você só precisa, mudar a linha para: dias = int ( input ( "Digite o número de dias no hotel" ) ) - alias você usou str() para a conversão, quando o apropriado seria int(), digo apropriado, pois, ela ate é passada corretamente para a sua função, mas quando o valor fosse ser exibido, o numero 3 seria impresso 140 vezes, isso é uma característica de Python, por isso o apropriado seria o valor ser do tipo int Bom por hora é só . . . Veja se as dicas acima lhe ajudam . . . Ubuntu 14.04 Python 3.4.3 Espero Ter Ajudado ! ! !
  23. Olá! Bom, aqui com o exemplo que você passou, com os valores do ( vetor ) e dos laços ( for )sendo alterados para ( 26 ) o programa retornou os seguintes valores: i: 0 qtd_venda: 0 dia_venda: 0 O dia de maior venda foi o 8, com a quantidade de 8999992 Ate ai tudo bem, o programa aparentemente está fazendo o que ele deveria fazer, pelo menos aqui, porem o programa ao final da execução reporta um ( erro - alerta - mensagem ): segmentation fault ( core dumped ) Process returned 139 ( 0 x 8b ) - Eu vou pesquisar mais sobre isso, porque não faço a mínima ideia do que pode estar causando essa mensagem ao final de execução do programa, fora isso o programa parece estar, OK . . . em um primeiro momento . . . - Se possível tente observar, se o seu Compilador ou se a sua IDE retornam qualquer mensagem de erro ou alerta, e se retornarem poste para o pessoal do fórum dar uma olhada, porque aqui com as suas especificações, o meu Compilador e a IDE não retornaram nada! - Tente também observar a janela na qual o programa é executado, tente verificar e se possivel postar qualquer mensagem que apareça no fim do programa, como mostrei que aconteceu comigo. - Além, disso, tente postar informações do seu computador, mais especificamente: O Compilador, a IDE e o Sistema Operacional que você está usando, e se possível qual a versão deles. Obs.: não acredito que faça alguma diferença no seu caso, entretanto, no seu laço ( for ) que exibe os dias e os valores, você deixou um underline _ logo apos o primeiro ( %d ) a não ser que ele tenha alguma funcionalidade que eu desconheça, eu recomendo retirá-lo . . . Atualizando: erro meu, a falha - segmentation fault ( core dumped ) foi causada, porque com o vetor dias possuindo apenas ( 26 ) posições, ao tentar atribuir um valor as posições seguintes dias [ 26 ] = 23; o sistema envia uma mensagem de falha de segmentação, ao tentar acessar uma posição de memoria não reservada ao programa, erro bobo da minha parte. Quanto ao que está causando o erro no seu programa por hora vou ficar devendo . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Ate logo ! ! !
  24. Olá! Sou inciante em C, mas acho que posso ajudar . . . Não sei se esse seu código é o certo, mas aqui ele não rodou legal não, e pelos seguintes fatores: - |48|warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]| - este alerta este lhe alertando para que o código de formatação %d espera um valor inteiro, enquanto que neste caso ( dia ) é um ponteiro, neste caso o ponteiro para o vetor ( dia ), sendo assim você vai ter de indicar o índice do vetor que você deseja acessar: printf ( "\n%d", dia [ i ] ); - |63|warning: comparison between pointer and integer [enabled by default]| - esse alerta também é causado pelo mesmo motivo, ele está dizendo que você está fazendo uma comparação direta entre um ponteiro e um inteiro: if ( dia > qtd_venda ) quando o correto seria fazer a comparação entre o inteiro e o valor armazenado no índice do ponteiro: if ( dia [ i ] > qtd_venda ) - |66|warning: assignment makes integer from pointer without a cast [enabled by default]| - esse alerta é similar ao do anterior, ele está dizendo que você esta tentando atribuir um ponteiro ( ou o suposto valor armazenado em seu índice ): qtd_venda = dia; onde o correto seria: qtd_venda = dia [ i ]; - |58|warning: ‘dia_venda’ is used uninitialized in this function [-Wuninitialized]| - aqui este alerta está lhe dizendo que você está usando uma variável, sem que a mesma tenha sido inicializada previamente com algum valor: int dia_venda; printf ( "dia_venda: %d\n\n\n", dia_venda ); é só iniciá-la com um valor para o alerta sumir! Bom com as alterações o código rodou apropriadamente aqui, pelo menos para o problema que você citou . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  25. Olá! Meu nome é Felipe, sou iniciante no mundo Linux e comecei a estudar Python 2.7.6 a pouco tempo quando me surgiu um problema: Há cerca de uns 2 dias atrás, eu estava usando o ambiente interativo só para praticar mesmo, quando tentei executar este pequeno código: - quando tentei comparar uma letra acentuada de uma variável o resultado estava dando sempre “ False ” >>> palavra = "página" >>> palavra [ 1 ] == "á" >>> False - quando dei um print do conteúdo da variável, ela foi exibida normalmente na tela. >>> palavra = "página" >>> print palavra >>> página - e quando tentei exibir a variável, para saber como o seu valor estava sendo armazenado, saiu isto: >>> palavra = “página” >>> palavra >>> 'p\xc3\xa1gina' Ate ai tudo bem, não me assustei, eu já havia ouvido falar que Python 2.7.6 tinha alguns detalhes relativos a codificação que poderiam causar este tipo de problema, na hora eu não me preocupei, deixei isso de lado por hora e fui terminar alguns outros testes que eu precisava fazer. Porem, ontem quando tentei buscar soluções para esse problema, eu basicamente não consegui resolvê-lo, eu busquei em tudo quanto é lugar informações que pudesse me ajudar, mas nada adiantou. O que eu encontrei principalmente dizia para alterar a codificação na qual o arquivo fonte seria salvo, introduzindo no código a codificação a ser usada: #!/usr/bin/python # -*- coding: latin-1 -*- # coding: latin-1 # -*- coding: utf-8 -*- # coding: utf-8 # -*- coding: iso-8859-1 -*- # coding: iso-8859-1 - eu já tentei usar quase que todas as codificações que pude encontrar em uma serie de combinações diferentes e nada, o problema permanece - eu tentei editar o fonte em diferentes editores de texto e tentando alterar a codificação em que o arquivo seria salvo, e também nada - eu entrei nas opções do IDLE do Python 2.7.6 e lá na opção Default Source Encoding – está marcada UTF-8, e mesmo alterando para outras o problema permanece - encontrei em alguns sites, sobre usar .enconde() e .decode() para codificar e decodificar, não sei exatamente para que isso funciona, foi mesmo o desespero batendo a porta, e sai isso: >>> palavra = "página" >>> palavra >>> 'p\xc3\xa1gina' >>> palavra.encode("utf-8") Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> palavra.encode("utf-8") UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128) mas, quando tento codificar a variável sem que está contenha um caractere especial, pelo menos não é apresentado nenhum erro >>> palavra = "Marcos" >>> palavra >>> 'Marcos' >>> palavra.encode("utf-8") >>> Bom por hora é isso, se alguém souber o que pode estar acontecendo estou aguardando . . . Observações: - o problema acontece tanto em modo interativo quanto no modo de edição - não tenho o Windows instalado para ver se o mesmo acontece na versão Windows, pois, alguns anos atrás quando arranhei um pouco de Python o mesmo problema aconteceu, mas a mudança de codificação resolveu o problema. O que não ocorre agora com o meu Linux - tentei usar diferentes IDEs – Ninja IDE, Wing IDE free, e nada também - baixei e instalei a IDLE do Python 3.4.3 mas aqui o problema dos acentos nem chega a ocorrer, muito provavelmente porque foi corrigido nesta versão do Python, eu ate poderia mudar para o Python 3, mas quero continuar um pouco mais no Python 2, antes de ir para o Python 3, além disso alguns programas e/ou bibliotecas ( principalmente a de Terceiros ) existentes no 2 podem não ser completamente compatíveis com o 3. - fora o que já mencionei acima, por ser iniciante tanto no mundo Linux quanto em programação ( Python ), não busquei ainda qualquer informação e/ou dicas sobre o sistema operacional que pudesse estar causando este problema, principalmente para não piorar a situação - se tiverem algum link, que acharem que possa me ajudar de alguma forma, seja para este problema em especial ou qualquer outro assunto, podem passar que tão logo quanto possível estarei dando uma olhada Ubuntu 14.04 LTS - 32 bit - Python 2.7.6 IDLE - Python 2.7.6 (default, Jun 22 2015, 18:00:18) [GCC 4.8.2] on linux2 Obrigado pela Atenção ! ! !
×
×
  • Criar Novo...