Я столкнулся с подобной проблемой. Мой проект в контексте - это динамический веб-проект (Java 8 + Tomcat 8), и ошибка для исключения драйвера PostgreSQL: Не найдено подходящего драйвера
. Он был разрешен путем добавления Class.forName("org.postgresql.Driver")
до вызов метода getConnection()
Вот мой пример кода:
try {
Connection conn = null;
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection("jdbc:postgresql://" + host + ":" + port + "/?preferQueryMode="
+ sql_auth,sql_user , sql_password);
} catch (Exception e) {
System.out.println("Failed to create JDBC db connection " + e.toString() + e.getMessage());
}
В Python 2.*
, input
позволяет пользователю ввести любое выражение, например. кортеж:
>>> a, b = input('Two numbers please (with a comma in between): ')
Two numbers please (with a comma in between): 23, 45
>>> print a, b
23 45
В Python 3.*
, input
походит на 2.*
's raw_input
, возвращая вам строку, которая только что набрала пользователь (а не eval
как 2.*
используется input
), поэтому вам нужно будет .split
и / или eval
, и c, но вы также будете БОЛЬШЕ больше контролировать все это.
Вы действительно не можете сделать это способом C (я думаю), но питонический способ сделать это будет (если ваши «входы» имеют промежутки между ними):
raw_answer = raw_input()
answers = raw_answer.split(' ') # list of 'answers'
So вы можете переписать свою попытку:
var1, var2 = raw_input("enter two numbers:").split(' ')
Обратите внимание, что это несколько менее гибко, чем использование «первого» решения (например, если вы добавите пробел в конец, это уже сломается).
Также имейте в виду, что var1 и var2 все равно будут строками с этим методом, если не будут переданы int.
Для n
количество входов объявляет переменную как пустой список и использует тот же синтаксис для продолжения:
>>> x=input('Enter value of a and b').split(",")
Enter value of a and b
1,2,3,4
>>> x
['1', '2', '3', '4']
Вы должны использовать метод split()
, который разбивает вход на два разных входа. Все, что вы переходите в раскол, просматривается, и вход от него отделяется. В большинстве случаев это пробел.
Например, вы вводите вход 23 24 25
. Вы ожидаете 3 разных входа, таких как
num1 = 23
num2 = 24
num3 = 25
Итак, в Python вы можете сделать
num1,num2,num3 = input().split(" ")
Решение, которое я нашел, следующее:
Попросите пользователя ввести два числа, разделенные запятой или другим символом
value = input("Enter 2 numbers (separated by a comma): ")
Затем строка разделяется: n
принимает первое значение, а m
- второе
n,m = value.split(',')
Наконец, чтобы использовать их как целые числа, необходимые для их преобразования
n, m = int(n), int(m)
Это пример кода для ввода двух входов, разделенных командой split и разделителем как «,»
>>> var1, var2 = input("enter two numbers:").split(',')
>>>enter two numbers:2,3
>>> var1
'2'
>>> var2
'3'
Другие варианты разделителей, которые можно использовать, следующие: var1, var2 = input("enter two numbers:").split(',')
var1, var2 = input("enter two numbers:").split(';')
var1, var2 = input("enter two numbers:").split('/')
var1, var2 = input("enter two numbers:").split(' ')
var1, var2 = input("enter two numbers:").split('~')
Путь Python для отображения
printf("Enter two numbers here: ");
scanf("%d %d", &var1, &var2)
будет
var1, var2 = raw_input("Enter two numbers here: ").split()
. Обратите внимание, что нам не нужно явно указывать split(' ')
, потому что split()
использует любые пробелы как разделитель по умолчанию. Это означает, что если мы просто назовем split()
, тогда пользователь мог бы отделить числа, используя вкладки, если он действительно захотел, а также пробелы.,
Python имеет динамическую типизацию, поэтому нет необходимости указывать %d
. Однако, если вы запустили выше, то var1
и var2
будут обе строки. Вы можете преобразовать их в int
с помощью другой строки
var1, var2 = [int(var1), int(var2)]
Или вы могли бы использовать понимание list
var1, var2 = [int(x) for x in [var1, var2]]
. Подводя итог, вы мог бы сделать все с помощью этого однострочного:
# Python 3
var1, var2 = [int(x) for x in input("Enter two numbers here: ").split()]
# Python 2
var1, var2 = [int(x) for x in raw_input("Enter two numbers here: ").split()]
Проверьте эту удобную функцию:
def gets(*types):
return tuple([types[i](val) for i, val in enumerate(raw_input().split(' '))])
# usage:
a, b, c = gets(int, float, str)
return tuple(parser(value) for (parser, value) in zip(types, raw_input(prompt).split(' ')))
.
– 9000
21 March 2017 в 21:22
Если вам нужно взять два целых числа, скажите a, b в python, вы можете использовать функцию карты. Предположим, что вход - [
1 5 3 1 2 3 4 5
, где 1 - тестовый случай, 5 - число значений, а 3 - значение задачи, а в следующей строке - 5 значений, мы можем взять такой ввод, используя этот метод в PYTH 2 .x Версия.
testCases=int(raw_input())
number, taskValue = map(int, raw_input().split())
array = map(int, raw_input().split())
Вы можете заменить 'int' на map () другим необходимым типом данных.
a,b=[int(x) for x in input().split()]
print(a,b)
Выход
10 8
blockquote>10 8
Весь вход будет через строку. Это зависит от вас, чтобы обработать эту строку после ее получения. Если это не так, вы используете метод eval (input ()), но это не рекомендуется для большинства ситуаций.
input_string = raw_input("Enter 2 numbers here: ")
a, b = split_string_into_numbers(input_string)
do_stuff(a, b)
В Python 3, raw_input()
был переименован в input()
.
input([prompt])
Если аргумент приглашения присутствует, он записывается в стандартный вывод без конечной новой строки. Затем функция считывает строку из ввода, преобразует ее в строку (зачищая конечную новую строку) и возвращает ее. Когда EOF читается, EOFError поднимается.
blockquote>Итак, вы можете сделать это
x, y = input('Enter two numbers separating by a space: ').split(); print(int(x) + int(y))
Если вы не ставите два числа, используя пробел, вы получите Исключение
ValueError
. Так что хорошо идти.N.B. Если вам нужно старое поведение
input()
, используйтеeval(input())
Самый простой способ, который я нашел для себя, - использовать функцию split с входом. Как и у вас есть две переменные a, b
a,b=input("Enter two numbers").split()
Вот и все. существует еще один метод (явный метод). Например, вы хотите ввести вход в три значения
value=input("Enter the line")
a,b,c=value.split()
EASY ..
input()
позволяет выполнять произвольный код. Просто введитеexit('pwned!')
в приглашении ввода и посмотрите, что произойдет. – 9000 21 March 2017 в 21:18ValueError
. Отлично. Значит, это не то, что вы имели в виду. Так что не беспокойтесь, используяinput()
сейчас. – unclexo 22 July 2018 в 06:44