Согласно doc (
blockquote>http://www.w3schools.com/jsref/jsref_sethours.asp
) setHours () должен просто изменить значение часа объекта даты, а не преобразовать его.В этом документе говорится:
Возвращаемое значение: число, представляющее количество миллисекунд между объектом даты и полночь 1 января 1970 г.
blockquote>Это не convert объект даты. Он изменяет существующий, а затем возвращает значение.
Созданный ранее объект даты до сих пор существует с измененным значением часа и любыми ссылками на него (например, тот, который у вас еще есть в переменной с именем
date
).
Python 2.x
Для ввода пользовательских данных использовались две функции: input
и raw_input
. Разница между ними заключается в том, что raw_input
не оценивает данные и не возвращает их в виде строки. Но input
будет оценивать все, что вы ввели, и результат оценки будет возвращен. Например,
>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)
Данные 5 + 17
оцениваются, а результат - 22
. Когда он оценивает выражение 5 + 17
, он обнаруживает, что вы добавляете два числа, и поэтому результат будет иметь одинаковый тип int
. Таким образом, преобразование типа выполняется бесплатно, а 22
возвращается в результате input
и сохраняется в переменной data
. Вы можете думать о input
как raw_input
, состоящем из вызова eval
.
>>> data = eval(raw_input("Enter a number: "))
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)
Примечание: вы должны быть осторожны, когда используете input
в Python 2.x. Я объяснил, почему нужно быть осторожным при его использовании, в этом ответе .
Но raw_input
не оценивает ввод и возвращает его как строку, как строку.
>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = raw_input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <type 'str'>)
Python 3.x
Python 3.x input
и Python 2.x raw_input
похожи, а raw_input
недоступен в Python 3.x.
>>> import sys
>>> sys.version
'3.4.0 (default, Apr 11 2014, 13:05:11) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <class 'str'>)
Решение
Чтобы ответить на ваш вопрос, поскольку Python 3.x не оценивает и не конвертирует тип данных, вам необходимо явно преобразовать его в int
s, с int
, как это
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
Вы можете принимать номера любой базы и преобразовывать их непосредственно в base-10 с помощью функции int
, например
>>> data = int(input("Enter a number: "), 8)
Enter a number: 777
>>> data
511
>>> data = int(input("Enter a number: "), 16)
Enter a number: FFFF
>>> data
65535
>>> data = int(input("Enter a number: "), 2)
Enter a number: 10101010101
>>> data
1365
Второй параметр указывает, что является базой введенных чисел, а затем внутренне понимает и преобразует его. Если введенные данные ошибочны, он выдаст ValueError
.
>>> data = int(input("Enter a number: "), 2)
Enter a number: 1234
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '1234'
Кроме того, ваша программа может быть немного изменена, например
while True:
...
...
if input("Play again? ") == "no":
break
Вы можете избавиться от переменной play
, используя break
и while True
.
PS: Python не ожидает ;
в конце строки:)
Я столкнулся с проблемой получения целочисленного ввода при решении задачи на CodeChef , где две целые числа, разделенные пробелом, должны быть считаны из одной строки.
Пока int(input())
достаточно для одного целого числа, я не нашел прямого способа ввода двух целых чисел. Я пробовал это:
num = input()
num1 = 0
num2 = 0
for i in range(len(num)):
if num[i] == ' ':
break
num1 = int(num[:i])
num2 = int(num[i+1:])
Теперь я использую num1 и num2 как целые числа. Надеюсь, это поможет.
i
уничтожен, когда цикл for
завершен?
– Hosch250
23 May 2014 в 17:33
@hosch250
Когда цикл завершен, значение индексной переменной (здесь i
) остается. Я попробовал эту штуку, и она работает правильно.
– Aravind
24 May 2014 в 16:18
num1, num2 = map(int, input().split())
, если знаете, сколько целых чисел вы встретите, или nums = list(map(int, input().split()))
, если вы этого не сделаете.
– Mathias Ettinger
12 July 2018 в 12:58
Несколько вопросов требуют ввода нескольких целых чисел в одной строке. Лучший способ - ввести всю строку чисел одну строку, а затем разделить на целые числа.
p=raw_input()
p=p.split()
for i in p:
a.append(int(i))
По умолчанию функция ввода принимает входные данные в качестве формата строки
для другого типа данных, который вы должны вводить пользователю
. В Python 2 мы используем функцию raw_input (). он ждет, когда пользователь наберет какой-то ввод и нажмите «возврат», и нам нужно сохранить значение в переменной путем кастинга в качестве нашего типа данных желания. Будьте осторожны при использовании литья типа
x = raw_input("Enter a number: ") #String input
x = int(raw_input("Enter a number: ")) #integer input
x = float(raw_input("Enter a float number: ")) #float input
x = eval(raw_input("Enter a float number: ")) #eval input
В Python 3 мы используем функцию input (), которая возвращает значение входного пользователя
x = input("Enter a number: ") #String input
, если вы вводите строку, int, float , eval будет принимать в качестве ввода строки
x = int(input("Enter a number: ")) #integer input
, если вы введете строку для int cast ValueError: недействительный литерал для int () с базой 10:
x = float(input("Enter a float number: ")) #float input
, если вы введите строку для float cast ValueError: не удалось преобразовать строку в float
x = eval(input("Enter a float number: ")) #eval input
, если вы введете строку для eval cast
NameError: name '' не определено
blockquote>Эти ошибки также применимы для python 2
Python 3.x имеет функцию input()
, которая всегда возвращает строку. Поэтому вы должны преобразовать в int
python 3.x
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
python 2.x
В функциях python 2.x raw_input()
и input()
всегда возвращает строку, поэтому вы должны также преобразовать их в int.
x = int(raw_input("Enter a number: "))
y = int(input("Enter a number: "))
В Python 3.x, raw_input
был переименован в input
, а Python 2.x input
удален.
Это означает, что так же, как raw_input
, input
в Python 3.x всегда возвращает строковый объект.
Чтобы устранить проблему, вам нужно явно вставить эти вводы в целые числа, поместив их в int
:
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
Кроме того, Python не нужен / не использует точки с запятой для завершения строк. Итак, если они не делают ничего позитивного.
В Python 3.x. По умолчанию функция ввода принимает входные данные в строчном формате. Чтобы преобразовать его в целое число, вам нужно включить int (input ())
x=int(input("Enter the number"))
input()
(Python 3) и raw_input()
(Python 2) всегда возвращают строки. Преобразуйте результат в целое число с помощью int()
.
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
Pro tip: в Python не нужны полуколоны.
n=int(input())
for i in range(n):
n=input()
n=int(n)
arr1=list(map(int,input().split()))
цикл for должен запускать 'n' количество раз. вторая «n» - длина массива. последний оператор отображает целые числа в список и принимает входные данные в форме, разделенной пробелом. вы также можете вернуть массив в конце цикла for.
Принимая int в качестве входа в python: мы берем простой строковый ввод, используя:
input()
теперь мы хотим int как input.so мы выводим эту строку в int. просто используя:
int(input())
def dbz():
try:
r = raw_input("Enter number:")
if r.isdigit():
i = int(raw_input("Enter divident:"))
d = int(r)/i
print "O/p is -:",d
else:
print "Not a number"
except Exception ,e:
print "Program halted incorrect data entered",type(e)
dbz()
Or
num = input("Enter Number:")#"input" will accept only numbers
Хотя в вашем примере int(input(...))
делает трюк в любом случае, python-future
's builtins.input
заслуживает внимания, поскольку это гарантирует, что ваш код работает как для Python 2, так и для 3 и отключает поведение Python2 по умолчанию input
, пытающееся быть «умным» относительно типа входных данных (builtins.input
в основном ведет себя как raw_input
).
Для нескольких целых чисел в одной строке карта может быть лучше.
arr = map(int, raw_input().split())
Если число уже известно (например, 2 целых числа), вы можете использовать
num1, num2 = map(int, raw_input().split())
Да, в python 3.x, raw_input
заменяется на input
. Чтобы вернуться к старому поведению input
, используйте:
eval(input("Enter a number: "))
Это позволит питону знать, что введенный ввод является целым числом
Преобразовать в целые числа:
my_number = int(input("enter the number"))
Аналогично для чисел с плавающей запятой:
my_decimalnumber = float(input("enter the number"))
eval
будет работать, но не пойду на это, если у вас нет насущных причин. – thefourtheye 9 April 2016 в 07:01input()
иeval(input())
– Elazar 13 November 2017 в 02:19ast.literal_eval
для этого. У него нет проблем безопасностиeval
. – spectras 6 April 2018 в 12:48int(input()
... вверху? Python 2 близится к концу своей жизни, а информация о python 3 слишком похожа на IMO – Chris_Rands 24 July 2018 в 14:36