Py学习  »  Python

Python中数字的处理

Gary Hu • 4 年前 • 817 次点击  

answer = "SOPHIA"
guess = ""
attempt = 3


guess = input("TYPE YOUR ANSWER: ")

while guess != answer and attempt > 1 :
    attempt = attempt - 1
    print("WRONG ANSWER. ATTEMPT REMAINING: " + str(attempt))
    guess = input("TYPE YOUR ANSWER AGAIN: ")

if attempt == 0:
    print("NO MORE ATTEMPT REMAINING.")
else:
    print("CORRECT ANSWER.")

当我执行上述代码时,结果是

TYPE YOUR ANSWER: Leon
WRONG ANSWER. ATTEMPT REMAINING: 2
TYPE YOUR ANSWER AGAIN: Raphael
WRONG ANSWER. ATTEMPT REMAINING: 1
TYPE YOUR ANSWER AGAIN: Michael
CORRECT ANSWER.

三次答错后,我应该得到“再也没有尝试了”,而我得到的是“正确的答案”。我是否误解了Python中数字的工作原理。我知道答案应该很简单,但我还是搞不懂。有人能告诉我哪里错了吗?

谢谢你们,伙计们。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53998
 
817 次点击  
文章 [ 4 ]  |  最新文章 4 年前
yourFriendlyNeighbor
Reply   •   1 楼
yourFriendlyNeighbor    4 年前
TYPE YOUR ANSWER: ken
WRONG ANSWER. ATTEMPT REMAINING: 2
TYPE YOUR ANSWER AGAIN: seth
WRONG ANSWER. ATTEMPT REMAINING: 1
TYPE YOUR ANSWER AGAIN: cue
1
CORRECT ANSWER.

answer = "SOPHIA"
guess = ""
attempt = 3

while attempt > 0 :
    guess = input("TYPE YOUR ANSWER: ")
    if guess == answer:
        break
    attempt = attempt - 1
    print("WRONG ANSWER. ATTEMPT REMAINING: ")


if attempt == 0:
    print("NO MORE ATTEMPT REMAINING.")
else:
    print("CORRECT ANSWER.")

这样,就可以得到所需的迭代次数。否则,如果将条件更改为:

while guess != answer and attempt > 0:

TYPE YOUR ANSWER: ken
WRONG ANSWER. ATTEMPT REMAINING: 
TYPE YOUR ANSWER: brian
WRONG ANSWER. ATTEMPT REMAINING: 
TYPE YOUR ANSWER: abdul
WRONG ANSWER. ATTEMPT REMAINING:
TYPE YOUR ANSWER: SOPHIA
WRONG ANSWER. ATTEMPT REMAINING:
NO MORE ATTEMPT REMAINING.
Vishal
Reply   •   2 楼
Vishal    4 年前

猜猜看!=回答并尝试>0:

user9113784
Reply   •   3 楼
user9113784    4 年前

使用这个:

while guess != answer and attempt >= 1

实际上,在第三次错误回答的情况下,您的代码没有将尝试变量更改为0,尝试变量保持为1,因此正在执行else块

user9113784
Reply   •   4 楼
user9113784    4 年前

您应该将循环条件更改为:

while guess != answer and attempt > 0:

while guess != answer and attempt => 1:

在你以前的版本中

while guess != answer and attempt > 1:

attempt=1 这就是为什么这种情况 if attempt == 0: 从来不是真的。