0

I'm trying to compare 2 elements : one is a user input and the other is an element from a list. The fact is that when the user enter a value that is in the list, the program print "Ok". But since there's two type of element in my list (integer and string), the user can only compare his value with every string of the list...

list = ["test", "testOne", 5, 10]
continuer = True
while continuer:
 word = input("Enter a word : ")
 for elements in list:
 if word in list:
 print("Ok")
 break
 else:
 print("Not ok")
 break

I really need these numbers to be integers, can you give me some advices ? Thanks !

asked Feb 28, 2021 at 13:39

6 Answers 6

1

You can add something like this:

word = input("Enter a word : ")
try:
 word = int(word)
except ValueError:
 print("Values is not int")
answered Feb 28, 2021 at 13:43
Sign up to request clarification or add additional context in comments.

Comments

1
  • Avoid using list as a variable name
  • Use string data in your list
  • Use in to check element presence in your list

Code:

lst = ['test', 'testOne', '5', '10']
word = input('Enter a word : ')
if word in lst:
 print('OK')
else:
 print('Not OK')
answered Feb 28, 2021 at 13:46

Comments

0

To check user input value for each of the elements from a list containing both String and Integer type data, we can use a try-except block.

  • At first, we will check if the user input and list item contain integer data in a try block. If the data matches, we will print Ok to the user.
  • If the above try block throws an exception, we will verify if both values are matched. If the data matches, we will print Ok to the user.

If none of the above cases are affirmative for all the items on the list, we will print Not ok to the user.

data = ["test", "testOne", 5, 10]
while True:
 word = input("Enter a word : ")
 if word == "exit":
 break
 word_found = False
 for element in data:
 try:
 if int(word) == int(element):
 word_found = True
 break
 except ValueError:
 if word == element:
 word_found = True
 break
 if word_found:
 print("Ok")
 else:
 print("Not ok")

Output:

Enter a word : Shovon
Not ok
Enter a word : test
Ok
Enter a word : 34
Not ok
Enter a word : 5
Ok
Enter a word : Ahmedur
Not ok
Enter a word : testOne
Ok
Enter a word : exit
answered Feb 28, 2021 at 14:01

Comments

0
  1. You don't need to iterate through the list using for loop as you can check existence of an element using "in" operator So
 if word in list:
 print("OK")

is sufficient.

  1. If you want to ensure only integer is entered, just validate the user input like int(word)
answered Feb 28, 2021 at 14:04

Comments

0

Thanks for your answer guys ! I tried it in another way

list = ["test", "testOne", 5, 10]
continuer = True
def safe_cast(val, to_type, default=None):
 try:
 return to_type(val)
 except (ValueError, TypeError):
 return default
while continuer:
 word = input("Enter a word : ")
 for element in list:
 if isinstance(element, str) and element == word:
 print("Ok")
 break
 elif isinstance(element, int) and safe_cast(word, int, 0) == element:
 print("ok")
 break

And it worked well ! Sorry for the inconvenience

answered Feb 28, 2021 at 14:12

Comments

0

You can try this

 list = ["test", "testOne", 5, 10]
 continuer = True
 getlist1=str(list) #Converting all the elements in list to string
 while continuer:
 word = input("Enter a word : ") 
 for elements in list:
 if ((word) in (getlist1)):
 print("Ok")
 break
 else:
 print("Not ok")
 break

Output: Enter a word : 5

Ok

Enter a word : 10

Ok

Enter a word : test

Ok

Enter a word : testOne

Ok

Enter a word : hello

Not ok

answered Feb 28, 2021 at 15:57

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.