0

Porque em python o valor inserido pelo programador ex a =7 é igual a int e a =input("") e igual a uma string

Eu preciso fazer um programa que reconheça que o tipo do valor inserido pelo usuario ex(str,int ou float) Programa: print("descobrir se o valor inserido pelo usuario é um numero inteiro um decimal ou uma string") #porque um valor inserido pelo programador tem um tipo diferente do valor inserido pelo usuario ex: a = 1 print(type(a),"é inteiro") a = 1.0 print(type(a), "é float") a = "s" print(type(a)," é uma string") valor = input("coloque qualquer valor") #obs qualquer valor que o usuario coloca vira uma string #dai tentei resolver assim if valor in "." and "1" or "2" or "3" or "4" or "5" or "6" or "7"or "8" or "9" or "0": valor = float print("este valor é decimal",valor) elif valor in "1" or "2" or "3" or"4" or "5" or "6" or "9" or "0": valor = int print ("esse valor é um numero inteiro", valor) else: print("esse valor é uma string") Porem nao deu certo o programa agora reconhece qualquer valor como decimal letras e tudo entao alguem teria uma ideia para resolver o problema

24th Apr 2019, 12:14 AM
Daniel Jesus
Daniel Jesus - avatar
8 Respostas
+ 1
Usando if/elif/else solo se me ocurren soluciones complejas. Las más simples usan try/except. try: valor = int(valor) print("Int") print(valor) except: try: valor = float(valor) print("Float") print(valor) except: print("No es Int ni Float")
25th Apr 2019, 12:34 PM
Diego
Diego - avatar
+ 3
if any(str(i) in valor for i in range(10)): if "." in valor: valor = float(valor) print("Float") else: valor = int(valor) print("Int") print(valor) else: print("No es Int ni Float")
24th Apr 2019, 4:02 AM
Diego
Diego - avatar
+ 1
No hablo portugués, pero se asemeja bastante al español. Por defecto, input() regresa un valor de tipo str. Puedes convertir dicho valor a int o a float con las funciones int() y float(), respectivamente. https://www.sololearn.com/learn/JUMP_LINK__&&__Python__&&__JUMP_LINK/2492/
24th Apr 2019, 2:04 AM
Diego
Diego - avatar
+ 1
Obrigado Diego o problema é que eu converti para os valores porem quando usoo comando IF para definir uma condiçao o programa nao reconhece a condiçao e imprimi qualquer valor que eu coloco como decimal(FLOAT) eu tentei colocar um "." Pra diferenciar FLOAT de INT mais como no INT tambem tem numeros e no FLOAT tambem o programa nao reconheceu o que eu preciso mesmo é um jeito de diferenciar os tipos FLOAT de INT atraves do comando IF mais eu ainda nao sei como fazer isso e muito obrigado pelo comentario
24th Apr 2019, 3:42 AM
Daniel Jesus
Daniel Jesus - avatar
+ 1
Hum cara eu tentei aqui mais deu o mesmo problema sera que da pra voce postar o programa inteiro talvez rode aqui e eu consiga entender
24th Apr 2019, 10:43 PM
Daniel Jesus
Daniel Jesus - avatar
+ 1
¿Cuál es el problema? ¿Te aparece algún error?
24th Apr 2019, 10:52 PM
Diego
Diego - avatar
+ 1
Nao oh problema é que todos os valores qye eu coloco a resposta do programa é sempre "esse valor é um float" mais ou coloca caracteres e numeros inteiros e o programa só responde float sendo que o "." nao esta armazenado na variavel valor
25th Apr 2019, 1:11 AM
Daniel Jesus
Daniel Jesus - avatar
+ 1
Oh muito obrigado agora o programa reconheceu tudo melhor resposta resolvi o problema muito obrigado
25th Apr 2019, 1:09 PM
Daniel Jesus
Daniel Jesus - avatar