Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 7, 2015 00:01:01

Hrafova_Aleksandra
Зарегистрирован: 2015-08-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

strptime - что это?

Ребята, помогите, плиз! Пайтон только начинаю изучать. Еще ничего толком делать не начала, а уже какие-то непонятности(( в общем, нужно ввести дату рождения и ее же вывести. Вот код:
import datetime

userInput = input('Enter your birthday ‘)
birthday = datetime.datetime.strptime(userInput, ’%m/%d/%Y')

print(birthday)


вот я ввела данные:
Enter your birthday 25/5/1989

а вот и ошибка:
Traceback (most recent call last):
File “EDate on the Python/Date”, line 12, in <module>
birthday = datetime.datetime.strptime(userInput, ‘%m/%d/%Y’)
TypeError: must be string, not int


В чем проблема, понять не могу! ((
Буду очень признательна за помощь)

Офлайн

#2 Сен. 7, 2015 04:31:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

strptime - что это?

Используй raw_input().



Офлайн

#3 Сен. 7, 2015 10:30:50

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

strptime - что это?

py.user.next
Используй raw_input().
Она на тройке вроде пишет.

Hrafova_Aleksandra
В чем проблема, понять не могу! ((
Просто в кавычках пишите дату. Только если используете формат ’%m/%d/%Y', то так и пишите месяц, день, год.

Отредактировано WoMax (Сен. 7, 2015 10:31:05)

Офлайн

#4 Сен. 7, 2015 12:29:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

strptime - что это?

WoMax
Она на тройке вроде пишет.
>>> s = input()
25/5/1989
>>> s
0
>>>



Офлайн

#5 Сен. 9, 2015 00:43:17

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

strptime - что это?

py.user.next
>>> s = input()
25/5/1989
>>> s
0
>>>
Непонятен Ваш сарказм…
https://docs.python.org/3/library/functions.html?highlight=input#input

Может поясните для ноичков?

Офлайн

#6 Сен. 9, 2015 04:42:22

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

strptime - что это?

Iskatel
Она пишет не на тройке, а на двойке. WoMax не прав в своих суждениях. Код который представил py.user.next - это не сарказм, а намек почему у ТС появилась это проблема.
Все дело в различии функций input на разных версиях питона. Достаточно первых строчек документации что бы выяснить правду, и объяснить результат который получается у py.user.next

python 2.7
input()
Equivalent to eval(raw_input(prompt)).
This function does not catch user errors. If the input is not syntactically valid, a SyntaxError will be raised. Other exceptions may be raised if there is an error during evaluation.
If the readline module was loaded, then input() will use it to provide elaborate line editing and history features.
Consider using the raw_input() function for general input from users.

python 3.4
input()
If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read, EOFError is raised.
If the readline module was loaded, then input() will use it to provide elaborate line editing and history features.

Т.е. при вводе строки 25/5/89 в функцию input второго питона произойдет интерпретация и выполнение этой строки, а именно арифметические действия. Поэтому для ввода пользовательских данных во втором питоне применяется raw_input.




_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Сен. 9, 2015 04:45:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

strptime - что это?

Iskatel
Может поясните для ноичков?
У неё второй питон, потому что строку функция не принимает по причине int. Значит, это не строка. А как так могло получиться?
Очень просто, во втором питоне input() - это eval(raw_input()). Поэтому когда она подаёт такую строку, та начинает вычисляться как математическое выражение - деление и деление, а так как деление во втором питоне целочисленное, то в результате получается 0.
Следовательно, решение - это использовать raw_input().

Одновременно ответили :)



Отредактировано py.user.next (Сен. 9, 2015 04:48:41)

Офлайн

#8 Сен. 13, 2015 14:09:31

Hrafova_Aleksandra
Зарегистрирован: 2015-08-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

strptime - что это?

py.user.next
огромное спасибо за совет! Именно в этом и была проблема. Очень-очень помгли!))) Вдохновленная и счастливая иду дальше))))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version