В стандарте C говорится, что переменная должна назначаться не более одного раза между двумя точками последовательности. Например, точка с запятой - это точка последовательности. Поэтому каждое утверждение вида:
i = i++;
i = i++ + ++i;
и т. Д. Нарушает это правило. В стандарте также говорится, что поведение не определено, а не неопределено. Некоторые компиляторы обнаруживают их и приводят к некоторому результату, но это не соответствует стандарту.
Однако две разные переменные могут быть увеличены между двумя точками последовательности.
while(*src++ = *dst++);
Вышеупомянутое общая практика кодирования при копировании / анализе строк.
Вы тестируете, если пользовательский ввод yes
или no
. Добавьте not
:
while userInput not in ['yes', 'no']:
С таким чуть-чуть быстрее и ближе к вашему намерению используйте набор:
while userInput not in {'yes', 'no'}:
. Вы использовали userInput in ['yes', 'no']
, который True
, если userInput
либо равно 'yes'
, либо 'no'
.
Затем используйте boolean для установки endProgram
:
endProgram = userInput == 'no'
Поскольку вы уже что userInput
является либо yes
, либо no
, нет необходимости снова проверять yes
или no
, чтобы установить свою переменную флага.
def transaction():
print("Do the transaction here")
def getuserinput():
userInput = "";
print("Start")
while "no" not in userInput:
#Prompt for a new transaction
userInput = input("Would you like to start a new transaction?")
userInput = userInput.lower()
if "no" not in userInput and "yes" not in userInput:
print("yes or no please")
if "yes" in userInput:
transaction()
print("Good bye")
#Main program
getuserinput()