Подтвердить что ты не робот

Основной вопрос о "пока истине"

Уровень: новичок

def play_game(word_list):
    hand = deal_hand(HAND_SIZE) # random init
    while True:
        cmd = raw_input('Enter n to deal a new hand, r to replay the last hand, or e to end game: ')
        if cmd == 'n':
            hand = deal_hand(HAND_SIZE)
            play_hand(hand.copy(), word_list)
            print
        elif cmd == 'r':
            play_hand(hand.copy(), word_list)
            print
        elif cmd == 'e':
            break
        else:
            print "Invalid command."

мой вопрос: а ЧТО ИСТИНА?

Я считаю, что "while true" является сокращением, но для чего? а переменной "рука" присваивается значение? и что, если переменной 'hand' не присваивается значение?

4b9b3361

Ответ 1

while True означает цикл навсегда. Оператор while принимает выражение и выполняет тело цикла, в то время как выражение оценивается как (boolean) "true". True всегда оценивает значение boolean "true" и, таким образом, выполняет цикл цикла бесконечно. Это идиома, что вы просто привыкнете в конце концов! Большинство языков, с которыми вы, вероятно, столкнетесь, имеют эквивалентные идиомы.

Обратите внимание, что большинство языков обычно имеют некоторый механизм для выхода из цикла раньше. В случае Python это оператор break в cmd == 'e' случае образца в вашем вопросе.

Ответ 2

мой вопрос: а ЧТО ИСТИНА?

Пока True True.

Цикл while будет работать до тех пор, пока условное выражение примет значение True.

Так как True всегда оценивается как True, цикл будет выполняться неопределенно, пока что-то внутри цикла return или break s.

Ответ 3

тогда как True истинно, т.е. всегда. Это бесконечный цикл

Обратите внимание на важное различие между True, которое является ключевым словом на языке, обозначающим постоянное значение определенного типа, и "true", которое является математическим понятием.

Ответ 4

мой вопрос: а ЧТО ИСТИНА?

Все внутри оператора() оператора while будет оцениваться как логическое. Это означает, что он преобразуется в true или false.

Рассмотрим в утверждении while(6 > 5)

Сначала оценивается выражение 6 > 5, которое равно true, так же, как и выражение while(true)

Все, что не является FALSE, 0, строка emptry "", null или undefined, скорее всего, будет оценена как true.

Когда я только начинал программировать, я использовал такие вещи, как if(foo == true), я не понимал, что это практически то же самое, что и if(foo).

Итак, когда вы говорите while(true), как говорят while(true == true)

Итак, чтобы ответить на ваш вопрос: хотя TRUE истинно.

Ответ 5

В этом контексте, я полагаю, это можно было бы интерпретировать как

do
...
while cmd  != 'e' 

Ответ 6

Формально True представляет собой Python встроенная константа bool.

Вы можете использовать логические операции на типах bool (например, в интерактивной подсказке python) и конвертировать числа в типы bool:

>>> print not True
False
>>> print not False
True
>>> print True or False
True
>>> print True and False
False
>>> a=bool(9)
>>> print a
True
>>> b=bool(0)
>>> print b
False
>>> b=bool(0.000000000000000000000000000000000001)
>>> print b
True

И есть "gotcha" потенциально с тем, что вы видите и что видит компилятор Python:

>>> n=0
>>> print bool(n)
False
>>> n='0'
>>> print bool(n)
True
>>> n=0.0
>>> print bool(n)
False
>>> n="0.0"
>>> print bool(n)
True

В качестве намека на то, как Python хранит типы bool внутри, вы можете использовать типы bool для целых чисел, а True будет равным 1 и False 0:

>>> print True+0
1
>>> print True+1
2
>>> print False+0
0
>>> print False+1
1

Фактически, тип Python bool является подклассом типа Python int:

>>> type(True)
<type 'bool'>
>>> isinstance(True, int)
True

Более важная часть вашего вопроса: "Что такое while True?" "что есть Истина" и важное следствие: что такое ложь?

Во-первых, для каждого языка, который вы изучаете, изучите, что язык считает "правдивым" и "ложным". Python считает Truth несколько иначе, чем Perl Truth например. На других языках несколько разных концепций true/false. Знайте, что ваш язык считает True и False для разных операций и управления потоком, чтобы избежать многих головных болей позже!

Существует много алгоритмов, в которых вы хотите что-то обработать, пока не найдете то, что ищете. Следовательно, бесконечный цикл или неопределенный цикл. У каждого языка есть своя идиома для этих конструкций. Вот общие C бесконечные циклы, которые также работают для Perl:

for(;;) { /* loop until break */ }

/* or */

while (1) {
   return if (function(arg) > 3);
}

Форма while True: распространена в Python для неопределенных циклов с некоторым выходом из цикла. Изучите Python управление потоком, чтобы понять, как вы выходите из циклов while True. В отличие от большинства языков, например, Python может иметь предложение else в цикле. В последней ссылке есть пример.

Ответ 7

True всегда True, поэтому while True будет зацикливаться навсегда.

Ключевое слово while принимает выражение и циклы, пока выражение истинно. True - это выражение, которое всегда верно.

В качестве возможного поясняющего примера рассмотрим следующее:

a = 1
result = a == 1

Здесь a == 1 вернет True и, следовательно, поместит True в result. Следовательно,

a = 1
while a == 1:
  ...

эквивалентно:

while True:
  ...

если вы не изменяете значение a внутри цикла while.

Ответ 8

A while loop принимает условный аргумент (что означает то, что обычно является либо истинным, либо ложным, или может быть интерпретировано как таковое), и выполняется только тогда, когда условие дает True.

Что касается while True? Ну, самый простой истинный условный True сам! Итак, это бесконечный цикл, обычно хороший в игре, требующей много циклов. (Более часто с моей точки зрения, однако, заключается в том, чтобы установить какую-то "сделанную" переменную в false, а затем сделать это правдой, чтобы закончить игру, и цикл будет больше похож на while not done: или что-то еще.)

Ответ 9

В некоторых языках True - это просто и псевдоним для числа. Вы можете узнать больше, почему это, читая больше о логической логике.

Ответ 10

Циклы

while продолжаются до тех пор, пока условие не станет ложным. Например (псевдокод):

i = 0
while i < 10
  i++

При каждой итерации цикла i будет увеличиваться на 1, пока не будет 10. В этой точке условие i < 10 перестает быть истинным, и цикл будет завершен.

Так как условие в while True явно и всегда true, цикл никогда не закончится (пока он не будет разбит каким-либо другим способом, обычно с помощью конструкции типа break внутри тела цикла).

Ответ 11

Ничто не сравнивается с True быстрее, чем True. Итак, хорошо, если вы используете while True вместо while 1==1 и т.д.

Ответ 12

while True:
    ...

означает бесконечный цикл.

Оператор while часто используется для конечного цикла. Но использование константы "Истина" гарантирует повторение оператора while без необходимости контролировать цикл (например, задание булевого значения внутри итерации), если вы не хотите его сломать.

Фактически

True == (1 == 1)

Ответ 13

в то время как True означает бесконечный цикл, это обычно используется длительным процессом. вы можете изменить

while True:

с

while 1:

Ответ 14

Чтобы ответить на ваш вопрос напрямую: пока условие цикла равно True. Это всегда так, в этом конкретном бите кода.

Ответ 15

Все, что угодно, можно считать True, пока не будет представлено противоположное. Так работает дуальность. Это способ сравнения противоположностей. Черный может быть True до белого, в этот момент это False. Черным также может быть False до белого, после которого оно истинно. Это не состояние, а сравнение противоположных состояний. Если либо Истина, другая ошибается. Правда не означает, что это правильно или принято. Это состояние, в котором противоположность всегда ложна. Это двойственность.