我应该解决的问题: 谜语者正在计划他的下一个刺山柑 宾夕法尼亚大道。宾夕法尼亚州的地址是一个四位数的数字, 以下属性。
所有四个数字都不相同, 千位数字是十位数的三倍, 这个数字是奇数,并且 这些数字的总和是27。
因此,我做了一个for循环,检查每个四位整数,并将该值放入占位符(即数千,数百等)中,并使用条件if语句来满足条件。但是我的问题是,当我运行代码时,IDE不会给我任何错误,但是它不会在最后输出我的语句。我在弄清楚我的代码出什么问题时遇到了麻烦。
address = 0
thousand = 0
hundred = 0
ten = 0
one = 0
for address in range(1000,9999+1):
thousand = (address/1000)%10
hundred = (address/100)%10
ten = (address/10)%10
one = (address%10)
if (thousand != hundred) and (thousand != ten) and (thousand != one) and (hundred != ten) and (hundred != one) and (ten !=one):
if thousand == (3*ten):
if one % 2 != 0:
if thousand+hundred+ten+one == 27:
print("The address is: ",address, "Pennsylvania Ave.")
它会运行,但不会显示打印语句。
答案 0 :(得分:3)
所有四个数字都不相同,千位数字是十位数字的三倍,数字是奇数,数字总和是27。
有些铅笔和纸比这里的for
循环效果更好。
话虽如此,请记住/
是Python 3中真正的除法运算符,与类型无关。因此,例如address = 6754
thousand = (address / 1000) % 10
评估为
thousand = 6.754 % 10
这只是6.754
,而不是您可能希望的6
。要获取6
,请使用整数除法运算符//
:
thousand = (address // 1000) % 10
答案 1 :(得分:0)
isop = []
for a in range(1, 10, 1):
for b in range(0, 10, 1):
for c in range(0, 10, 1):
for d in range(0, 10, 1):
if a!=b and a!=c and a!=d and b!=c and b!=d and c!=d:
sum = a+b+c+d
if a==3*c and sum == 27:
num = a*1000 + b*100 + c*10 + d
if num % 2 == 1:
isop.append(num)
for i in range(len(isop)):
print(isop[i])