//Python 的"整数除法"运算符让我感到惊讶,今天:
>>> math.floor(11/1.1)
10.0
>>> 11//1.1
9.0
Run Code Online (Sandbox Code Playgroud)
该文档读取"x和y"的"(浮动)商".那么,为什么math.floor(11/1.1)等于10,但是11 // 1.1等于9?
我使用以下代码在表示概率分布的数组上返回香农熵。
A = np.random.randint(10, size=10)
pA = A / A.sum()
Shannon2 = -np.sum(pA*np.log2(pA))
Run Code Online (Sandbox Code Playgroud)
如果数组不包含任何零,则此方法可以正常工作。
例子:
Input: [2 3 3 3 2 1 5 3 3 4]
Output: 3.2240472715
Run Code Online (Sandbox Code Playgroud)
然而,如果数组确实包含零,香农熵会产生 nan
例子:
Input:[7 6 6 8 8 2 8 3 0 7]
Output: nan
Run Code Online (Sandbox Code Playgroud)
我确实收到两个运行时警告:
1) RuntimeWarning: log2 中遇到除零
2) RuntimeWarning: 乘法中遇到无效值
有没有办法改变代码以包含零?我只是不确定完全删除它们是否会影响结果。具体来说,如果由于分布频率较高而导致变化较大。
为什么此示例中的内置运算符4**(1/2)(这是一个平方根运算)返回结果1而不是2应该预期的?如果不会返回一个可接受的结果,它应该会出错,但Python继续工作而没有任何崩溃.至少在Python 2.7.4 64位分发中.
它也会在数学函数中发生,pow(4,1/2)它返回1时没有错误.
相反,在执行4**(0.5)此操作时返回的结果2.0是正确的,尽管它混合了整数和浮点数而没有任何警告.pow也是如此.
对此行为有何解释?他们会被视为错误吗?
我刚开始学习python,我写了这三行代码:
points = 49
total = points / 50 * 500 + 40
print "omg wtf ", total
Run Code Online (Sandbox Code Playgroud)
而且我预计输出会像530一样,但相反,无论我做什么,我都会得到40.我尝试将total初始化为0,将赋值转换为int,我抛出一个括号括号,但没有任何效果.我很困惑......有人可以帮我/告诉我到底发生了什么事吗?
我想在Python中打印一个double.但它不起作用,我不知道为什么.
我的代码:
test = 3000 / (1500 * 2000)
print str(test)
Run Code Online (Sandbox Code Playgroud)
如果我做以下事情,我总是得到一个0而不是一个0.001:
test = 3000 / (1500 * 2000)
print '%.10f' % test
Run Code Online (Sandbox Code Playgroud)
我得到了一个0.000000000而不是0.001.
我怎么告诉Python这应该是双倍的?
我正在尝试将C++代码转换为python但我被卡住了
原始的C++代码
int main(void)
{
int levels = 40;
int xp_for_first_level = 1000;
int xp_for_last_level = 1000000;
double B = log((double)xp_for_last_level / xp_for_first_level) / (levels - 1);
double A = (double)xp_for_first_level / (exp(B) - 1.0);
for (int i = 1; i <= levels; i++)
{
int old_xp = round(A * exp(B * (i - 1)));
int new_xp = round(A * exp(B * i));
std::cout << i << " " << (new_xp - old_xp) << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
python代码
import math …Run Code Online (Sandbox Code Playgroud) print 1/50
Run Code Online (Sandbox Code Playgroud)
结果为舍入零:0
print float(1/50)
Run Code Online (Sandbox Code Playgroud)
再次返回零但是作为一个浮点数.
我应该使用什么语法来仅使用stock模块获得正确的结果(0.02).
好吧所以我几天前几乎没有上课,对我来说一切都是新的.我想要做的是创造一些东西,将摄氏温度转换为华氏温度和开尔文,我已经做到了,虽然它有点草率.
无论如何我的问题是累加器.当我得到所有摄氏度的总和时,我得到231当它应该是210.它增加了21我从"摄氏度<21.
任何人都可以帮我弄清楚如何获得正确的数字:/?谢谢!
print ("Celsius Conversion Chart")
sum = 0
sum1 = 0
sum2 = 0
celsius = 0
while celsius < 21:
print (str(celsius)+'°C ' + ' = ' + str(celsius*9/5+32)+'°F ' + ' = ' + str(celsius +273.15)+'°K')
celsius += 1
sum = sum + celsius
sum1 = sum1 + (celsius * 9/5 + 32)
sum2= sum2 + (celsius + 273.15)
print (str(sum1)+'°F')
print (str(sum2)+'°K')
print (str(sum)+'°C')
if celsius < 100:
print ("WARNING: temperature is too high")
Run Code Online (Sandbox Code Playgroud) 我正在练习 C++,但发现了一些问题:
#include <iostream>
#include <string>
using namespace std;
int main() {
int a = 2;
{
cout << a;
cout << "\n";
float a = a / 2;
cout << "a= a/2 = ";
cout << a;
}
cout << "\n";
a = 2;
{
cout << a;
cout << "\n";
float b = a / 2;
cout << "b= a/2 = ";
cout << b;
}
}
Run Code Online (Sandbox Code Playgroud)
这个回报:
2
a= a/2 = 0
2
b= a/2 = 1 …Run Code Online (Sandbox Code Playgroud) python ×9
python-2.x ×2
python-3.x ×2
c++ ×1
entropy ×1
floor ×1
loops ×1
math ×1
pandas ×1
python-2.7 ×1
while-loop ×1