Python中的模运算错误

Python中的模运算错误,python,csv,newline,Python,Csv,Newline,我有以下代码,其中一个特定的条目组合有一个神秘的错误: 它*似乎“对除输入外的所有其他内容都很好地工作:”Friday“和“1000”,它抛出了一个可变错误 完整代码列表: 代码 #Use of Modulo Arithmetic def main(): DAY="Monday" print("Here's a little modulo magic for ya...") dayofweek=input("Enter day of week (e.g. Monday, Tues

我有以下代码,其中一个特定的条目组合有一个神秘的错误:

它*似乎“对除输入外的所有其他内容都很好地工作:”Friday“和“1000”,它抛出了一个可变错误

完整代码列表:

代码

#Use of Modulo Arithmetic

def main():
  DAY="Monday"
  print("Here's a little modulo magic for ya...")
  dayofweek=input("Enter day of week (e.g. Monday, Tuesday, Wednesday, etc:")
  numberofdays=input("Enter number of days from that day of the week you would like to calculate:")

  if dayofweek=="Monday":
    dow=1 
  elif dayofweek=="Tuesday":
    dow=2 
  elif dayofweek=="Wednesday":
    dow=3 
  elif dayofweek=="Thursday":
    dow=4 
  elif dayofweek=="Friday":
    dow=5 
  elif dayofweek=="Saturday":
    dow=6 
  elif dayofweek=="Sunday":
    dow=7 

  modanswer=int(numberofdays)%7
  answer=modanswer+dow

  if answer==1:
    finalanswer="Monday"
  elif answer==2:
    finalanswer="Tuesday"
  elif answer==3:
    finalanswer="Wednesday"
  elif answer==4:
    finalanswer="Thursday"
  elif answer==5:
    finalanswer="Friday"
  elif answer==6:
    finalanswer="Saturday"
  elif answer==7:
    finalanswer="Sunday"

  print(numberofdays,"days from -",dayofweek,"-will be-",finalanswer)

main()
测试(正确)和错误如下所示

Here's a little modulo magic for ya...
Enter day of week (e.g. Monday, Tuesday, Wednesday, etc: Monday
Enter number of days from that day of the week you would like to calculate: 1000000
1000000 days from - Monday -will be- Tuesday
   main()
Here's a little modulo magic for ya...
Enter day of week (e.g. Monday, Tuesday, Wednesday, etc: Friday
Enter number of days from that day of the week you would like to calculate: 1000
Traceback (most recent call last):
  File "python", line 1, in <module>
  File "python", line 42, in main
UnboundLocalError: local variable 'finalanswer' referenced before assignment
这里有一个小小的模魔术给你。。。
输入星期几(例如星期一、星期二、星期三等:星期一
输入您要计算的一周中该天起的天数:1000000
从星期一到星期二的1000000天
main()
这里有一个小的模魔术给你。。。
输入星期几(例如星期一、星期二、星期三等:星期五
输入您要计算的一周中该天起的天数:1000
回溯(最近一次呼叫最后一次):
文件“python”,第1行,在
文件“python”,第42行,在main中
UnboundLocalError:分配前引用了局部变量“finalanswer”
我在找什么:

我感兴趣的是a)有问题解释的解决方案b)有验证的更优雅的方法来解决问题(也许使用更简单的构造)

modanwer
介于0和6(包括)之间,
dow
介于1和7(包括)之间,因此
answer
介于0和13(包括)之间。您应该在加法后应用模运算。这可能会起作用:

answer = (int(numberofdays) + dow - 1) % 7 +1
需要
-1
+1
,因为
答案介于1和7之间,但模返回的数字介于0和6之间

您可以简单地使用一个列表,0-索引
日数
和模:

days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

day_number = days.index('Friday') # 4
offset = 1000
print(days[(day_number + offset) % 7])
# Thursday
modanwer
介于0和6(包括)之间,
dow
介于1和7(包括)之间,因此
answer
介于0和13(包括)之间。您应该在加法后应用模运算。这可能会起作用:

answer = (int(numberofdays) + dow - 1) % 7 +1
需要
-1
+1
,因为
答案介于1和7之间,但模返回的数字介于0和6之间

您可以简单地使用一个列表,0-索引
日数
和模:

days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

day_number = days.index('Friday') # 4
offset = 1000
print(days[(day_number + offset) % 7])
# Thursday

谢谢!加法后应用模运算会导致错误:answer=modanswer+dow modanswer=int(numberofdays)%7错误取消绑定LocalError:之前引用的局部变量“modanswer”assignment@MissComputing请参阅更新。您不能使用稍后在Python中定义的一行变量。将查看。这难道不起作用吗:modanswer=0 answer=modanswer+dow modanswer=int(numberofdays)%7 print(answer)…似乎!(正如下面由Compoot建议的)@MissComputing我不认为它有意义。
答案
只是
dow
,你不在
modanswer
中使用它。明白了!很有效。谢谢。正如Compoot指出的实际问题,我想我会接受答案(而且是先做的)。我要感谢您,同时也要更新您所有的有用评论!谢谢!在加法后应用模运算会导致一个错误:answer=modanswer+dow modanswer=int(numberofdays)%7错误取消绑定LocalError:之前引用的局部变量“modanswer”assignment@MissComputing请参阅更新。您不能使用稍后在Python中定义的一行变量。将查看。这难道不起作用吗:modanswer=0 answer=modanswer+dow modanswer=int(numberofdays)%7 print(answer)…似乎!(正如下面由Compoot建议的)@MissComputing我不认为它有意义。
答案
只是
dow
,你不在
modanswer
中使用它。明白了!很有效。谢谢。正如Compoot指出的实际问题,我想我会接受答案(而且是先做的).不过我还是要感谢你,同时也要感谢你所有的有益评论!