calculate
- это int
, но вы проверяете, равно ли оно str
. int
(сокращение от целого числа) - это число, а str
(сокращение от строки) - это фрагмент текста с кавычками вокруг него.
Функция input()
возвращает значение str
.
Это означает, что если вы используете x = input()
и пользователь вводит 1
, x
будет установлен на '1'
(a str
), а не 1
, (int
).
>>> x = input('Enter a number: ')
Enter a number: 1
>>> x
'1'
>>> type(x)
<class 'str'>
Функция int()
возвращает int
.
Если вы передадите str
в функцию int()
, она попытается преобразовать его в int
и вернуть его .
>>> x = '1'
>>> x
'1'
>>> type(x)
<class 'str'>
>>> int(x)
1
>>> type(int(x))
<class 'int'>
Если вы хотите получить int
от пользователя, вы можете использовать int(input())
.
input()
получает str
от пользователя и int()
конвертирует int
.
>>> x = int(input('Enter a number: ')
Enter a number: 5
>>> x
5
A str
не может быть равным int
, потому что это два совершенно разных типа. Для компьютера 1
не то же самое, что '1'
, точно так же, как 12
не то же самое, что 'abc'
.
Используя int(input)
, вы устанавливаете calculate
равно int
:
calculate = int(input("Addition through division - 1/ 2/ 3/ 4:"))
При проверке того, что равно calculate
, вы сравниваете его с str
. Помните: str
- это фрагмент текста с кавычками вокруг него.
Этот параметр проверяет, является ли calculate
фрагментом текста (a str
), который говорит '1'
:
if calculate == '1':
Это проверяет, является ли calculate
числом (int
), равным 1
:
if calculate == 1:
Поскольку вы устанавливаете calculate
в int
(с помощью int(input())
), только вторая форма будет работать правильно.