Python For Loop来自如何像计算机科学家一样思考

时间:2012-05-15 14:10:22

标签: python loops for-loop

我偶然发现了“如何像计算机科学家一样思考”的新练习。 (打开文档@ http://www.openbookproject.net/thinkcs/python/english2e/ch07.html

希望收到一些指示:

prefix="JKLMNOPQ"
suffix="ack"

for letter in prefix:
    print letter + suffix

你得到了 Jack,Kack,Lack,Mack,Nack,Oack,Pack& Qack。

我应该修改什么,以便代替Oack和Qack,我得到Ouack和Quack?

为了学习,我尝试的是:

prefix="JKLMNOPQ"
suffix="ack"

for letter in prefix:
  if letter = "O" or "U":
    print letter + "u" + suffix
  else:
    print letter + suffix

正如大多数人一眼就注意到的那样,提交的语法错误是在if函数调用中使用=而不是==。

感谢您的所有快速帮助,我非常感谢他们。

8 个答案:

答案 0 :(得分:5)

给定的示例依赖于以下事实:当迭代时,字符串给出每个单独的字符。由于您希望某些前缀包含两个字符,因此您必须将每个字符的字符串拆分为单独的字符串,并将u添加到您想要的位置。

prefixes=["J", "K", "L", "M", "N", "Ou", "P", "Qu"]
suffix="ack"

for letters in prefixes:
    print letters + suffix

答案 1 :(得分:3)

我不会为你解决这个问题,但会给你一个提示:the if statement可能派上用场。

答案 2 :(得分:3)

查找两个前缀(Q和O),然后添加'u',否则只需按原样打印

for letter in prefix:
   if letter in ['Q', 'O']:
      print letter + 'u' + suffix
   else:
      print letter + suffix

的产率:

Jack
Kack
Lack
Mack
Nack
Ouack
Pack
Quack

答案 3 :(得分:2)

prefix = "JKLMNOPQ"
suffix = "ack"

for letter in prefix:
    if letter == 'O' or letter == 'Q':
      print "".join((letter, 'u', suffix))
    else:
      print "".join((letter, suffix))



Jack
Kack
Lack
Mack
Nack
Ouack
Pack
Quack

答案 4 :(得分:0)

这是正则表达式解决方案:

import re
prefix="JKLMNOPQ"
suffix="ack"
names=[re.sub("([OQ])","\\1u",p) + suffix for p in prefixes]
print "\n".join(names)

我认为指定的问题是纠正输入,即它不是关于输入如何糟糕的问题,应该是[J“,”K“,”L“,”M“,”N“形式的问题,“欧”,“P”,“曲”等等。通常,正则表达式替换可以是修复字符串输入的好方法。 如果你打算“更像是一个计算机科学家”,我还建议尽可能多地使用列表推导来解决这些问题,并将输出视为一个单独的问题。

答案 5 :(得分:0)

使用地图功能和正则表达式

RX = lambda x: re.sub("(O|Q)","\\1u",x)
map(RX,[x+suffix for x in prefix])

答案 6 :(得分:0)

解决方案:

prefixes = 'JKLMNOPQ'
suffix = 'ack'


for letter in prefixes:
    while True:
        if letter == 'O':
            print letter + 'u' + suffix
            break
        if letter == 'Q':
            print 'Quack' # just another solution of the print statement
            break
        print letter + suffix
        break

我喜欢打破东西;)

答案 7 :(得分:-4)

如果我理解了问题(那就是如何仅为Q / O前缀添加u),你最终会得到这样的结果:

for letter in prefix:
     word = letter
     if letter in ["O","U"]:
        word += "u"
     print word . suffix