使用输入的日期python

问题描述:

我想在python 3中做一个简单的代码,显示你输入月份和日期的那一天。这是代码:使用输入的日期python

from datetime import date 
s = date(2016, 4, 29).weekday() 

if s == 0: 
    print ("mon") 
if s == 1: 
    print ("tue") 
if s == 2: 
    print ("wed") 
if s == 3: 
    print ("thurs") 
if s == 4: 
    print ("fri") 
if s == 5: 
    print ("sat") 
if s == 6: 
    print ("sun") 

上面的代码工作,但我试图做

from datetime import date 
s = date(int(input())).weekday() 
if s == 0: 
    print ("mon") 
if s == 1: 
    print ("tue") 
if s == 2: 
    print ("wed") 
if s == 3: 
    print ("thurs") 
if s == 4: 
    print ("fri") 
if s == 5: 
    print ("sat") 
if s == 6: 
    print ("sun") 

,所以我可以让用户输入自己的一天,但它给了我下面的错误:

Traceback (most recent call last): 
    File "..\Playground\", line 2, in <module> 
    s = date(int(input())).weekday() 
ValueError: invalid literal for int() with base 10: '2016,' 

如果有帮助,我使用了输入2016,4,29。

+2

的可能的复制[ValueError异常:无效字面对于int()与底座10: ''](http://*.com/questions/1841565/valueerror-invalid-literal-for-int-with-base-10 ) – jgr208

+1

'2016,4,29'不是有效整数。 – fukanchik

你可以这样做:

from datetime import date 

usr_date = [int(x) for x in input().split(",")] 
d = date(usr_date[0], usr_date[1], usr_date[2]).weekday() 
print (d) 

datetime.date()预计3点的整数,但input()返回一个字符串。这意味着,我们必须:

  • 分裂用逗号由input()返回的字符串来获得三个部分
  • 将每个部分的整数
  • 饲料这些部分datetime.date()

这使得更有意义,如果你问我:

from datetime import datetime 

d = datetime.strptime(input(), '%Y,%m,%d').weekday() 
print(d) 

datetime.strptime()采用一个字符串作为输入,这很方便,因为input()恰巧会返回一个字符串。这意味着分割和转换/转换不是必需的。您可以在datetime docs中找到strptime()支持的所有不同日期格式。