使用函数将逗号分隔的字符串列表转换为整数

时间:2018-04-23 21:50:53

标签: python list

"此代码的要点是将整数列表作为字符串输入,并使输出为整数列表,从而允许用户查找平均值。我似乎无法理解为什么它不起作用,我一直在分裂问题"

def is_integer(s):

    if s == s.isdigit():
        return True
    else:
        return False


def are_all_integers(strs):

    for s in strs.split(","):
        if s == s.isdigit:
            return True
        else:
            return False


def strs_to_num(strs):

    integers = []
    for s in strs:
        integers.append(int(s))
    return integers


def get_ints():

    list_of_integers = []
    s = input("Enter some digits: ")
    s = s.split()
    while (len(s) < 2) and (are_all_integers(s) is False):
        s = input("invalid input, try again: ")
    for integer in s:
        strs_to_num(integer)
        list_of_integers.append(integer)

    return list_of_integers


def main():

    s = get_ints()
    avg = sum(s)/len(s)
    print(sum(s))
    print(len(s))
    print("The average of these numbers are", avg)


main()

1 个答案:

答案 0 :(得分:0)

有几个问题:

1) 如果您使用描述性变量名称,您会发现 代码更容易阅读。

您使用名称 s

  • 输入字符串 - &#34; 4 5 6&#34;
  • 字符串列表 - [&#34; 4&#34;,&#34; 5&#34;,&#34; 6&#34;]
  • string repr。 int - &#34; 4&#34;
  • 整数列表 - [4,5,6]

这让人感到困惑。

2) 你从不调用函数is_integer(s) 可以删除它。

3) 函数are_all_integers()尝试拆分 整数字符串列表。然后它检查s是否相等 到s.isdigit。 s是真(!=&#39;&#39;)和s.isdigit(哪个 有价值&#34; <built-in method isdigit of str object at 0x0547B320>&#34;) 也是真的,整个表达是真的。

正确的表达方式是:if s.isdigit()。您 最后必须有括号,否则Python不会 知道你要求该功能的

此外,函数are_all_integers()为第一个项返回True 是一个整数,不会评估列表中的后续字符串。

4) while循环条件应为OR:ed。然后你必须拆分 用于创建传递给are_all_integers()的列表的输入字符串。

5) 函数strs_to_num()可以由内置函数int()替换。

6) 花些时间学习如何调试代码。在你的水平这个 可以通过小步骤和印刷中间体来完成 结果到控制台。 Google可以为此提供帮助而不必为此烦恼 暂时记录或调试工具。