当前位置: 首页 > 知识库问答 >
问题:

计算整数的奇数和偶数平均值

东方弘壮
2023-03-14

我需要写一个程序来计算用户输入的整数的奇偶平均数。用户键入“完成”以完成。输出将显示奇数的平均值和偶数的平均值。

我有一个while循环程序,可以计算数字的和,我正试图增加奇数和偶数和的额外要求。这是代码

total = 0
done = False
while(not done):
    user_in = input("Give me an integer or type 'done' to be done.")
    if( user_in.lower() == "done"):
        done = True
    else:
        # assume that they've typed in an integer
        total += int(user_in)
print (total)

下面是我修改的代码,对奇数和偶数进行排序,然后对每组进行平均。

total = 0
evenSums = 0
oddSums = 0
done = False
while(not done):
    user_in = input("Give me an integer or type 'done' to be done.")
    if( user_in.lower() == "done"):
        done = True
    else:
        # assuming they've typed in an integer
        total += int(user_in)
        if user_in % 2 == 0:
            evenSums += user_in
            evenAverage = evenSums / user_in
        else:
            oddSums += user_in
            oddAverage = oddSums / user_in
print(total)
print("Even Average: " + str(evenAverage))
print("Odd Average: " + str(oddAverage))

预期:

Enter number: 11
Enter number: 24
Enter number: 18
Enter number: 29
Enter number: 7
Enter number: done
Even Average: 21
Odd Average: 15.666666666666666

实际:

Give me an integer or type 'done' to be done.6
Traceback (most recent call last):
  File "C:/Users/guita/Documents/School/CSCI100/CSCI100_Lab4_P/CSCI100_Lab4_P/problem7.py", line 14, in <module>
    if user_in % 2 == 0:
TypeError: not all arguments converted during string formatting

共有3个答案

屈畅
2023-03-14
匿名用户

if user_in % 2 == 0:

在上一行中,int(user_in)不会导致user_in成为整数。它创建一个新值,它是等效的整数。

因此,%被解释为字符串格式运算符,而不是模运算符,错误消息与您预期的完全一致。

首先将中的user_替换为其等效整数,然后对其执行所有适当的操作和测试:

user_in = int(user_in)
total += user_in
if user_in % 2 == 0:
    # etc.

此外:

evenAverage = evenSums / user_in

这里有两个逻辑错误(类似地,oddmaverage)。首先,需要除以输入的偶数,而不是最近输入的偶数。您必须分别计算输入的偶数。第二,在输入所有数字之后,这种划分只能发生一次,因此,它不属于循环内部。

淳于嘉树
2023-03-14

在对其执行算术运算之前,应该将user_in转换为数字。您还应该分别跟踪偶数和奇数的计数,以便计算每个的正确平均值:

evenSums = 0
oddSums = 0
evenCount = 0
oddCount = 0
done = False
while not done:
    user_in = input("Give me an integer or type 'done' to be done.")
    if user_in.lower() == "done":
        done = True
    else:
        user_in = int(user_in)
        if user_in % 2 == 0:
            evenSums += user_in
            evenCount += 1
        else:
            oddSums += user_in
            oddCount += 1
print("Even Average: " + str(evenSums / evenCount))
print("Odd Average: " + str(oddSums / oddCount))
沈飞翔
2023-03-14

中的用户\u是一个字符串,因此不能取其模。改为执行int(用户输入)%2。。

 类似资料:
  • 本文向大家介绍在C ++中计算整数中的偶数和奇数位,包括了在C ++中计算整数中的偶数和奇数位的使用技巧和注意事项,需要的朋友参考一下 给我们一个整数,任务是计算一个数字中的偶数和奇数。另外,我们将继续检查整数中的偶数是否出现偶数次,并且整数中的奇数位是否出现奇数次。 例如 说明-是的,此外,偶数出现偶数次,即2,奇数位出现奇数次,即3 说明-:否,因为偶数出现的次数是奇数,即3,而奇数出现的次数

  • 我被要求编写一个程序,用Switch-Case语句的自由落体方法,获取1-10之间的5个数字,并找出其中有多少是偶数,有多少是奇数。我已经编写了代码,并且在本地范围内声明了变量,其中存在相同的开关情况,所以我认为这不是块范围的问题。如果数字是奇数(1,3,5,7,9),则奇数计数器变量(oc)递增。偶数也会发生同样的情况。如果数字不在范围内,则打印“无效输入”(它继续,不会中断程序)。 问题是,它

  • 嗨,这是我正在做的课程上的一个问题。。。 > 程序打印“键入数字”,直到用户键入数字-1。当用户键入数字1时,程序打印“谢谢,稍后再见!”!“并结束 程序应该打印用户输入的数字的总和(不带数字-1) 程序应该打印用户键入的数字(没有数字-1) 程序应该打印用户键入的数字的平均值(没有数字-1)。 5.程序应该打印用户键入的偶数和奇数的数量(没有数字-1)。 我已经完成了1-4,但完全停留在5。我确

  • 我们的教授在一个文本文件中给了我们一份982个数字的列表,我们已经阅读了文件中的文本,并打印出了一些关于数字的信息。到目前为止,除了奇数的总数之外,我的一切都是正确的(她给了我们正确的答案)。我不知道如何得到奇数的平均值,即48201.56。 我一直得到的结果是97354,这很奇怪,因为我用的方法和所有数字的平均值和偶数的平均值是一样的。 我想知道为什么“总平均数”的答案不是48201.56。谢谢

  • 如何添加代码以查找此程序数组中的零?此代码可以计算偶数和奇数。我应该做一个不同的语句,还是可以添加另一个如果其他语句?

  • 问题内容: Y1961 Y1962 Y1963 Y1964 Y1965 Region 0 82.567307 83.104757 83.183700 83.030338 82.831958 US 1 2.699372 2.610110 2.587919 2.696451 2.846247 US 2 14.131355 13.690028 13.599516 13.649176 13.649046