我怎样才能让程序重复而不需要用户关闭 shell?
How can I get the program to repeat without having the user have to close out of the shell?
我无法找到让用户重复代码而无需退出 shell 的方法。这是我目前所拥有的。
import random
randomNum = random.randint(1, 10)
start = True
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#The code cant be both less than and greater than. The or function allows this
while (answer > randomNum) or (answer < randomNum):
if (answer == randomNum + 1):
print "Super Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#First one
elif (answer == randomNum + 2):
print "Pretty Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Second one
elif (answer == randomNum + 3):
print "Fairly Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Third one
elif (answer == randomNum + 4):
print "Not Really Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Fourth one
elif (answer == randomNum + 5):
print "Far"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Fifth one
elif (answer == randomNum - 5):
print "Far"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Sixth one
elif (answer == randomNum - 4):
print "Not Really Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Seventh one
elif (answer == randomNum - 3):
print "Fairly Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Eighth one
elif (answer == randomNum - 2):
print "Pretty Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Nineth one
elif (answer == randomNum - 1):
print "Super Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Tenth one
else:
print "Good Job!"
print randomNum
if (start == True):
answerAgain = raw_input("Do you want to restart this program ? ")
if answerAgain == ("Yes", "yes", "ya", "Ya", "Okay", "Sure", "Si", "Start"):
#Empty space because I don't know what to put in here.
else:
print "See ya next time!"
我想知道如何将所有这些代码应用到一个变量或重复执行,而无需编写 50 次。
将代码放入 while
循环以重复它。
start = True
while start:
# code
if answerAgain.lower() in ('no', 'niet', 'bye'):
start = False
我建议将整个事情包含在一个 while 循环中。
start = True
while start == True:
"""your code here"""
answerAgain = raw_input("Do you want to restart this program ? ")
if answerAgain == ("Yes", "yes", "ya", "Ya", "Okay", "Sure", "Si", "Start"):
start = True
else:
start = False
这样,如果 start == True,您的整个代码将再次 运行。
我还建议您使用列表进行回复。
responses = ["Super Close", "Pretty Close", "Fairly Close", "Not Really Close", "Far"]
这样您就可以使用差异映射到适当的响应:
print responses[abs(answer - randomNum) - 1]
- 如果您使用用户提供的数字和您的随机数之间的绝对值,您只需记录一半的案例(即 -1 和 +1 得到相同的处理)。
- 与其在每个案例之后询问他们的新答案,不如将此代码移至主循环的顶部,因为它是程序开始时的请求,并遵循所有 'wrong' 个答案。
- 对于用法,您可能希望将所有 'word' 答案转换为小写,因为在这种情况下大小写似乎无关紧要。
- 您可以使用
quit()
彻底退出程序。
所以可能是这样的:
import random
while(True):
randomNum = random.randint(1, 10)
answer = 0
while abs(answer - randomNum) > 0:
answer = int(input("Try to guess a random number between 1 and 10. "))
if abs(answer - randomNum) == 1:
print("Super Close")
elif abs(answer - randomNum) == 2:
print("Pretty Close")
# the other cases ...
# gets here if abs(answer - randonNum) == 0, i.e. they guessed right
print("Good Job!", randomNum)
answerAgain = input("Do you want to restart this program ? ")
if answerAgain.lower() in ["yes", "ya", "y", "okay", "sure", "si", "start"]:
pass
else:
print("See ya next time!")
quit()
我无法找到让用户重复代码而无需退出 shell 的方法。这是我目前所拥有的。
import random
randomNum = random.randint(1, 10)
start = True
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#The code cant be both less than and greater than. The or function allows this
while (answer > randomNum) or (answer < randomNum):
if (answer == randomNum + 1):
print "Super Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#First one
elif (answer == randomNum + 2):
print "Pretty Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Second one
elif (answer == randomNum + 3):
print "Fairly Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Third one
elif (answer == randomNum + 4):
print "Not Really Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Fourth one
elif (answer == randomNum + 5):
print "Far"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Fifth one
elif (answer == randomNum - 5):
print "Far"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Sixth one
elif (answer == randomNum - 4):
print "Not Really Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Seventh one
elif (answer == randomNum - 3):
print "Fairly Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Eighth one
elif (answer == randomNum - 2):
print "Pretty Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Nineth one
elif (answer == randomNum - 1):
print "Super Close"
answer = int(raw_input("Try to guess a random number between 1 and 10. "))
#Tenth one
else:
print "Good Job!"
print randomNum
if (start == True):
answerAgain = raw_input("Do you want to restart this program ? ")
if answerAgain == ("Yes", "yes", "ya", "Ya", "Okay", "Sure", "Si", "Start"):
#Empty space because I don't know what to put in here.
else:
print "See ya next time!"
我想知道如何将所有这些代码应用到一个变量或重复执行,而无需编写 50 次。
将代码放入 while
循环以重复它。
start = True
while start:
# code
if answerAgain.lower() in ('no', 'niet', 'bye'):
start = False
我建议将整个事情包含在一个 while 循环中。
start = True
while start == True:
"""your code here"""
answerAgain = raw_input("Do you want to restart this program ? ")
if answerAgain == ("Yes", "yes", "ya", "Ya", "Okay", "Sure", "Si", "Start"):
start = True
else:
start = False
这样,如果 start == True,您的整个代码将再次 运行。
我还建议您使用列表进行回复。
responses = ["Super Close", "Pretty Close", "Fairly Close", "Not Really Close", "Far"]
这样您就可以使用差异映射到适当的响应:
print responses[abs(answer - randomNum) - 1]
- 如果您使用用户提供的数字和您的随机数之间的绝对值,您只需记录一半的案例(即 -1 和 +1 得到相同的处理)。
- 与其在每个案例之后询问他们的新答案,不如将此代码移至主循环的顶部,因为它是程序开始时的请求,并遵循所有 'wrong' 个答案。
- 对于用法,您可能希望将所有 'word' 答案转换为小写,因为在这种情况下大小写似乎无关紧要。
- 您可以使用
quit()
彻底退出程序。
所以可能是这样的:
import random
while(True):
randomNum = random.randint(1, 10)
answer = 0
while abs(answer - randomNum) > 0:
answer = int(input("Try to guess a random number between 1 and 10. "))
if abs(answer - randomNum) == 1:
print("Super Close")
elif abs(answer - randomNum) == 2:
print("Pretty Close")
# the other cases ...
# gets here if abs(answer - randonNum) == 0, i.e. they guessed right
print("Good Job!", randomNum)
answerAgain = input("Do you want to restart this program ? ")
if answerAgain.lower() in ["yes", "ya", "y", "okay", "sure", "si", "start"]:
pass
else:
print("See ya next time!")
quit()