求助,我编了如下python脚本,为什么老是没结果呢?

sh/bash/dash/ksh/zsh等Shell脚本
回复
悬崖勒马2011
帖子: 90
注册时间: 2013-01-23 14:27
系统: ubuntu 12.04
送出感谢: 0
接收感谢: 0

求助,我编了如下python脚本,为什么老是没结果呢?

#1

帖子 悬崖勒马2011 » 2013-03-12 15:14

#!/bin/env python

f = open("0.ASC")
for line in f.readlines():
columns = line.strip().split()
num1 = float(columns[1])
num2 = float(columns[2])
if ((num1-6)**2+(num2-18)**2)**(0.5)<0.5:
print line,
f.close()

----------------------------------------
下面是0.ASC的内容
1 6.1 18.4
2 7.1 19.4

谢谢!
头像
oneleaf
论坛管理员
帖子: 10237
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04
送出感谢: 7 次
接收感谢: 107 次

Re: 求助,我编了如下python脚本,为什么老是没结果呢?

#2

帖子 oneleaf » 2013-03-12 15:19

代码无误,需要去检查文件。

代码: 全选

>>> a=[[1,6.1,18.4],[2,7.1,19.4]]
>>> for columns in a:
...     num1 = float(columns[1])
...     num2 = float(columns[2])
...     if ((num1-6)**2+(num2-18)**2)**(0.5)<0.5:
...             print columns
... 
[1, 6.0999999999999996, 18.399999999999999]
悬崖勒马2011
帖子: 90
注册时间: 2013-01-23 14:27
系统: ubuntu 12.04
送出感谢: 0
接收感谢: 0

Re: 求助,我编了如下python脚本,为什么老是没结果呢?

#3

帖子 悬崖勒马2011 » 2013-03-12 15:27

oneleaf 写了:代码无误,需要去检查文件。

代码: 全选

>>> a=[[1,6.1,18.4],[2,7.1,19.4]]
>>> for columns in a:
...     num1 = float(columns[1])
...     num2 = float(columns[2])
...     if ((num1-6)**2+(num2-18)**2)**(0.5)<0.5:
...             print columns
... 
[1, 6.0999999999999996, 18.399999999999999]
文件很简单,也没问题啊?
附件
0.txt
(24 Bytes) 下载 38 次
悬崖勒马2011
帖子: 90
注册时间: 2013-01-23 14:27
系统: ubuntu 12.04
送出感谢: 0
接收感谢: 0

Re: 求助,我编了如下python脚本,为什么老是没结果呢?

#4

帖子 悬崖勒马2011 » 2013-03-12 17:07

大家下载下来后,把我写的脚本中改为“1.txt",用我的脚本看能运行吗?帮忙找错!
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30
送出感谢: 2 次
接收感谢: 31 次

Re: 求助,我编了如下python脚本,为什么老是没结果呢?

#5

帖子 aerofox » 2013-03-12 21:25

没有问题,运行结果:

代码: 全选

1	6.1	18.4
头像
icejoywoo
帖子: 16
注册时间: 2009-06-01 21:21
送出感谢: 0
接收感谢: 0

Re: 求助,我编了如下python脚本,为什么老是没结果呢?

#6

帖子 icejoywoo » 2013-03-12 23:10

代码: 全选

#!/bin/env python

import math
f = open("0.txt")
for line in f.readlines():
	columns = line.strip().split()
	num1 = float(columns[1])
	num2 = float(columns[2])
	if math.sqrt((num1-6)**2+(num2-18)**2) < 0.5:
		print line,
f.close()
浮点数计算会出现误差问题, 看这种误差是否满足你的要求吧
输入文本数据如果有格式问题, catch异常进行处理吧

误差可以考虑使用这种方法

代码: 全选

#!/bin/env python

import math
f = open("0.txt")
for line in f.readlines():
	columns = line.strip().split()
	num1 = float(columns[1])
	num2 = float(columns[2])
	if math.sqrt(((num1-6)**2+(num2-18)**2) * 10000) < 0.5 * 100:
		print line,
f.close()
chrome+Proxy Switchy!+SogouProxy,突破教育网的网络限制
悬崖勒马2011
帖子: 90
注册时间: 2013-01-23 14:27
系统: ubuntu 12.04
送出感谢: 0
接收感谢: 0

Re: 求助,我编了如下python脚本,为什么老是没结果呢?

#7

帖子 悬崖勒马2011 » 2013-03-13 12:44

icejoywoo 写了:

代码: 全选

#!/bin/env python

import math
f = open("0.txt")
for line in f.readlines():
	columns = line.strip().split()
	num1 = float(columns[1])
	num2 = float(columns[2])
	if math.sqrt((num1-6)**2+(num2-18)**2) < 0.5:
		print line,
f.close()
浮点数计算会出现误差问题, 看这种误差是否满足你的要求吧
输入文本数据如果有格式问题, catch异常进行处理吧

误差可以考虑使用这种方法

代码: 全选

#!/bin/env python

import math
f = open("0.txt")
for line in f.readlines():
	columns = line.strip().split()
	num1 = float(columns[1])
	num2 = float(columns[2])
	if math.sqrt(((num1-6)**2+(num2-18)**2) * 10000) < 0.5 * 100:
		print line,
f.close()
谢啦!
还有一个问题,就是加入1.txt的头几行想加以#开头的标注,这时python就人不出来标注,就会出现错误。该怎么办呢?谢谢
头像
icejoywoo
帖子: 16
注册时间: 2009-06-01 21:21
送出感谢: 0
接收感谢: 0

Re: 求助,我编了如下python脚本,为什么老是没结果呢?

#8

帖子 icejoywoo » 2013-03-13 20:16

一个问题开了两个贴, 只知道提问题, 自己都不去看看

代码: 全选

#!/bin/env python
# encoding: utf-8

# 这是个测试注释
print "囗囗囗囗 U, dude! Son of 囗囗囗囗囗!"
附件
hello.py
示例程序
(89 Bytes) 下载 39 次
chrome+Proxy Switchy!+SogouProxy,突破教育网的网络限制
悬崖勒马2011
帖子: 90
注册时间: 2013-01-23 14:27
系统: ubuntu 12.04
送出感谢: 0
接收感谢: 0

Re: 求助,我编了如下python脚本,为什么老是没结果呢?

#9

帖子 悬崖勒马2011 » 2013-03-14 10:53

icejoywoo 写了:一个问题开了两个贴, 只知道提问题, 自己都不去看看

代码: 全选

#!/bin/env python
# encoding: utf-8

# 这是个测试注释
print "囗囗囗囗 U, dude! Son of 囗囗囗囗囗!"

好像你理解错了。我的问题是编了一个.py,去处理.txt中的数据,但是由于.txt中有#开头的批注,阻碍了.py的运行,在不删除批注的情况下该如何使.py忽略.txt中的批注呢?谢谢
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30
送出感谢: 2 次
接收感谢: 31 次

Re: 求助,我编了如下python脚本,为什么老是没结果呢?

#10

帖子 aerofox » 2013-03-14 19:44

代码: 全选

for line in f:
    line=line.strip()
    if not line.startswith('#'):
        columns = line.strip().split()
        .....
头像
枫叶饭团
论坛版主
帖子: 14684
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
送出感谢: 1 次
接收感谢: 132 次
联系:

Re: 求助,我编了如下python脚本,为什么老是没结果呢?

#11

帖子 枫叶饭团 » 2013-03-14 21:20

我了个去,我的理解有问题。。。
我还以为楼主说是的文件里有#会影响python处理问题呢。。。。。。
把备注删掉不就行了= =
回复

回到 “Shell脚本”