【问题标题】:How to return to previous part of the program (Python)如何返回程序的前一部分(Python)
【发布时间】:2011-07-04 08:48:29
【问题描述】:

我是 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:

谢谢

【问题讨论】:

  • 顺便说一句:在你的代码中应该是list1=['a','b','c','d']

标签: python return


【解决方案1】:
【解决方案2】:

您有几个选择,可以使用迭代或递归。对于这种问题,我会使用迭代。如果您不知道什么是迭代和递归,以及它们在 Python 中的工作原理,那么您应该使用 Kugel 建议的链接。

【讨论】:

  • 注:这是我第一次回答关于 SO 的问题,所以如果有人对我的回答有任何疑问,请告诉我 :)
【解决方案3】:

这听起来像是一个 while 循环的工作 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

【讨论】:

    【解决方案4】:

    另一个很好的起点是寻找常见的动作序列并将它们放在一个单独的子例程中。

    # 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 并且它也很好'。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 2017-05-20
      • 2015-01-20
      相关资源
      最近更新 更多