2013-08-04 4 views
0

Это Python. Я пытаюсь написать программу, которая запрашивает у пользователя ввод строки без использования глобальных переменных. Если строка имеет круглые скобки только бок о бок, то она четная. если у него есть буквы, цифры или круглые скобки, то это неравномерно. Например,() и()() и (()()) четные, тогда как (() и (pie) и() не являются. Ниже я пишу до сих пор. Моя программа продолжает печатать " Введите вашу строку»бесконечно, я сейчас застрял с этой проблемой.Создание скобок программы? Я застрял

selection = 0 
def recursion(): 
#The line below keeps on repeating infinitely. 
    myString = str(input("Enter your string: ")) 
    if not myString.replace('()', ''): 
     print("The string is even.") 
    else: 
     print("The string is not even.") 

while selection != 3: 
    selection = int(input("Select an option: ")) 

    #Ignore this. 
    if selection == 1: 
     print("Hi") 

    #This won't work. 
    elif selection == 2: 
     def recursion(): 
      recursion() 
+0

Что Защита рекурсии(): рекурсии() под Элифом выбор == 2. – sihrc

+1

_ «Моя программа продолжает печать„Введите вашу строку“бесконечно» _. Это смешно, когда я запускаю его, он сохраняет печать «Выберите вариант:» бесконечно, пока я не войду 3. Является ли это вашим самым современным кодом? Я не вижу, как вы могли бы даже получить приглашение «Введите строку». – Kevin

+1

Основываясь на том, от кого мы с Кевином от запуска вашей программы, похоже, что все работает, если вы просто выберете свою рекурсию def при выборе elic == 2: и просто положите рекурсию(). Все, что осталось, это фиксировать ваши операторы if в recursion(), чтобы делать то, что вы хотите, чтобы сделать – sihrc

ответ

0

Это выводит правильные даже/не даже ответы.

selection = 0 
def recursion(): 
    myString = str(raw_input("Enter your string: ")) #Use raw_input or () will be() 
    paren = 0 
    for char in myString: 
     if char == "(": 
      paren += 1 
     elif char == ")": 
      paren -= 1 
     else: 
      print "Not Even" 
      return 

     if paren < 0: 
      print "Not even" 
      return 
    if paren != 0: 
     print "Not even" 
     return 
    print "Even" 
    return 

while selection != 3: 
    selection = int(input("Select an option: ")) 

    #Ignore this. 
    if selection == 1: 
     print("Hi") 

    #This won't work. 
    elif selection == 2: 
     recursion() #This isn't a recursive function - naming it as so is... 
0

Если вы не используете Python 3, вы должны используйте raw_input вместо ввода, потому что ввод возвращает результат в любом типе, который соответствует лучшему входу, тогда как raw_input всегда возвращает строку. В Python 3 вход всегда возвращает строку. Кроме того, почему вы переопределяете рекурсию? Просто позвоните ей из elif s tatement. Пример:

selection = 0 
def recursion(): 
#The line below keeps on repeating infinitely. 
    myString = raw_input("Enter your string: ") # No need to convert to string. 
    if not myString.replace('()', ''): 
     print("The string is even.") 
    else: 
     print("The string is not even.") 

while selection != 3: 
    selection = int(raw_input("Select an option: ")) 

    #Ignore this. 
    if selection == 1: 
     print("Hi") 

    #This won't work. 
    elif selection == 2: 
     recursion() # Just call it, as your program already 
        # recurs because of the if statement. 
Смежные вопросы