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

时间:2019-08-22 10:12:21

标签: python csv while-loop int

我经常猜数字游戏。输入猜测时,程序垃圾邮件会变低或变高,而不仅仅是输入一次,这是我遇到的问题,因为我使用的是True True循环。

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

import random

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

在这里,我要导入数字1-50并选择两个随机数,这将是原始数字的加法和减法。因此计算机可以在原始数字介于两者之间的地方写两个数字。

我知道我可以让程序从同一CSV的前五十行中选择两个数字,其中包括1-200的数字,但是我选择制作另一个仅包含数字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')

我正在获得像泰斯语的输出:

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

如何获得一次仅表示“较低”(或“较高”)的输出,然后我又可以猜测?

2 个答案:

答案 0 :(得分:0)

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')

答案 1 :(得分:0)

只需在while循环内移动input函数:

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')
相关问题