одновременное присвоение в python [duplicate]

Я столкнулся с подобной проблемой. Мой проект в контексте - это динамический веб-проект (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());
        }
27
задан Jonta 23 October 2011 в 19:21
поделиться

14 ответов

В 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, но вы также будете БОЛЬШЕ больше контролировать все это.

8
ответ дан Alex Martelli 20 August 2018 в 12:51
поделиться
  • 1
    О нет. Никогда не делайте этого: input() позволяет выполнять произвольный код. Просто введите exit('pwned!') в приглашении ввода и посмотрите, что произойдет. – 9000 21 March 2017 в 21:18
  • 2
    @ 9000 У меня есть исключение ValueError. Отлично. Значит, это не то, что вы имели в виду. Так что не беспокойтесь, используя input() сейчас. – unclexo 22 July 2018 в 06:44

Вы действительно не можете сделать это способом C (я думаю), но питонический способ сделать это будет (если ваши «входы» имеют промежутки между ними):

raw_answer = raw_input()
answers = raw_answer.split(' ') # list of 'answers'

So вы можете переписать свою попытку:

var1, var2 = raw_input("enter two numbers:").split(' ')

Обратите внимание, что это несколько менее гибко, чем использование «первого» решения (например, если вы добавите пробел в конец, это уже сломается).

Также имейте в виду, что var1 и var2 все равно будут строками с этим методом, если не будут переданы int.

8
ответ дан ChristopheD 20 August 2018 в 12:51
поделиться

Для 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']
1
ответ дан Dadep 20 August 2018 в 12:51
поделиться

Вы должны использовать метод split(), который разбивает вход на два разных входа. Все, что вы переходите в раскол, просматривается, и вход от него отделяется. В большинстве случаев это пробел.

Например, вы вводите вход 23 24 25. Вы ожидаете 3 разных входа, таких как

num1 = 23
num2 = 24
num3 = 25

Итак, в Python вы можете сделать

num1,num2,num3 = input().split(" ")
3
ответ дан DeeJay 20 August 2018 в 12:51
поделиться

Решение, которое я нашел, следующее:


Попросите пользователя ввести два числа, разделенные запятой или другим символом

value = input("Enter 2 numbers (separated by a comma): ")

Затем строка разделяется: n принимает первое значение, а m - второе

n,m = value.split(',')

Наконец, чтобы использовать их как целые числа, необходимые для их преобразования

n, m = int(n), int(m)


2
ответ дан E. Zavala 20 August 2018 в 12:51
поделиться

Это пример кода для ввода двух входов, разделенных командой 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('~')

1
ответ дан Jagannath Banerjee 20 August 2018 в 12:51
поделиться

Путь 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()]
45
ответ дан kizzx2 20 August 2018 в 12:51
поделиться

Проверьте эту удобную функцию:

def gets(*types):
    return tuple([types[i](val) for i, val in enumerate(raw_input().split(' '))])

# usage:
a, b, c = gets(int, float, str)
2
ответ дан Mikołaj Rozwadowski 20 August 2018 в 12:51
поделиться
  • 1
    Индексный доступ не нужен! 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 () другим необходимым типом данных.

6
ответ дан Rishabh Prasad 20 August 2018 в 12:51
поделиться
a,b=[int(x) for x in input().split()]
print(a,b)

Выход

10 8

10 8

0
ответ дан Siddharth jha 20 August 2018 в 12:51
поделиться

Весь вход будет через строку. Это зависит от вас, чтобы обработать эту строку после ее получения. Если это не так, вы используете метод eval (input ()), но это не рекомендуется для большинства ситуаций.

input_string = raw_input("Enter 2 numbers here: ")
a, b = split_string_into_numbers(input_string)
do_stuff(a, b)
3
ответ дан sykora 20 August 2018 в 12:51
поделиться

В Python 3, raw_input() был переименован в input().

input([prompt])

Если аргумент приглашения присутствует, он записывается в стандартный вывод без конечной новой строки. Затем функция считывает строку из ввода, преобразует ее в строку (зачищая конечную новую строку) и возвращает ее. Когда EOF читается, EOFError поднимается.

Итак, вы можете сделать это

x, y = input('Enter two numbers separating by a space: ').split();
print(int(x) + int(y))

Если вы не ставите два числа, используя пробел, вы получите Исключение ValueError. Так что хорошо идти.

N.B. Если вам нужно старое поведение input(), используйте eval(input())

0
ответ дан unclexo 20 August 2018 в 12:51
поделиться

Самый простой способ, который я нашел для себя, - использовать функцию split с входом. Как и у вас есть две переменные a, b

a,b=input("Enter two numbers").split()

Вот и все. существует еще один метод (явный метод). Например, вы хотите ввести вход в три значения

value=input("Enter the line")
a,b,c=value.split()

EASY ..

1
ответ дан user8258851 20 August 2018 в 12:51
поделиться
0
ответ дан Madhur Bhaiya 31 October 2018 в 10:21
поделиться
Другие вопросы по тегам:

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