2012-03-12 54 views
3

可以说人1具有用Python 3.x编写的python可执行文件(mac)。 Person 1将所述文件发送给Person 2,Person 2也拥有一个mac,但只有Python 2.6.1。当Person 2运行该文件时,它会起作用吗?在早期版本上运行的Python可执行文件

有人说,他们需要看到的代码,所以:

#!/usr/bin/env python 
# -*- coding: UTF8 -*- 
topo1 = 0 
topo2 = 0 
print("This program helps compare two players: ") 
print("It only uses that player's stats from the previous two years to determine their worth in fantasy baseball") 
def complay1(): 
    global topo1 
    print("Enter in the first player's stats below") 
    homerun = input("Enter in the player's home run total from the most recent year: ") 
    sb = input("Enter in the player's stolen base total from the most recent year: ") 
    hit = input("Enter in the player's hit total from the most recent year: ") 
    walks = input("Enter in the player's walk total from the most recent year: ") 
    doubles = input("Enter in the player's doubles total from the most recent year: ") 
    rbi = input("Enter in the player's RBI total from the most recent year: ") 
    ba = input("Enter in the player's batting average from the most recent year, do not include a decimal point: ") 
    hitL = input("Enter in the player's hit total from the year before the most recent year: ") 
    homerunL = input("Enter in the player's home run total from the year before the most recent year: ") 
    age = input("Enter in the player's age: ") 
    gp = input("How many games did the player play last year?: ") 
    topo1 += int(homerun)*3 
    topo1 += int(sb)*2 
    topo1 += int(hit)/2.5 
    topo1 += int(walks)/4 
    topo1 += int(doubles) 
    topo1 += int(rbi)/3 
    topo1 += int(hitL)/15 
    topo1 += int(homerunL) 
    topo1/(int(gp)/4) 
    topo1 -= int(age) 
    topo1 += int(ba)/2 
    print(topo1, "is the total PLV+ for this player") 
def complay2(): 
    global topo2 
    print("Enter in the second player's stats below") 
    homerun = input("Enter in the player's home run total from the most recent year: ") 
    sb = input("Enter in the player's stolen base total from the most recent year: ") 
    hit = input("Enter in the player's hit total from the most recent year: ") 
    walks = input("Enter in the player's walk total from the most recent year: ") 
    doubles = input("Enter in the player's doubles total from the most recent year: ") 
    rbi = input("Enter in the player's RBI total from the most recent year: ") 
    ba = input("Enter in the player's batting average from the most recent year, do not include a decimal point: ") 
    hitL = input("Enter in the player's hit total from the year before the most recent year: ") 
    homerunL = input("Enter in the player's home run total from the year before the most recent year: ") 
    age = input("Enter in the player's age: ") 
    gp = input("How many games did the player play last year?: ") 
    topo2 += int(homerun)*3 
    topo2 += int(sb)*2 
    topo2 += int(hit)/2.5 
    topo2 += int(walks)/4 
    topo2 += int(doubles) 
    topo2 += int(ba)/2 
    topo2 += int(rbi)/3 
    topo2 += int(hitL)/15 
    topo2 += int(homerunL) 
    topo2/(int(gp)/4) 
    topo2 -= int(age) 
    topo1 += int(ba)/2 
    print(topo2, "is the total PLV+ for this player")  
complay1()  
complay2() 
if topo1 > topo2: 
    print("Player 1 is", ((topo1/topo2)*100)-100, "percent better") 
if topo2 > topo1: 
    print("Player 2 is", ((topo2/topo1)*100)-100, "percent better") 
+0

我跑了它,它给了我一个错误,说topo1没有定义。我必须仔细研究它,看它是如何定义的。 – CoffeeRain 2012-03-12 20:34:15

+0

运行'3to2.py'就可以得到一个与python2兼容的版本(或多或少) – Daenyth 2012-03-12 20:34:45

+0

问题是你的complay2()有topo1而不是topo2。顺便提一个程序的好主意! – CoffeeRain 2012-03-12 20:36:06

回答

4

大概不会,主版本的变化没有向后兼容性。

编辑:对于您的代码示例,它可能有效。脚本中2和3之间唯一改变的是print 2不是Python 2中的函数,这是不重要的,因为print(x)与Python 2解释器的print x相同,额外的括号不会造成伤害。

EDIT2:正如在不同的答案中所说,该部门也将打破。这是因为int/int将导致Python 2中的int和Python 3中的float。这意味着5/2在Python 2中为2,在Python 3中为2.5。from __future__ import division解决了此问题。

2

这是不可能的完全一定没有看到代码,但也出现了2.x和3.x之间变化的很多,使它非常不可能奏效。

编辑:

该部门将打破它。将from __future__ import division放在顶部。另外,检查是否存在raw_input,将其分配给input

+0

我把代码放了! – Billjk 2012-03-12 20:29:24

0

可执行文件是什么意思?我对python可执行文件的想法是将python捆绑在其中,所以最终用户不需要安装python来运行它。

如果你的意思只是.py,看着你发布的代码,它看起来是兼容的。

+0

我刚刚将python文件保存为'filename',没有任何扩展名,所以它在终端中运行... – Billjk 2012-03-12 20:29:59

相关问题