思考Python(如何像计算机科学家一样思考)练习8.4

2024-10-05 12:19:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在解决下面的问题时遇到了一些困难(我对如何解决它的思考就在问题的正下方)

"In Robert McCloskey’s book Make Way for Ducklings, the names of the ducklings are Jack, Kack, Lack, Mack, Nack, Ouack, Pack, and Quack."

此循环按顺序输出这些名称:

prefixes = 'JKLMNOPQ' 
suffix = 'ack'
for letter in prefixes:
    print letter + suffix

输出为:

^{pr2}$

当然,这不太正确,因为“Ouack”和“Quack”拼写错误。在

练习8.2修改程序以修复此错误。”

所以前缀+后缀以其当前形式生成4个字符。呱呱和呱呱是5个字符。在上一节中,我们使用“while”横切字符串以创建一个条件,其中如果索引等于字符串的长度,则条件为false,并且不执行循环体。我想我需要修改for循环,这样如果输出字符数小于输入的原始字符串值,它就会添加字母“U”。我该如何关联为每个名称输入的字符串值的长度和“前缀”?在

我不知道我该怎么做,或者我是否应该采取不同的策略。在

我很抱歉,我把所有的术语都删掉了,我读这本书已经两天了,而且我以前没有计算机科学的背景。在


Tags: the字符串in名称for条件robertsuffix
3条回答

我的解决方案是:

prefixes = list('JKLMNP')
prefixes.extend(['Ou', 'Qu'])
suffix = 'ack'
for pref in prefixes:
    print pref + suffix

它是紧凑的,包含很少的修改原来的。在

我只是做了这个练习,来看看别人是怎么做的。在我的第二版中,这是关于索引和字符串模块的一章的一部分,所以我在我的nutso解决方案中大量使用了它们。基本上,我在前缀字符串中添加了“u”,并编写了一个if语句来检查字符串中的小写字母。在

import string
def ducks():
    prefixes = "JKLMNOuPQu"
    suffix = "ack"
    index = 0
    while index < len(prefixes)-1:
        if prefixes[index+1] in string.lowercase:
        prefix = prefixes[index:index+2]
        print prefix + suffix
        index += 1
    elif prefixes[index] in string.lowercase:
        index += 1
    else:
        prefix = prefixes[index]
        print prefix + suffix
        index +=1
>>> for letter in prefixes:
        if letter in ('O', 'Q'):  # if the letter is O or Q
            print letter + 'u' + suffix
        else:
            print letter + suffix


Jack
Kack
Lack
Mack
Nack
Ouack
Pack
Quack

相关问题 更多 >

    热门问题