2014-08-29 56 views
-3
def CalculateExchange(currency2,rate): 
    currencyamount1 = int(input("Enter the amount: ")) 
    currencyamount2 = (currencyamount1 * rate) 
    print(currencyamount2,currency2) 

乘以浮子时当乘以由用户输入的号码在程序得到早些时候汇率,而不是其输出的实数,它只是输出在输入的金额汇率形式,例如当汇率为5,输入的金额为6时,它只会输出6.6.6.6.6,我真的可以使用帮助,我知道这个问题可能看起来相当微不足道,而且很容易纠正,但我无法对其进行排序出。数学错误由整数在python

+4

大概每一个问题的不断声称浮点运算不起作用重复,但投票结束不清楚,因为你甚至没有告诉我们你看到了什么“错误”。 – geoffspear 2014-08-29 17:31:16

+0

或者输入错误的结果是必要的。有可能有一些情况下,python可以正确地做到这一点... – mgilson 2014-08-29 17:31:54

+2

你乘以一个整数* *字符串;某处,您未能转换您的输入。你显示的代码工作正常,这或多或少是完全无益的。阅读http://stackoverflow.com/help/mcve。而你的描述是不正确的; 'rate'必须是字符串,因为此函数*中的输入*被转换。 – jonrsharpe 2014-08-29 17:46:09

回答

1

最简单的方法来解决这样的错误是投你的INT回一个浮点乘法

def CalculateExchange(currency2,rate): 
    currencyamount1 = int(input("Enter the amount: ")) 
    currencyamount2 = (float(currencyamount1) * float(rate)) 
    print(currencyamount2,currency2) 
+0

非常感谢你的帮助,我不是故意在没有解释的背后发表这个问题,我不小心点击了帖子,并试图通过重新张贴解释,但它说我不能发布更多每九十分钟一个问题。 – Tom1998 2014-08-29 17:43:32

+1

@ Tom1998考虑到输出是'6.6.6.6.6.'',这听起来像'rate'是一个字符串。当你用数字“5”乘以字符串“6.”时,你会得到该字符串连续重复五次。这个答案将通过首先将字符串转换为浮点数来解决您的问题。 – TheSoundDefense 2014-08-29 17:51:01

-3
currencyamount2 = float(currencyamount1 * rate) 
1

在Python 2中之前,该功能input对输入字符串的eval

Python 2.7.7 (default, Jun 14 2014, 23:12:13) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> x=input('Enter x: ') 
Enter x: 2 
>>> x 
2 
>>> type(x) 
<type 'int'> 
>>> x*5 
10 

和浮子:

>>> x=input('Enter x: ') 
Enter x: 2.2 
>>> type(x) 
<type 'float'> 
>>> x*5 
11.0 

由于它被广泛认为是不明智采取任意代码从用户在应用程序中,此行为已Python 3的

下的Python 3下改变,input总是返回一个字符串:

Python 3.4.1 (default, May 19 2014, 13:10:29) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> x=input('Enter x: ') 
Enter x: 2. 
>>> type(x) 
<class 'str'> 

哪解释你的结果:

>>> x*5 
'2.2.2.2.2.' 

如果你想安全有类似的功能在Python 3,你可以在呼叫包inputast.literal_eval

>>> from ast import literal_eval 
>>> x=literal_eval(input('Enter x: ')) 
Enter x: 2.2 
>>> x 
2.2 
>>> type(x) 
<class 'float'> 

或者,仅仅是用户输入转换为所需的数据类型与int(x)float(x)