编写一个从标准输入中读取正整数的程序。用户可以输入任何数量的数字。当用户输入数字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
是其余最大的位置,其余的剩余时间都没有。