Построили калькулятор, но не знаете, почему я не получу ответ? - PullRequest
0 голосов
/ 01 апреля 2020

Операции

Сложение

def add(x, y):
    return x + y

Вычитание

def subtract(x, y):
    return x - y

Умножение

def multiply(x, y):
    return x * y

Отдел

def divide(x, y):
    return x /y

Main

print("Choose your math path!")
print("1.Add  +")
print("2.Subtract - ")
print("3.Multiply  *")
print("4.Divison /") 

calculate = int(input("Addition through division - 1/ 2/ 3/ 4:"))

num = int(input("Enter first number here please:"))

num2 = int(input("Enter second number here please:"))

Я думаю, что если вычислить == 1, не так ли распечатать и добавить мои номера?

if calculate == “1”:
    print(num, num2,add(num, num2))
elif calculate == "2":
    print(num, num2, subtract(num, num2))
elif calculate == "3":
    print(num, num2, multiply(num, num2))
elif calculate == "4":
    print(num, num2, divide(num, num2))
else:
    print("Wrong choice give it another go!")

1 Ответ

1 голос
/ 01 апреля 2020

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())), только вторая форма будет работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...