首页 > 解决方案 > 我不确定最后一个函数是否正确

问题描述

主函数已经写好,但需要填写其他函数体,以便:

第一个函数采用参数 n 表示几何序列的前 n 项:{ 1, 4, 16,64, 256, ... },将这些项相加,并返回这些项的总和。以 5 为输入的示例运行将产生:从 1 到 256 的几何级数之和为 341

第二个函数接受参数 n,它表示等差数列的前 n 项:{ 1/3,2/3, 3/3, 4/3, ... },将这些项相加,并返回要显示在输出。

第三个函数接受一个单词,如果单词按字母倒序返回 True,否则返回 False;反向字母顺序单词的示例是:won、pi、role、ton。

def main():  
    num = int(input('Enter a number of terms: '))
    total = ex4a(num)
    print("The sum of the geometric series from 1 to {} is {}".\
          format(4 ** (num - 1), total))
    total = ex4b(num)
    print("The sum of the arithmetic series from 1/3 to {}/3 is {:.5f}".format(num, total))
    word = input("Enter a word: ")
    isReverse = ex4c(word)
    negation = 'not '
    if isReverse:
        negation = ''
    print("The word {} is {}in reverse alphabetical order".format(word, negation))

def ex4a(num):
    s = 0
    i = 1
    for el in range(num):
        s += i
        i = 4 * i
    return s

def ex4b(num):
    s = 0
    for i in range(num):
        s += i / 3
    return s 

def ex4c(word):
    for i in range(len(word) - 1):
        if word[i] > word[i + 1]:
            return True
        else:
            return False

标签: python

解决方案


错误,如果 word[i]> word[i+1] 对于每个有效的 i,函数返回 True,换句话说,如果任何 word[i]<=word[i+1] 函数返回 False

def ex4c(word):
    for i in range(len(word) - 1):
        if word[i] <= word[i + 1]:
            return False

    return True

推荐阅读