Python:我已经为非';我不工作,我也不';我不知道为什么
所以我想知道如何打印偶数多于奇数的数字。这是我的代码:Python:我已经为非';我不工作,我也不';我不知道为什么,python,for-loop,nested-loops,Python,For Loop,Nested Loops,所以我想知道如何打印偶数多于奇数的数字。这是我的代码: inVal=(input("Please enter a positive integer: ")) evencounter=0 oddcounter=0 for i in range(1,int(inVal)): for j in range (1,len(str(i))): if(int(str(i)[j])%2==0): evencounter+=1 else:
inVal=(input("Please enter a positive integer: "))
evencounter=0
oddcounter=0
for i in range(1,int(inVal)):
for j in range (1,len(str(i))):
if(int(str(i)[j])%2==0):
evencounter+=1
else:
oddcounter+=1
if(evencounter>oddcounter):
print(i)
怎么了?我认为问题在于,您没有重置计数器变量。另一个问题是,第二个循环从1开始,而不是从0开始。(感谢莱昂纳多·加兹德指出!) 字符串索引从0开始:
>>> 'abc'[1]
'b'
以下是您应该如何做到这一点:
inVal=(input("Please enter a positive integer: "))
evencounter=0
oddcounter=0
for i in range(1,int(inVal)):
# add those pieces of code:
evencounter=0
oddcounter=0
for j in range (0,len(str(i))): # start from 0
if(int(str(i)[j])%2==0):
evencounter+=1
else:
oddcounter+=1
if(evencounter>oddcounter):
print(i)
正如zeet正确指出的,您需要重置每个数字上的计数器(它们甚至不需要是全局计数器),但您还有另一个问题。您需要从0而不是1开始第二个循环。字符串索引从0开始
inVal=(input("Please enter a positive integer: "))
for i in range(1,int(inVal)):
evencounter=0
oddcounter=0
for j in range (0,len(str(i))):
if(int(str(i)[j])%2==0):
evencounter+=1
else:
oddcounter+=1
if(evencounter>oddcounter):
print(i)
给出从开始
到小于停止
的值
在你的内心循环中,改变
for j in range (1,len(str(i))):
到
因为索引从0
开始
在外循环的每次迭代之后,您需要重置计数器的值,以便它可以重新开始下一个数字
此外,如果还想包括inVal
,请将外部循环更改为
for i in range(1,int(inVal)+1):
如果用户的输入不是数字,您可能还需要检查异常处理
evencounter=0
oddcounter=0
try:
for i in range(1,int(inVal)+1):
for j in range (0,len(str(i))):
if(int(str(i)[j])%2==0):
evencounter+=1
else:
oddcounter+=1
if(evencounter>oddcounter):
print(i)
oddcounter = evencounter = 0
except ValueError:
print('Conversion error!')
非常感谢你!
evencounter=0
oddcounter=0
try:
for i in range(1,int(inVal)+1):
for j in range (0,len(str(i))):
if(int(str(i)[j])%2==0):
evencounter+=1
else:
oddcounter+=1
if(evencounter>oddcounter):
print(i)
oddcounter = evencounter = 0
except ValueError:
print('Conversion error!')