Python 如何让程序重复,而不让用户关闭外壳?

Python 如何让程序重复,而不让用户关闭外壳?,python,shell,random,numbers,generator,Python,Shell,Random,Numbers,Generator,我很难找到一种方法让用户在不退出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

我很难找到一种方法让用户在不退出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!"
随机导入
randomNum=random.randint(1,10)
开始=真
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#代码不能同时小于和大于。or函数允许这样做
而(答案>随机数)或(答案<随机数):
如果(答案==randomNum+1):
打印“超级关闭”
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#第一个
elif(答案==randomNum+2):
打印“非常接近”
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#第二个
elif(答案==randomNum+3):
打印“相当接近”
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#第三个
elif(答案==randomNum+4):
打印“不是很近”
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#第四个
elif(答案==randomNum+5):
打印“远”
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#第五个
elif(答案==随机数-5):
打印“远”
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#第六一
elif(答案=randomNum-4):
打印“不是很近”
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#第七个
elif(答案==随机数-3):
打印“相当接近”
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#八一
elif(答案==随机数-2):
打印“非常接近”
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#第九
elif(答案==随机数-1):
打印“超级关闭”
答案=int(原始输入(“尝试猜测1到10之间的随机数”)
#第十一
其他:
打印“干得好!”
打印随机数
如果(开始==真):
answerreach=raw\u输入(“是否要重新启动此程序?”)
如果回答再次==(“是”、“是”、“是”、“是”、“是”、“好”、“当然”、“是”、“开始”):
#空的地方,因为我不知道在这里放什么。
其他:
打印“下次再见!”

我想知道如何让所有这些代码应用于一个变量或重复,而不必写50次

将代码放入
中,同时
循环以重复它

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得到相同的处理)
  • 不要在每种情况下都询问他们的新答案,而是将此代码移到主循环的顶部,因为它是在程序开始时发出的请求,并遵循所有“错误”答案
  • 对于用法,您可能希望将所有“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()
    

    将if语句包装到函数中。