在while循环内仅执行一次代码行

时间:2019-01-27 11:32:26

标签: python loops while-loop

如何使特定的代码行在while循环内仅执行一次?

我想要这行:  "Hello %s, please enter your guess: " %p1"仅运行一次,而不是每次玩家猜错时都运行一次。

是否可以使用命令或功能,或者必须以不同的方式构造整个游戏?这种形式的程序有简单的解决方法吗?

import random

number = random.randint(1,9)

p1 = input("Please enter your name: ")

count = 0

guess = 0

while guess != number and guess != "exit":

    guess = input("Hello %s, please enter your guess: " % p1)

    if guess == "exit":
        break

    guess = int(guess)
    count += 1

    if guess == number:
        print("Correct! It Took you only", count, "tries. :)")
        break
    elif guess > number:
        print("Too high. Try again.")
    elif guess < number:
        print("Too low. Try again.")

4 个答案:

答案 0 :(得分:3)

必须在每次迭代中要求一个新的swank-否则代码将无休止地循环(在第一次错误的猜测之后)或立即结束。

要更改消息,您可以在打印内容中使用三元(aka:内联guess语句)以使其为有条件的消息:

if

请参见Does Python have a ternary conditional operator?

三元数检查您递增的# [start identical] while guess != number and guess != "exit": guess = input("Hello {}, please enter your guess: ".format(p1) if count == 0 else "Try again: ") # [rest identical] 变量,如果是count则打印一条消息,并在连续运行时输出另一条消息(因为0不再是count )。

您可能还希望切换到更现代的字符串格式形式:str.format - works for 2.7 as well

答案 1 :(得分:2)

您可以创建一个标志变量,例如。 G。

print_username = True

在while循环之前。在循环内部,在循环的第一次迭代后取消选中它:

if print_username:
    guess = input("Hello %s, please enter your guess: " % p1)
    print_username = False
else:
    guess = input("Try a new guess:")

答案 2 :(得分:0)

在while循环中仅执行x次指令的一种方法可能是实现一个计数器,并添加一个if条件,该条件在执行指令之前检查计数器

答案 3 :(得分:0)

您应该在循环之外请求用户名,并在循环开始时请求输入。

在循环内部,您将在最后创建输出,并在下一次迭代中请求输入。第一次迭代也一样:创建输出(在循环外部),然后请求输入(在循环内部的第一件事)

相关问题