我的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
答案 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语法突出显示认为您的Illegal
,Legal
等是类,因此它会以蓝绿色着色,这会使它看起来不对,或者至少有点混乱。
答案 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