让我们说Person 1有一个用Python 3.x编写的python可执行文件(mac)。 Person 1将所述文件发送给Person 2,Person 2也有一个mac,但只有Python 2.6.1。当Person 2运行该文件时,它会起作用吗?
有人说他们需要查看代码,所以:
#!/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 :(得分:4)
可能不是,主要版本的更改没有向后兼容性。
编辑:对于您的代码示例,它可能有效。在你的脚本中,2和3之间唯一的变化就是在Python 2中打印不是函数,这是不重要的,因为print(x)与Python 2解释器的print x相同,额外的括号不包含在内。伤了。
EDIT2 :正如另一个回答中所述,该部门也会突破。这是因为int / int将导致Python 2中的int和Python 3中的float。这意味着{2}在Python 2中为2,在Python 3中为2.5。5 / 2
修复此问题。
答案 1 :(得分:2)
在没有看到代码的情况下完全是不可能的,但是2.x和3.x之间存在批次的变化,这使得它极不可能工作
修改强>
该部门将打破它。将from __future__ import division
置于顶部。另外,请检查raw_input
是否存在,并将其分配给input
。
答案 2 :(得分:0)
可执行文件是什么意思?我对python可执行文件的想法是将python捆绑在其中,因此最终用户不需要安装python来运行它。
如果你的意思是.py,看看你发布的代码,看起来很兼容。