"此代码的要点是将整数列表作为字符串输入,并使输出为整数列表,从而允许用户查找平均值。我似乎无法理解为什么它不起作用,我一直在分裂问题"
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()
答案 0 :(得分:0)
有几个问题:
1) 如果您使用描述性变量名称,您会发现 代码更容易阅读。
您使用名称 s :
这让人感到困惑。
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可以为此提供帮助而不必为此烦恼 暂时记录或调试工具。