[Python 3.1]
我在python的输出中遇到负零; 它的创建举例如下:
k = 0.0
print(-k)
Run Code Online (Sandbox Code Playgroud)
输出将是-0.0.
但是,当我将-k0.0 比较为相等时,它会产生True.有什么区别0.0和-0.0(我不在乎他们可能有不同的内部表示.我只关心自己的程序中的行为)是否有任何隐藏的陷阱我应该知道的?
以下示例非常简单.我想用一个可以引发Exception的函数执行map().通过一个例子将更清楚:
number_list = range(-2,8)
def one_divide_by(n):
return 1/n
try:
for number, divide in zip(number_list, map(one_divide_by, number_list)):
print("%d : %f" % (number, divide))
except ZeroDivisionError:
# Execution is stopped. I want to continue mapping
pass
Run Code Online (Sandbox Code Playgroud)
当我执行此代码时,我得到:
-2 : -0.500000
-1 : -1.000000
Run Code Online (Sandbox Code Playgroud)
这是由于我的列表中的0.我不想删除这个0(因为在实际情况下我不知道我是否会得到Exception).你知道如何在异常后继续映射吗?
有没有更好的解决方案来编写一个while循环,如果参数为0则永远运行,或者如果参数是任意n大于0,则运行n次:
x = options.num # this is the argument (read by Optparse)
if x == 0:
check = lambda x: True
else:
check = lambda x: True if x > 0 else False
while check(x):
print("Hello World")
x -= 1
Run Code Online (Sandbox Code Playgroud)
你可以将lambda组合成:
check = lambda x: True if x > 0 or options.num == 0 else False
Run Code Online (Sandbox Code Playgroud)
但是你仍然需要倒数x,除非你在那之前放一个if.
我有一个关于Python的问题,你编写一个简单的脚本,打印从1到x的数字序列,其中x是无穷大.这意味着," x "可以是任何值.
例如,如果我们要打印一系列数字,它会将数字从1打印到"if"语句,表示停在数字"10"并且打印过程将停止.
在我当前的代码中,我正在使用这样的"for"循环:
for x in range(0,100):
print x
Run Code Online (Sandbox Code Playgroud)
我试图想象如何将"范围"中的"100"替换为其他可以让循环在不指定值的情况下连续打印序列的东西.任何帮助,将不胜感激.谢谢