Как отобразить вывод функции в python? - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь сделать простую программу конвертации, но вывод продолжает выходить либо странно, либо вообще ничего. Как я могу это исправить? Вот мой код.

#crypto = [Bitcoin, Ethereum, XRP, Litecoin]
bitcoin = [1, 40.19, 38284.22, 168.73]
ethereum = [.025, 1, 951.99, 4.20]
xrp = [.000026, .001, 1, .003]
litecoin = [.0058, .231, 223.81, 1]

def crypto2Crypto(x,y,w):
    if(x == "BE"):
        w =+ (y * bitcoin[1])
    if(x == "XL"):
        y * xrp[3]
    if(x == "EB"):
        y * ethereum[0]
    if(x == "LX"):
        y * litecoin[2]

def main():
    print("Welcome to the Cryptocurrency exchange!")
    conversion = input('"What will you be converting today? B = Bitcoin, E = Ethereum, X = XRP, Litecoin = L. Please give an exchange with the following syntax crypto1crypto2, ex. type "BE" for Bitcoin to Ethereum."')
    amountOfCurrency = float(input("How much do you have of " + conversion[0] + " ?"))
    w = crypto2Crypto(conversion,amountOfCurrency,0)
    print(w)
main()

Ответы [ 2 ]

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

Три проблемы

  1. Операторы =+ ( yes, множественное число ) не совпадают с операторами +=.

    • Назначение (=)

      >>> a = 2
      >>> a =+ 1
      >>> a
      1
      

      Почему? Потому что a =+ 1 становится a = +1a = 1.

    • Расширенное назначение (+=)

      >>> a = 2
      >>> a += 1
      >>> a
      3
      

      Почему? Потому что a += 1 становится a = a + 1a = 2 + 1a = 3. Подробнее о расширенных назначениях здесь .

  2. Если вы не вернете какое-либо значение из функции самостоятельно, Python автоматически сделает это возврат None. Итак, вы должны добавить оператор return к crypto2Crypto. Это было показано в решении в следующем разделе.

  3. Двоичные числа с плавающей запятой (Python float, тот, который вы использовали в main для получения значение для amountOfCurrency) и их арифметическое c не являются точными. Подробнее читайте в Python Tutorial's раздел 15 .

Решение

Измените функцию crypto2Crypto на:

def crypto2Crypto(x, y, w):
    if x == "BE":
        w += (y * bitcoin[1])
    if x == "XL":
        w += (y * xrp[3])
    if x == "EB":
        w += (y * ethereum[0])
    if x == "LX":
        w += (y * litecoin[2])

    return w

Что касается странности с плавающей точкой, вы можете использовать встроенную функцию round для округления до необходимого количества десятичных знаков.

0 голосов
/ 24 апреля 2020

Добавьте это в конец функции crypto2Crypto

return w 

Не уверен, что w - это то, что вам нужно, но верните то, что вам нужно

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