Python 不打破while循环

Python 不打破while循环,python,Python,我做了一些代码,将滚动两个骰子,并询问用户多少次。之后,它会询问用户是否想要再次播放。出于某种原因,它不会在应该的时候打破while循环 代码如下: import random again = True rolls = 0 while again == True: rolls = float(raw_input("How many times would you like the dice to roll?")) while rolls >= 1: dice

我做了一些代码,将滚动两个骰子,并询问用户多少次。之后,它会询问用户是否想要再次播放。出于某种原因,它不会在应该的时候打破while循环

代码如下:

import random
again = True
rolls = 0
while again == True:
    rolls = float(raw_input("How many times would you like the dice to roll?"))
    while rolls >= 1:
        dice1 = random.randint(1,6)
        dice2 = random.randint(1,6)
        print dice1 , dice2
        rolls = rolls - 1
    again = raw_input("Would you like to play again?")
    if again == "Yes" or "Y" or "yes" or "y":
        again = True
    else:
        again = False
你们有谁能帮我吗

if again == "Yes" or "Y" or "yes" or "y":
这不是你想的那样。评估结果如下:

if (again == "Yes") or ("Y") or ("yes") or ("y"):
非空字符串在逻辑上是
True
,因此整个语句将始终是
True
。您需要再次将
与每个可能的值进行比较

if again in ("Yes", "Y", "yes", "y"):
# or
if again == "Yes" or again == "Y" or again == "yes" or again == "y":
这不是你想的那样。评估结果如下:

if (again == "Yes") or ("Y") or ("yes") or ("y"):
非空字符串在逻辑上是
True
,因此整个语句将始终是
True
。您需要再次将
与每个可能的值进行比较

if again in ("Yes", "Y", "yes", "y"):
# or
if again == "Yes" or again == "Y" or again == "yes" or again == "y":

问题在于这一行:

if again == "Yes" or "Y" or "yes" or "y":
其结果是:

if (again == "Yes") or "Y" or "yes" or "y":
换句话说,这永远是真的。你是说:

if again in ("Yes", "Y", "yes", "y"):

问题在于这一行:

if again == "Yes" or "Y" or "yes" or "y":
其结果是:

if (again == "Yes") or "Y" or "yes" or "y":
换句话说,这永远是真的。你是说:

if again in ("Yes", "Y", "yes", "y"):
线路

if again == "Yes" or "Y" or "yes" or "y":
是错误的,并且总是会返回正确的。要修复它,请将其更改为

 if again == "Yes" or again == "Y" or again == "yes" or again == "y":
这是因为非空字符串总是真实的。由于您只是在第一个表达式中再次比较字符串,因此在其他表达式中,您只需检查字符串“Y”是否为空。由于该字符串是硬编码的,因此它始终为真

这样做也可能更整洁

#Uppercase the input and then check if user said yes
if again.upper() in ("YES","Y"):
    do_the_thing()
线路

if again == "Yes" or "Y" or "yes" or "y":
是错误的,并且总是会返回正确的。要修复它,请将其更改为

 if again == "Yes" or again == "Y" or again == "yes" or again == "y":
这是因为非空字符串总是真实的。由于您只是在第一个表达式中再次比较字符串,因此在其他表达式中,您只需检查字符串“Y”是否为空。由于该字符串是硬编码的,因此它始终为真

这样做也可能更整洁

#Uppercase the input and then check if user said yes
if again.upper() in ("YES","Y"):
    do_the_thing()

问题在你的陈述中

if again == "yes" or "Y" or "yes" or "y"
python中的语句求值为True,除非它们等于0或不等于False

你必须这么做

if again == "Yes" or again == "Y" or again == "yes" etc.

这是因为
或“Y”或“yes”总是计算为True。

问题在于您的语句

if again == "yes" or "Y" or "yes" or "y"
python中的语句求值为True,除非它们等于0或不等于False

你必须这么做

if again == "Yes" or again == "Y" or again == "yes" etc.
这是因为
或“Y”或“yes”总是计算为True。

以下工作:

import random
again = True
rolls = 0
while again == True:
    rolls = float(raw_input("How many times would you like the dice to roll?"))
    while rolls >= 1:
        dice1 = random.randint(1,6)
        dice2 = random.randint(1,6)
        print dice1 , dice2
        rolls = rolls - 1
    again = raw_input("Would you like to play again?")
    # It correct and more short
    again = True if again in  ("Yes", "Y", "yes", "y") else False
以下工作:

import random
again = True
rolls = 0
while again == True:
    rolls = float(raw_input("How many times would you like the dice to roll?"))
    while rolls >= 1:
        dice1 = random.randint(1,6)
        dice2 = random.randint(1,6)
        print dice1 , dice2
        rolls = rolls - 1
    again = raw_input("Would you like to play again?")
    # It correct and more short
    again = True if again in  ("Yes", "Y", "yes", "y") else False

python版本2.7.3和while rolls>=1表示rolls大于或等于1 python版本2.7.3和while rolls>=1表示rolls大于或等于1 Hanks Dude!很好,谢谢你,伙计!效果很好。