2015-12-16 8 views
-1

У меня возникли проблемы с моей программой 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 
+5

Не могли бы вы, пожалуйста, выбрать более подходящее название для вашего вопроса? Также исправьте ошибки подсветки синтаксиса в начале кода. –

+0

Прочтите [Руководство по стилю для кода Python] (https://www.python.org/dev/peps/pep-0008/). – Matthias

ответ

0

SPEED установлен в SpeedCheck, но вы не сделали его глобальным (вы сделали с DIST) Вы, возможно, пожелает рассмотреть вопрос о возвращении SPEED из функции вместо использования глобальной.

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

... 

speed = SpeedCheck(TIME, DIST) 

if speed > LIMIT: 
    ... 

Стиль комментарий: обычно ВЕРХНИЙ зарезервирован для констант, так SPEED немного вводит в заблуждение. Посмотрите на PEP008

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 - для многословных имен.

Синтаксис Python подсвечивание используется на переполнение стека думает ваш Illegal, Legal и т.д. классы, поэтому окрашено их в том, что сине-зеленый цвет, что делает его выглядеть неправильно, или, по крайней мере, немного запутанным.

+0

'time' - это стандартное имя библиотеки, вы можете изменить имя переменной. – cdarke

+0

@cdarke: Да, я просто думал об этом. :) Это безвредно здесь, но это все еще запутывает. –

0

вы didnot заявленной скорости, как GLOBAL

def SpeedCheck(TIME): 
    global DIST 
    global SPEED 
    SPEED=(DIST/float(TIME)) 
    #here is a variable i made to make the program more simple 
Смежные вопросы