为什么我的python程序不工作?

时间:2015-12-16 10:20:04

标签: python

我的python程序遇到了问题,因为它没有将车速超过速度限制到我的“非法”列表中。为什么会这样?如果您也可以发布解决方案,我将不胜感激。

#start
Illegal=[]
Legal=[]
Count = 1
DIST = 100
TIME = 0
SPEED = 0

def SpeedCheck(TIME):
    global DIST
    SPEED=(DIST/float(TIME))
    #here is a variable i made to make the program more simple

print (" Welcome to the Speed check calculator")
print ("\n")

#program asks the user to add information needed
LIMIT=int(input ("Speed limit (M/S): "))
VAR=int(input ("How many (M/S) should be allowed over the limit?: "))
LIMIT=LIMIT+VAR

while Count==1:

    REG = input ("Enter Registration number: ")
    TIME =int(input("Enter the time that the vehicle was in the zone in seconds (e.g. 1min= 60): "))
    SpeedCheck(TIME)
    #variable used

    if SPEED>LIMIT:
        Illegal.append(REG)

    elif SPEED<=LIMIT:
        Legal.append(REG)

    #desicion
    Count=Count-1


    Count=int(input("Press 1 to continue or 0 to move on: "))





print ("\n")
option=input("Press P to print Legal and illegal cars: ")
if option=="p":
    print ("Legal: \n")
    print (Legal)
    print ("\n \n")
    print ("Illegal: \n")
    print (Illegal)

print("\n Thank you for using the program, Goodbye.")
#end

3 个答案:

答案 0 :(得分:0)

SPEED在SpeedCheck中设置,但你没有将它设为全局(你使用DIST)你可能希望考虑从函数返回SPEED而不是使用全局。

def SpeedCheck(timein, distance):
    return distance/float(timein)

...

speed = SpeedCheck(TIME, DIST)

if speed > LIMIT:
    ...

样式注释:通常大写是为常量保留的,因此SPEED有点误导。看看PEP008

答案 1 :(得分:0)

由于您未尝试修改global DIST,因此SpeedCheck函数中不需要DIST。但是 修改了该函数中的全局变量SPEED,因此需要将 声明为全局,以使代码按预期工作。

但是,最好避免使用global,除非确实需要它(这很少见)。对于此程序,SpeedCheck应使用return语句返回计算的速度。例如,

def speed_check(elapsed_time):
    return DIST / float(elapsed_time)

正如其他人所提到的,Python有一些关于名称的样式约定。简单的变量和函数都是用小写字母书写的,多字的名字用下划线分隔,就像我用speed_check做的那样。 ALL UPPER CASE用于常量。以大写字母开头的名称用于类,CamelCase用于多字名称。

Stack Overflow上使用的Python语法突出显示认为您的IllegalLegal等是类,因此它会以蓝绿色着色,这会使它看起来不对,或者至少有点混乱。

答案 2 :(得分:0)

你没有宣布速度为GLOBAL

def SpeedCheck(TIME):
    global DIST
    global SPEED
    SPEED=(DIST/float(TIME))
    #here is a variable i made to make the program more simple