python3:找到剩余的数字除以10(Somes在第二个答案的时循环中犯错)



编写一个从标准输入中读取正整数的程序。用户可以输入任何数量的数字。当用户输入数字0时,程序会打印输入最有趣的整数(不包括数字0(。

最有趣的整数是将其剩余最大的整数除以10。

当没有输入整数时,打印"未输入整数"

当所有整数在10分10分之后都有相同的剩余时间时,打印"所有整数都具有相同的剩余'

当两个或多个整数最有趣时,打印'两个或多个整数是最有趣的'

第一个答案是,不使用列表理解是正确的,第二个使用列表理解的答案并给出了不正确的输出,我认为在15-21行的第二个答案代码中使用的while循环有一些问题

正确的答案不使用列表理解:

nums = []
remainders=[]
while True:
    num=int(input('Number: '))
    if num==0:        
        break
    nums.append(num)    
if len(nums)==0:
    print('No integers were entered')
    exit()
for num in nums:
    remainder=num%10
    remainders.append(remainder)
index=remainders.index(max(remainders))
count=0   
k=0
while k<len(remainders):
    if remainders[k]>remainder:
        remainder=remainders[k]
        count=0 
    if remainders[k]==remainder:
        count+=1
    k+=1    
if count ==1:
    print('The most interesting integer was: {}'.format(nums[index]))  
elif count>1 and count<len(nums):
    print('Two or more integers are the most interesting')
else:
    print('All integers have the same remainder')

答案使用列表理解并给出错误的输出:

nums = []
remainders=[]
while True:
    num=int(input('Number: '))
    if num==0:        
        break
    nums.append(num)    
if len(nums)==0:
    print('No integers were entered')
    exit()
remainders=[num % 10 for num in nums ]
index=remainders.index(max(remainders))
count=0
k=0
while k<len(remainders):
    if remainders[k]>nums[k]%10:
        remainder=remainders[k]
        count=0     
    if remainders[k]==nums[k]%10:
        count+=1
    k+=1        
if count ==1:
    print('The most interesting integer was: {}'.format(nums[index]))  
elif count>1 and count<len(nums):
    print('Two or more integers are the most interesting')
else:
    print('All integers have the same remainder')

示例(预期输出(:

Number: 4
Number: 20
Number: 9
Number: 3
Number: 5
Number: 0
The most interesting integer was: 9
Number: 14
Number: 24
Number: 3
Number: 111
Number: 0
Two or more integers are the most interesting

实际的OUPUT(使用列表理解的代码(:

Number: 4
Number: 20
Number: 9
Number: 3
Number: 5
Number: 0
All integers have the same remainder
Number: 14
Number: 24
Number: 3
Number: 111
Number: 0
All integers have the same remainder

更改:

while k<len(remainders):
    if remainders[k]>nums[k]%10:
        remainder=remainders[k]
        count=0     
    if remainders[k]==nums[k]%10:
        count+=1
    k+=1  

进入:

while k<len(remainders):
    # if remainders[k]>nums[index]%10:
    #    remainder=remainders[k]
    #    count=0     
    if remainders[k]==nums[index]%10:
        count+=1
    k+=1  

它将按预期工作。

我评论这部分是因为它无法到达。index是其余最大的位置,其余的剩余时间都没有。

最新更新