一道解了1年的PYTHON 题。
程序如下:
inNumber = eval(input("Enter an integer, the input ends if it is 0: "))
count = 1
sum = 1
posNumber = 0
negNumber = 0
if inNumber == 0:
print(“You didn’t enter any number”)
else:
while inNumber != 0:
if inNumber > 0:
posNumber += 1
elif inNumber < 0:
negNumber += 1
inNumber = eval(input("Enter an integer, the input ends if it is 0: “))
count += 1
sum += inNumber
print(“The number of positives is”, posNumber)
print(“The number of negatives is”, negNumber)
print(“The total is”, sum)
print(f"The count is {count}”)
print("The average is ", sum/ (posNumber + negNumber) )
该题是让我们统计正、负数。0为终止程序。并最终计算正负之和,同时按再相除。
该题结果如下:
C:\Users\Administrator> & python c:/Users/Administrator/app.py
Enter an integer, the input ends if it is 0: 1
Enter an integer, the input ends if it is 0: 2
Enter an integer, the input ends if it is 0: -1
Enter an integer, the input ends if it is 0: 3
Enter an integer, the input ends if it is 0: 0
The number of positives is 3
The number of negatives is 1
The total is 5
count is 5 **本条是今天调试统计的正负数和正负数之和相除,数不对时用的。
The average is 1.25
该题直接输入0结果如下:
PS C:\Users\Administrator> & python c:/Users/Administrator/app.py
Enter an integer, the input ends if it is 0: 0
You didn’t enter any number
该题解题过程从2020年5月开始。为此放弃了Python学习到2020年8月重新从第一章学习,学了好几遍之间又看了好几个教程也是拖拖拉拉的。期间有过几次将第5章的题解开过一部分。但是该题作为本章第一题。始终是拦路虎让我耿耿于怀。一直到从昨天继续重复之前的错误。
错误如下
第一统计了正负数。但是正负之和不对。正负之和除统计的正负数结果不对。
第二直接输入0,并没有按正常结果显示相反下方多了几条,如下:
Enter an integer, the input ends if it is 0: 0
You didn’t enter any number
The number of positives is 0
The number of negatives is 0
The total is 0
The average is 0
今天早上再次调试。
首先将整个题按不包含while循环来设计
即如下公式:
inNumber = eval(input("Enter an integer, the input ends if it is 0: "))
if inNumber >0:
print(“The positives”)
elif inNumber < 0:
print(“The negatives”)
else:
print(“You didn’t enter any number”)
然后以此为骨骼开始分析和添加程序
此时突然想到为什么不把 “inNumber = 0” 当做第一条件呢??
以前都是把inNumber = 0放在else里,认为我确认了正负数就可以了
但是这次换思路,因此就出现了第一个公式里:
if inNumber == 0:
print(“You didn’t enter any number”)
这就解决了当时的第二个难题。不论我正负数统计如何,只要第一次输入0结果:
PS C:\Users\Administrator> & python c:/Users/Administrator/app.py
Enter an integer, the input ends if it is 0: 0
You didn’t enter any number
这个我很满意。
紧接着就好办了。当我把等于0直接从程序中标出后。剩下的部分就只需确认正负数问题了
之前没有确定inNumber=0为第一条件时整个公式需要单独给第一次输入做正负数确认,然后再跑到循环里再第二次确认,这太啰嗦,而今天的全新写法简化了这个步骤。只要确定这个数不是0就可以直接进行辨别和合计。
最后就是正负数之和与统计数相除出现错误。其实知道现在 写这个稿子的时候,我才意识到我自己的错误在哪里。有时可以先写出目的,之所以算错很大程度上和自己逻辑错误有关。我把统计数包括了正负和结束的0都算在内,那么就意味着每次统计都会多1.所以怎么除都是不对。
我应该直接将正数和负数统计相加,这样就规避了把最后结束0加进去的尴尬。
变成了下面这个公式
print("The average is ", sum/ (posNumber + negNumber) )
另外最后说一点在我们编程的过程中print这个普通的命令确实起到了很大的作用。就像今天对统计相除这个问题上就是通过print这个命令的使用得以判断出问题的所在。
还有就是要多写心得,健身需要写。编程更需要写。在写的过程中其实是对自己的另一次复习。