Хосты, где вы обращаетесь к своему серверу базы данных, очень редко разрешают удаленный доступ к базе данных из-за пределов своей среды размещения (я ее никогда не видел).
Если вы сами настраиваете базу данных MySql (на выделенном или виртуальном плане сервера), вы должны иметь возможность настроить ее для приема удаленных хостов. В этом случае вам нужно изменить свой файл my.con, чтобы разрешить удаленные хосты (вы также можете сделать это с помощью инструментов MySql Admin), и вам необходимо предоставить логин, который вы пытаетесь использовать для доступа с удаленного IP:
http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html
Ваш предыдущий комментарий о SQLyog - очень хорошая идея. И я могу поручиться за этот продукт. Это отличный инструмент. Бесплатные админ-инструменты из MySql (Workbench - http://www.mysql.com/downloads/workbench/ ) также достойны и позволят вам также проверять удаленный доступ.
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