计算相邻奇数的数量

时间:2015-04-12 15:27:41

标签: python count

我正在尝试用Python编写代码,要求用户输入序列中的数字,然后输入数字本身。最后,程序输出相邻奇数对的数量。这是一个示例输出:

输入序列的长度:6
输入数字1:3
输入数字2:4
输入数字3:7
输入数字4:9
输入数字5:3
输入数字6:5
相邻奇数对的数量是3

我提出了以下代码:

length = eval(input("Enter the length of the sequence: "))

for i in range(1,length+1):
    ask = eval(input("Enter number: "+str(i)+ ": "))
    for m in range(0,length+1,2):
        ask2 = ask

h = ask%2
f = ask2%2

if h>0 and f>0:
    k = (len(str(ask) + str(ask2)))
    print(k)

else:
    pass

虽然提示的输出是正确的,但我无法计算相邻奇数对的数量。请帮我纠正我的代码或在其上构建;这将是高度赞赏的。正如您必须注意到的,我一直在使用基本的if语句,循环和字符串来编写代码。如果你能坚持下去以便我更好地理解,那就太好了。

很抱歉这篇长篇文章。

非常感谢

3 个答案:

答案 0 :(得分:1)

检查当前元素和下一个元素是否为奇数和总和:

length = int(input("Enter the length of the sequence: "))

nums = [int(input("Enter number: {}: ".format(i))) for i in range(1, length + 1)]


print(sum(ele % 2 and nums[i] % 2 for i,ele in enumerate(nums, 1)))

enumerate(nums, 1)1处启动索引,因此当我们使用下一个相邻数字迭代nums时,ele % 2 and nums[i] % 2会检查当前元素。

当你想要转换为int时使用int(input..,使用eval绝不是一个好主意。您还应该使用while循环并使用try/except验证用户输入。

不使用列表:

length = int(input("Enter the length of the sequence: "))
total = 0
# get a starting number
ask = int(input("Enter number: {}".format(1)))
# will keep track of previous number after first iteration
prev = ask
for i in range(2, length + 1):
    ask = int(input("Enter number: {}".format(i)))
    # if current and previous are both odd increase count
    if ask % 2 and prev % 2:
        total += 1
    # update prev 
    prev = ask

print(total)

答案 1 :(得分:1)

这将解决您的问题。

首先将用户提供的输入放入名为numList的列表中。保持计数变量来计算相邻奇数的数量。循环遍历numList并通过检查余数除以2来识别奇数。(通过给定的if条件检查)然后您可以简单地打印列表中相邻奇数的数量。

length=int(input("Enter the length of the sequence: "))
numList=[]
count=0
for i in range(length):
    num=int(input("Enter number "+str(i+1)+ ": "))
    numList.append(num)

for x in range(len(numList)-1):
    num1=numList[x]
    num2=numList[x+1]
    if((num1%2==1) and (num2%2==1)):
        count=count+1
    else:
        continue

print("The number of pairs of adjacent odd numbers is "+str(count))

如果您想在不使用列表的情况下解决此问题,这就是答案。 您应该在输入时处理输入。

length=int(input("Enter the length of the sequence: "))
count=0
num1=int(input("Enter number "+str(1)+ ": "))
for i in range(length-1):
    num2=int(input("Enter number "+str(i+2)+ ": "))
    if((num1%2==1) and (num2%2==1)):
        count=count+1
    num1=num2


print("The number of pairs of adjacent odd numbers is "+str(count))

答案 2 :(得分:0)

这是使用简单for循环执行此操作的方法。就像Padraic的解决方案一样,它使用一个列表来累积输入,因为它比在你读它们时测试对更简单。正如Padraic所提到的,你真的应该检查输入是否正确。

length = int(input("Enter the length of the sequence: "))

seq = []
for i in range(1, length + 1):
    ask = int(input("Enter number " + str(i) + ": "))
    seq.append(ask)

count = 0
for i in range(length - 1):
    if seq[i] % 2 == 1 and seq[i+1] % 2 == 1:
        count += 1

print("The number of pairs of adjacent odd numbers is", count)