[英]Why is my code skipping the entire “for i in range” loop?
我遇到了一個問題,我的代碼正在跳過所有輸入提示的for
循環,並直接打印循環下方的列表。
出了什么問題,我該如何解決?
import statistics
Age = list()
SaturnRT = list()
MarsRT = list()
Mars = list()
Saturn = list()
Houses = ['saturn', 'Saturn', 'Mars', 'mars']
CheckList = ['Saturn', 'saturn']
ReactionTime = list()
inputVar = None
for i in range(0, ):
print("enter age: ")
while inputVar != type(int):
try:
inputVar = int(input())
while inputVar>16 or inputVar<12:
print("error! invalid entry")
inputVar = int(input("enter the age: "))
break
except:
print("enter an integer! ")
Age.append(inputVar)
print("enter reaction time (ms): ")
while inputVar != type(float):
try:
inputVar = float(input())
while inputVar < 0 or inputVar > 500:
print("enter a valid time! ")
inputVar = float(input())
House = str(input("enter the house: "))
while House not in Houses:
print("error! invalid entry")
House = str(input("enter the house: "))
if House in CheckList:
SaturnRT.append(inputVar)
Saturn.append(House)
else:
MarsRT.append(inputVar)
Mars.append(House)
break
except:
print("enter an valid time! ")
ReactionTime.append(inputVar)
print(SaturnRT)
print(MarsRT)
print("saturn reaction times avg: ", statistics.mean(SaturnRT))
print("saturn fastest time: ", min(SaturnRT))
print("saturn slowest time: ", max(SaturnRT))
print("mars reaction times avg: ", statistics.mean(MarsRT))
print("mars fastest time: ", min(MarsRT))
print("mars slowest time: ", max(MarsRT))
print(ReactionTime)
print(Age)
range(0, )
等效於range(0)
(另請參閱: 我是否應該在 function 調用中的最后一個參數之后添加一個尾隨逗號? )。
但是range(0)
是一個空范圍。 對其進行迭代會導致一個零次迭代的循環,即跳過整個for
循環。
如果您想要一個一直持續到內部遇到break
語句的循環,請使用while True:
而不是for i in range(0, ):
。
您似乎沒有使用i
變量,但是如果您確實想在這樣的循環中計算迭代次數,您可以使用itertools.count
(請參閱: 保持無限計數的簡單方法或在 while 循環中計算迭代次數):
>>> import itertools
>>> for i in itertools.count():
... print(i)
... if i > 3:
... break
...
0
1
2
3
4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.