Python 我的逻辑运算符理解尝试 #/usr/bin/env蟒蛇3 状态=错误 当status==True时: 状态==“已退休” def ageCheck(): 年龄=整数(输入(“输入您的年龄:”) 如果ageCheck.age()>=65或age=65且状态=“已退休”)或ageCheck.age()=65或age
实际上,我只是试图建立一个程序来理解逻辑运算符。问题是它一直抛出这个错误Python 我的逻辑运算符理解尝试 #/usr/bin/env蟒蛇3 状态=错误 当status==True时: 状态==“已退休” def ageCheck(): 年龄=整数(输入(“输入您的年龄:”) 如果ageCheck.age()>=65或age=65且状态=“已退休”)或ageCheck.age()=65或age,python,python-3.x,Python,Python 3.x,实际上,我只是试图建立一个程序来理解逻辑运算符。问题是它一直抛出这个错误 #!/usr/bin/env python3 status = False while status == True: status == "retired" def ageCheck(): age = int(input("Enter Your Age: ")) if ageCheck.age() >= 65 or age <18: status = True
#!/usr/bin/env python3
status = False
while status == True:
status == "retired"
def ageCheck():
age = int(input("Enter Your Age: "))
if ageCheck.age() >= 65 or age <18:
status = True
def discountCheck():
if (ageCheck.age() >= 65 and status == "retired") or ageCheck.age() < 18:
print("You get 5% off")
def welcome():
print()
print("Welcome to Age Test")
welcome()
ageCheck()
discountCheck()
“文件”/home/pi/Murach/randomtests/while test.py”,第10行,在ageCheck中
如果ageCheck.age()>=65或ageageCheck
是一个函数-您可以访问它的age()
属性,它没有属性-因此出现错误
改用age
注意范围限定-ageCheck()
中的status
不是全局status
而是局部变量。根据您的函数,您可以将status
用作string
或bool
决定哪一个或使用两个不同的变量作为状态(真/假)和状态(退休或不退休)
您可以像这样重写一些代码:
"File "/home/pi/Murach/randomtests/while test.py", line 10, in ageCheck
if ageCheck.age() >= 65 or age <18:
AttributeError: 'function' object has no attribute 'age'"
65个国家的产出:
Welcome to Age Test
Enter Your Age: 17
You get 5% off
You get 5% off
HTH多亏@PatrickArtner,我才能够用最初的IF语句来构建程序。谢谢
Welcome to Age Test
Enter Your Age: 65
You get 5% off
No discount, sorry.
!/usr/bin/env python3
def状态检查(somage):
如果somage>=65:
返回真值
其他:
返回错误
def ageCheck():
尽管如此:
年龄=输入(“输入您的年龄:”)
如果age.isdigit()和int(age)>0:
返回整数(年龄)
def折扣支票(someage,mystatus):
如果(某个年龄>=65,mystatus==“isAble”)或某个年龄<18:
打印(“您可以享受5%的折扣”)
其他:
打印(“年龄不可接受”)
def welcome():
打印()
打印(“欢迎参加年龄测试”)
欢迎
年龄=年龄检查()
状态检查(年龄)
def ifstatus():
如果状态检查(年龄)=真:
status=“isAble”
返回str(状态)
status=ifstatus()
折扣检查(年龄、状态)
age check.age()
应该是什么?只需使用age
。您定义的是一个函数,而不是一个对象。ageCheck是一个函数-您访问它的“age()”属性,而它没有属性。因此会出现错误。请改用age
来代替。注意范围-ageCheck()中的状态不是您的全局状态,而是一个局部变量。您可以使用status
作为字符串或bool-具体取决于您的函数。决定使用哪一个变量,并使用两个不同的变量作为status(true/false)和status(as retired)变量。agecheck是我试图了解status==“retired”在程序中的工作方式。(if(agecheck.age()>=65和status==“retired”)或ageCheck.age()<18:)我正试图将这个等式应用到一个工作程序中为什么会有两个折扣检查?(o-o)@HectorAgosto展示了退休
和仍然活跃
之间的区别哇。我一直在读它,直到它有意义。谢谢你帮助我现在对代码有了更好的理解!!:DD你帮了大忙。不过,对于两个折扣支票,是不是“仍然活跃”“返回true,因为没有对此进行检查?我看到了retired的检查,但是为什么kickin仍然返回true,myStatus不应该将其设置为false,因为它没有退休吗?哦,仍然kickin作为isretired的值输入,因为它连接到myStatus。但既然它还没有完全失效,为什么要变为真呢?@Hectoragos你的代码以状态
到错误
开始,然后是一个潜在的无休止的while
循环(仅在状态==true
时输入),该循环测试状态==“失效”
但对测试结果没有做任何处理-因此,如果状态
为真
:无休止的循环。我(可能是错误地)扣除了您想要区分65岁仍在工作的ppl(为什么不?)和65岁已停止工作的ppl(状态
为“已退休”)。折扣仅适用于<18或>=65且不再有效的ppl。因此出现了差异。这就是为什么status
在>65y时获得折扣很重要的原因
Welcome to Age Test
Enter Your Age: 65
You get 5% off
No discount, sorry.
#!/usr/bin/env python3
def statusCheck(somage):
if somage >= 65:
return True
else:
return False
def ageCheck():
while True:
age = input("Enter Your Age: ")
if age.isdigit() and int(age) > 0:
return int(age)
def discountCheck(someage, mystatus):
if (someage >= 65 and mystatus == "isAble") or someage < 18:
print("You get 5% off")
else:
print("Age inacceptable")
def welcome():
print()
print("Welcome to Age Test")
welcome()
age = ageCheck()
statusCheck(age)
def ifstatus():
if statusCheck(age) == True:
status = "isAble"
return str(status)
status = ifstatus()
discountCheck(age, status)