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

Ale*_*sch 2 python

我在解决下面的问题时遇到了一些麻烦(我对如何解决它的想法直接在问题之下)

“在罗伯特麦克洛斯基的《为小鸭让路》一书中,小鸭的名字是杰克、卡克、拉克、麦克、纳克、瓦克、帕克和嘎嘎。”

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

prefixes = 'JKLMNOPQ' 
suffix = 'ack'
for letter in prefixes:
    print letter + suffix
Run Code Online (Sandbox Code Playgroud)

输出是:

Jack
Kack
Lack
Mack
Nack
Oack
Pack
Qack
Run Code Online (Sandbox Code Playgroud)

当然,这并不完全正确,因为“Ouack”和“Quack”拼错了。

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

因此,前缀 + 后缀以当前形式产生 4 个字符。Ouack 和 Quack 是 5 个字符。在上一节中,我们使用 'while' 来遍历字符串以创建一个条件,如果索引等于字符串的长度,则条件为假,并且不执行循环体。我想我需要修改 for 循环,以便如果输出字符数小于输入的原始字符串值,它会添加字母“U”。我如何处理为每个名称输入的字符串值的长度和“前缀”?

我不确定我会如何去做,或者我是否应该采取不同的策略。

我提前道歉,我已经扼杀了任何术语,我读这本书有两天了,而且我之前没有计算机科学背景。

use*_*312 6

>>> 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
Run Code Online (Sandbox Code Playgroud)