如何使特定的代码行在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.")
答案 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)
您应该在循环之外请求用户名,并在循环开始时请求输入。
在循环内部,您将在最后创建输出,并在下一次迭代中请求输入。第一次迭代也一样:创建输出(在循环外部),然后请求输入(在循环内部的第一件事)