第一个脚本中的Python错误TypeError(底部的新请求)

第一个脚本中的Python错误TypeError(底部的新请求),python,Python,脚本的要点是告诉您,从给定的一天算起,一周中的哪一天将在“X”天之后 我已经学了几个小时如何编码了,请耐心听我说 # Prompt the user for input print("This scipt is useful in finding out what day of the week it \ will be after 'X' ammount of days in relation to the current date.") sunday = Sunday = 0 mon

脚本的要点是告诉您,从给定的一天算起,一周中的哪一天将在“X”天之后

我已经学了几个小时如何编码了,请耐心听我说

    # Prompt the user for input
print("This scipt is useful in finding out what day of the week it \
will be after 'X' ammount of days in relation to the current date.")
sunday = Sunday = 0
monday = Monday = 1
tuesday = Tuesday = 2
wednesday = Wednesday = 3
thursday = Thursday = 4
friday = Friday = 5
saturday = Saturday = 6
print(" ")
todaysDate = input("Enter todays date: ")
daysFromToday = int(input("Enter a integer for days from today: "))


# Compute equasion

daysFromDate = ((todaysDate + daysFromToday) % 7)


# Display results
print(" ")
print("Today is", todaysDate, "and in", daysFromToday, "days it will be", daysFromDate)
print("  ")
print("Sunday = 0, \
Monday = 1, \
Tuesday = 2, \
Wednesday = 3, \
Thursday = 4, \
Friday = 5,   \
Saturday = 6")
input("Press enter to close: ")
我的错误是

Traceback (most recent call last):
  File "C:\Desktop\daysfromdate.py", line 18, in <module>
    daysFromDate = ((todaysDate + daysFromToday) % 7)
TypeError: Can't convert 'int' object to str implicitly
现在我的脚本运行得很好,但最后一个问题是,如何用变量的word版本来回答它

电流输出为

Today is 0 and in 100 days it will be 2
我希望是这样

Today is Sunday in 100 days it will be Tuesday

我想你是在用Python3.x吧?如果是,那么

todaysDate = input("Enter todays date: ")
将返回一个字符串(
str
)对象,您应该将其转换为整数,就像您从今天开始的
days所做的那样。即

todaysDate = int(input("Enter todays date: "))
(在较旧的Python版本中,
input
将为您执行此转换。)

编辑:好的,我知道你想做什么了。请考虑不要使用<代码> EVA/CODE >,因为 EVA是一个非常不安全的结构,允许用户执行任意代码。更清洁的解决方案是:

weekdays = {"sunday": 0,
            "monday": 1,
            ...
            "saturday": 6}
dayoftheweek = weekdays[input("Enter the day of the week: ")]

您的代码实际上在我的python版本上运行,但是您的问题可能是变量“todaysDate”,您尚未将其转换为int。请尝试更改:

todaysDate = input("Enter todays date: ")
致:


看看这是否有帮助。

我试过了,但当你在第一个提示(星期日、星期日、星期一等)中使用字母时,它会中断并给出错误“第12行,在todaysDate=int(输入(“输入todays date:”))值错误:int()的无效文本,以10为基数:“Sunday.”我使用eval修复了它(input@user2059268:我明白了。我想你应该输入一个整数。请查看更新后的答案以获得一个干净的解决方案;在用户输入时调用
eval
会带来安全隐患。我尝试使用建议的方法,一下子就发现第4行的语法错误,'weekdays=(“sunday”):0,“说冒号是错误的。为什么eval是一个安全隐患?谢谢你的帮助。使用你的代码更新的代码:@Morris那是一个
{
,而不是
)。至于安全含义:假设你在一个webapp中这样做,用户在一个你随后
eval
的字段中输入
“数据库密码”
?(如果你不相信的话,用谷歌搜索“Python eval security”)。我将它从“todaysDate=input(“输入todays date:”)”改为“todaysDate=eval(输入(“输入todays date:”)”)”,并让它工作起来。int不工作,因为我还想使用字母(如星期日、星期一)
todaysDate = input("Enter todays date: ")
todaysDate = int(input("Enter todays date: "))