Математика на пакете (победа)

Да, это - таблица отображения хеша или хэш-таблица. Можно прочитать описание dict реализации Python, как записано Tim Peters, здесь .

Вот почему Вы не можете использовать что-то 'не hashable' как dict ключ, как список:

>>> a = {}
>>> b = ['some', 'list']
>>> hash(b)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: list objects are unhashable
>>> a[b] = 'some'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: list objects are unhashable

Вы можете читать больше о проверке хэш-таблиц или , как она была реализована в python и , почему она реализована тот путь .

15
задан Linger 18 July 2012 в 21:18
поделиться

3 ответа

Команда set поддерживает некоторые ограниченные вычисления. В вашем случае вы хотите: set / a result = (100 * x) / y

Запустите set /? , чтобы увидеть полную документацию о том, что поддерживается. Переключатель / a выполняет автоматическую подстановку переменных, поэтому вы можете использовать x вместо % x% .

33
ответ дан 1 December 2019 в 00:33
поделиться

НЕ выполняйте вычисления в пакетном режиме. Если вы используете процентное значение, у вас могут быть десятичные дроби, а пакет не поддерживает десятичные дроби. (Плавающий). Используйте vbscript или что-то лучше.

сохраните ниже как caculate.vbs

Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
x = objArgs(0)
y = objArgs(1)
WScript.Echo ( x + 1 ) * 100  / y

и в командной строке

c:\test> cscript //nologo calculate.vbs 4 5
3
ответ дан 1 December 2019 в 00:33
поделиться
@echo off

set x=42
set y=5

set /a z = 100 * x / y

echo %z%

Команда set / a позволяет присвоить результат математического выражения переменной (при этом % имена переменных в этих выражениях не требуются). См. set /? для получения списка поддерживаемых операторов и подробностей.

Обратите внимание, что командные файлы Windows не поддерживают арифметику с плавающей запятой, поэтому, если результатом выражения является дробное число, только целая часть будут засчитаны. Например, 3/2 оценивается как 1 и 2/3 как 0 .

8
ответ дан 1 December 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: