虽然循环垃圾邮件输出而不是一次打印输出?

While loop spaming output instead of printing output once?

我经常玩猜数字游戏。当我输入猜测时我遇到了问题,程序垃圾邮件越来越低或越来越高,而不是只输入一次,因为我正在使用 while True 循环。

这里我只是打开 CSV 文件并选择一个随机数。

import random

numbers = open('numbers_1-200.csv').read().splitlines()
number = int(random.choice(numbers))

我在这里导入数字 1-50 并选择两个随机数,这两个数字将与原始数字相加和相减。所以计算机可以写出两个数字在原始数字之间。

我知道我可以让程序从包含 1-200 数字的同一 CSV 的前五十行中选择两个数字,但我选择制作另一个只有数字 1-50 的 CSV。

differences = open('numbers_1-50').read().splitlines()
difference = int(random.choice(differences))
difference2 = int(random.choice(differences))
clue = number + difference
clue2 = number - difference2

这是我的欢迎屏幕,最后一行还包括主程序¨

def welcome_screen():
    print('The number is between ' + str(clue) + ' and ' + str(clue2))
    print('Guess the number: ')
    guess_the_number()

这是你猜数字的循环

def guess_the_number():
    guess = int(input())
    while True:
        if guess == number:
            print('Correct! The number was' + str(number))
            break
        elif guess > number:
            print('Lower')
        elif guess < number:
            print('Higher')

我得到像 theese 这样的输出:

The number is between 45 and 97
Guess the number: 72
lower
lower
lower
lower
lower
lower
lower
lower

我怎样才能得到一次只说 "lower"(或 "higher")然后我可以再次猜测的输出?

def guess_the_number():
    while True:
        guess = int(input())
        if guess == number:
            print('Correct! The number was' + str(number))
            break
        elif guess > number:
            print('Lower')
        elif guess < number:
            print('Higher')

只需将 input 函数移动到 while 循环中即可:

def guess_the_number():
    while True:
        guess = int(input())
        if guess == number:
            print('Correct! The number was' + str(number))
            break
        elif guess > number:
            print('Lower')
        elif guess < number:
            print('Higher')