mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-22 11:04:25 +01:00
Translate What's wrong with booleans? example
This commit is contained in:
parent
8a1536986f
commit
a0069d842e
90
translations/README-ru.md
vendored
90
translations/README-ru.md
vendored
@ -1350,3 +1350,93 @@ SyntaxError: EOF while scanning triple-quoted string literal
|
|||||||
+ `'''` и `"""` также являются разделителями строк в Python, что вызывает SyntaxError, поскольку интерпретатор Python ожидал завершающую тройную кавычку в качестве разделителя при сканировании текущего встреченного строкового литерала с тройной кавычкой.
|
+ `'''` и `"""` также являются разделителями строк в Python, что вызывает SyntaxError, поскольку интерпретатор Python ожидал завершающую тройную кавычку в качестве разделителя при сканировании текущего встреченного строкового литерала с тройной кавычкой.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### ▶ Что не так с логическими значениями?
|
||||||
|
<!-- Example ID: 0bba5fa7-9e6d-4cd2-8b94-952d061af5dd --->
|
||||||
|
1\.
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Простой пример счетчика логических переменных и целых чисел
|
||||||
|
# в итерируемом объекте со значениями разных типов данных
|
||||||
|
mixed_list = [False, 1.0, "some_string", 3, True, [], False]
|
||||||
|
integers_found_so_far = 0
|
||||||
|
booleans_found_so_far = 0
|
||||||
|
|
||||||
|
for item in mixed_list:
|
||||||
|
if isinstance(item, int):
|
||||||
|
integers_found_so_far += 1
|
||||||
|
elif isinstance(item, bool):
|
||||||
|
booleans_found_so_far += 1
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
```py
|
||||||
|
>>> integers_found_so_far
|
||||||
|
4
|
||||||
|
>>> booleans_found_so_far
|
||||||
|
0
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
2\.
|
||||||
|
```py
|
||||||
|
>>> some_bool = True
|
||||||
|
>>> "wtf" * some_bool
|
||||||
|
'wtf'
|
||||||
|
>>> some_bool = False
|
||||||
|
>>> "wtf" * some_bool
|
||||||
|
''
|
||||||
|
```
|
||||||
|
|
||||||
|
3\.
|
||||||
|
|
||||||
|
```py
|
||||||
|
def tell_truth():
|
||||||
|
True = False
|
||||||
|
if True == False:
|
||||||
|
print("I have lost faith in truth!")
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат (< 3.x):**
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> tell_truth()
|
||||||
|
I have lost faith in truth!
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 💡 Объяснение:
|
||||||
|
|
||||||
|
* `bool` это подкласс класса `int` в Python
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> issubclass(bool, int)
|
||||||
|
True
|
||||||
|
>>> issubclass(int, bool)
|
||||||
|
False
|
||||||
|
```
|
||||||
|
|
||||||
|
* `True` и `False` - экземпляры класса `int`
|
||||||
|
```py
|
||||||
|
>>> isinstance(True, int)
|
||||||
|
True
|
||||||
|
>>> isinstance(False, int)
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
* Целочисленное значение `True` равно `1`, а `False` равно `0`.
|
||||||
|
```py
|
||||||
|
>>> int(True)
|
||||||
|
1
|
||||||
|
>>> int(False)
|
||||||
|
0
|
||||||
|
```
|
||||||
|
|
||||||
|
* Объяснение на [StackOverflow](https://stackoverflow.com/a/8169049/4354153).
|
||||||
|
|
||||||
|
* Изначально в Python не было типа `bool` (использовали 0 для false и ненулевое значение 1 для true). В версиях 2.x были добавлены `True`, `False` и тип `bool`, но для обратной совместимости `True` и `False` нельзя было сделать константами. Они просто были встроенными переменными, и их можно было переназначить.
|
||||||
|
|
||||||
|
* Python 3 был несовместим с предыдущими версиями, эту проблему наконец-то исправили, и поэтому последний фрагмент не будет работать с Python 3.x!
|
||||||
|
|
||||||
|
---
|
||||||
|
Loading…
Reference in New Issue
Block a user