Как вернуться к предыдущей части программы (Python) - PullRequest
2 голосов
/ 25 февраля 2011

Я новичок в Python и получил проблему, в которой я был бы признателен за помощь. Короче проблема:

  1. попросить строку
  2. проверить, все ли буквы в заданном списке
  3. если какой-либо буквы нет в списке, запросите новую строку, в противном случае перейдите к следующему шагу
  4. попросить вторую строку
  5. проверьте еще раз, есть ли буквы второй строки в списке
  6. если какой-либо буквы нет в списке, начните с запроса новой FIRST строки

По сути, мой главный вопрос - как вернуться к предыдущей части моей программы, и было бы также полезно, если бы кто-то написал мне основу этого кода. Это начинается так:

list1=[a,b,c,d]
string1=raw_input("first:")
for i in string1:
    if i not in list1:

Спасибо

Ответы [ 4 ]

3 голосов
/ 25 февраля 2011

Я предлагаю вам начать здесь: http://docs.python.org/tutorial/introduction.html#first-steps-towards-programming

и перейти к следующей главе: http://docs.python.org/tutorial/controlflow.html

0 голосов
/ 25 февраля 2011

Еще одно хорошее место для начала - поиск общих последовательностей действий и помещение их в отдельную подпрограмму.

# ignore this bit - it's here for compatibility
try:
    inp = raw_input  # Python 2.x
except NameError:
    inp = input      # Python 3.x

# this wraps the 'ask for a string, check if all characters are valid' bit in a single call
def GetValidString(msg, validChars):
    i = inp(msg)
    if all(ch in validChars for ch in i):
        return i
    else:
        return None

def main():
    while True:
        str1 = GetValidInput('first: ', 'aeiou'):
        if str1:
            str2 = GetValidInput('second: ', 'rstvy'):
            if str2:
                break  # good! we can leave the loop now

    # got valid values for str1 and str2

логика выглядит как «цикл, пока вы не получите string1, и это хорошо, и вы получите string2, и это тоже хорошо».

Надеюсь, это поможет.

0 голосов
/ 25 февраля 2011

Это звучит как работа на время цикла http://www.tutorialspoint.com/python/python_while_loop.htm

псевдокод

list=[a,b,c,d]
declare boolean passes = false

while (!passes)
    passes = true
    String1 = raw_input("first:")
    foreach char in string1
       if !list.contains(char)
            passes = false
            break

    if passes
        String2 = raw_input("second:")
        foreach char in string2
           if !list.contains(char)
                passes = false
                break
0 голосов
/ 25 февраля 2011

У вас есть несколько вариантов, вы можете использовать итерацию или рекурсию.Для такого рода проблем я бы пошел с итерацией.Если вы не знаете, что такое итерация и рекурсия и как они работают в Python, вам следует использовать ссылки, предложенные Кугелем.

...