Can´t convert string to integer in python - python

I´m getting this error while trying to convert string to integer:
Traceback (most recent call last):
File "main.py", line 9, in <module>
n = int(input())
ValueError: invalid literal for int() with base 10: 'python3 main.py'
This is the code:
n = int(input())
if num>0:
cantPos = cantPos+1

You're probably not realizing that the interpreter is prompting you for input. The input() function takes a string argument which will be the prompt. The common pattern to do here is something like:
n = None
while n is None:
try:
n = int(input('Please enter an integer: '))
except ValueError:
print('That was not an integer!')

Related

TypeError: not all arguments converted during string formatting.(Armstrong number)

n=input("enter the number: ")
num=n
digit,sum=0,0
length=len(str(n))
for i in range(length):
digit=int(num%10)
num=num/10
sum+=pow(digit,length)
if sum==n:
print("armstrong")
else:
print("Not armstrong")
when I run this code, it show error in line 6:
Traceback (most recent call last):
File "<string>", line 6, in <module>
TypeError: not all arguments converted during string formatting>
the question is find the number is Armstrong or not.
You need to first convert the string into an integer before performing any mathematical operation.
Here is the revised code.
n=input("enter the number: ")
num=n
digit,sum=0,0
length=len(str(n))
for i in range(length):
digit=int(num)%10
num=int(num)/10
sum+=pow(digit,length)
if sum==n:
print("armstrong")
else:
print("Not armstrong")
Before using the num variable convert it to an int to avoid any error.

Python exception handler not working and I can't see why

I'm getting points for the ZeroDivisionError exception but not the ValueError exception....not sure what's wrong with my exception statement. It looks correct to my noob eyes. Any help is appreciated.
LAB: Simple integer division - multiple exception handlers
Write a program that reads integers user_num and div_num as input, and
output the quotient (user_num divided by div_num). Use a try block to
perform all the statements. Use an except block to catch any
ZeroDivisionError and output an exception message. Use another except
block to catch any ValueError caused by invalid input and output an
exception message.
Note: ZeroDivisionError is thrown when a division by zero happens.
ValueError is thrown when a user enters a value of different data type
than what is defined in the program. Do not include code to throw any
exception in the program.
Ex: If the input of the program is:
15
3
the output of the program is:
5
Ex: If the input of the program is:
10
0
the output of the program is:
Zero Division Exception: integer division or modulo by zero
Ex: If the input of the program is:
15.5
5
the output of the program is:
Input Exception: invalid literal for int() with base 10: '15.5'
My code:
user_num = int(input())
div_num = int(input())
if isinstance(user_num,int) == False:
problem = user_num
elif isinstance(div_num,int) == False:
problem = div_num
try:
result = user_num/div_num
print(int(result))
except ZeroDivisionError:
print("Zero Division Exception: integer division or modulo by zero")
except ValueError:
print("Input Exception: invalid literal for int() with base 10: '{}'".format(problem))
Enter program input (optional)
15.5
5
Program errors displayed here
Traceback (most recent call last):
File "main.py", line 1, in <module>
user_num = int(input())
ValueError: invalid literal for int() with base 10: '15.5'
1: Compare output 2 / 2
Input
15
3
Your output
5
2: Compare output 2 / 2
Input
15
0
Your output
Zero Division Exception: integer division or modulo by zero
3: Compare output 0 / 2
Traceback (most recent call last):
File "main.py", line 1, in <module>
user_num = int(input())
ValueError: invalid literal for int() with base 10: '15.5'
Input
15.5
5
Your output
Your program produced no output
Expected output
Input Exception: invalid literal for int() with base 10: '15.5'
4: Compare output 0 / 1
Traceback (most recent call last):
File "main.py", line 2, in <module>
div_num = int(input())
ValueError: invalid literal for int() with base 10: '0.5'
Input
25
0.5
Your output
Your program produced no output
Expected output
Input Exception: invalid literal for int() with base 10: '0.5'
5: Compare output 0 / 1
Traceback (most recent call last):
File "main.py", line 1, in <module>
user_num = int(input())
ValueError: invalid literal for int() with base 10: 'twenty'
Input
twenty
5
Your output
Your program produced no output
Expected output
Input Exception: invalid literal for int() with base 10: 'twenty'
6: Compare output 1 / 1
Input
0
4
Your output
0
7: Compare output 1 / 1
Input
15
0
Your output
Zero Division Exception: integer division or modulo by zero
user_num = int(input()) and div_num = int(input()) need to go in a try/except ValueError block because the call to int() is where the error can occur.
You can put the whole thing in try/except and catch multiple exceptions:
try:
user_num = int(input())
div_num = int(input())
result = user_num/div_num
print(int(result))
except ValueError as e1:
print(e1)
except ZeroDivisionError as e2:
print(e2)
Or even:
try:
user_num = int(input())
div_num = int(input())
result = user_num/div_num
print(int(result))
except (ValueError, ZeroDivisionError) as e:
print(e)

How do I input a series of numbers (separated by comma) using system argument in command prompt (Python)?

I just started learning Python. I want to input a series of numbers that are separated by a comma in command prompt.
For example, I want to input this in the command prompt:
C:\AOA1001\Folder1\Testing> python Testing.py 1,2,3,4,5
I get this error in command prompt:
C:\Users\belle\Folder1\Testing> Testing.py 1,2,3,4,5
Traceback (most recent call last):
File "C:\Users\belle\Folder1\Testing> Testing.py", line 4, in <module>
n = int(sys.argv[1])
ValueError: invalid literal for int() with base 10: '1,2,3,4,5'
This is my code:
import sys
try:
n = int(sys.argv[1])
print(n)
except IndexError:
print("Invalid input.")
I am planning to create a list which is (n = int(sys.agrv[1]) in this case.
str_numbers = sys.argv[1].split(',')
numbers = list(map(lambda x: int(x), str_numbers))
print(numbers)
you can put them in a list:
import sys
try:
lst = [int(s) for s in sys.argv[1].split(',')]
print(lst)
except ValueError:
print("Invalid input.")
You can convert it into a list:
import sys
try:
n = map(int, sys.argv[1].split(','))
print(*list(n))
except IndexError:
print('Invalid Input')
And, then in the command line:
python3 .\Testing.py 1,2,3,4,5
>>> 1 2 3 4 5

How to get input where a newline exists in Python [duplicate]

This question already has answers here:
Asking the user for input until they give a valid response
(22 answers)
Closed 3 years ago.
I want to receive input where there is a newline in Python.
I want to input a number and I have implemented the following code, but I get the following error
Code
string = []
while True:
input_str = int(input(">"))
if input_str == '':
break
else:
string.append(input_str)
Error
ValueError: invalid literal for int() with base 10: ''
line error
>1
>2
>3
>
Traceback (most recent call last):
File "2750.py", line 4, in <module>
input_str = int(input(">"))
ValueError: invalid literal for int() with base 10: ''
try isdigit function of string, see below example:
string = []
while True:
input_str = input(">")
if input_str.isdigit():
input_str = int(input_str)
if input_str == '':
break
else:
string.append(input_str)
I would suggest a try-except approach:
strList = []
while True:
try:
strList.append(int(input('Enter the number > ')))
except ValueError:
print ('Invalid number. Please try again!')
break
print(strList)
OUTPUT:
Enter the number > 1
Enter the number > 2
Enter the number > 3
Enter the number >
Invalid number. Please try again!
[1, 2, 3]

Is a there exception if you ask for a integer and do not get an integer?

I am trying to make a program where you enter an integer, but if you do not enter an integer, handle it with an exception. However I can not find any exceptions for integers on the internet.
### TECH SUPPORT ###
while True:
try:
i = int(input('Enter an INTEGER: '))
except [INT EXCEPTION HERE]:
print("You must enter an INTEGER, not any other format of data")
-
Does anyone know an exception if you ask for an integer input and do not get an integer?
You can always try it in interpreter to see which error gets raised:
>>> int('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'a'
Now that you know that it is ValueError, just change your code:
while True:
try:
i = int(input('Enter an INTEGER: '))
except ValueError:
print("You must enter an INTEGER, not any other format of data")
else:
break # to exit the while loop
Yes, use ValueError
More about python try except. Go through the builtin exceptions list, which will help you.
Also, when an builtin exception is raised like so -
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'a'
You can see
ValueError: invalid literal for int() with base 10: 'a'
So python raisesValueError and this is the exception you need to use.
You can use "ValueError" exception
while True:
try:
i = int(input('Enter an INTEGER: '))
except ValueError:
print("You must enter an INTEGER, not any other format of data")

Categories

Resources