Python中的模运算错误
我有以下代码,其中一个特定的条目组合有一个神秘的错误: 它*似乎“对除输入外的所有其他内容都很好地工作:”Friday“和“1000”,它抛出了一个可变错误 完整代码列表: 代码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
#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指出的实际问题,我想我会接受答案(而且是先做的).不过我还是要感谢你,同时也要感谢你所有的有益评论!