Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无序类型:str()>;int()_Python_String_Int - Fatal编程技术网

Python 无序类型:str()>;int()

Python 无序类型:str()>;int(),python,string,int,Python,String,Int,因此,我试图制作的程序由三个输入组成,它们等于一个直角、等腰或钝角三角形,当我运行代码时,我遇到了这个问题。我已经把int()放在了所有的前面。我做错了什么 angle_1 = input("What is the degree of the first angle? ") angle_2 = input("What is the degree of the second angle? ") angle_3 = input("What is the degree of the third ang

因此,我试图制作的程序由三个输入组成,它们等于一个直角、等腰或钝角三角形,当我运行代码时,我遇到了这个问题。我已经把int()放在了所有的前面。我做错了什么

angle_1 = input("What is the degree of the first angle? ")
angle_2 = input("What is the degree of the second angle? ")
angle_3 = input("What is the degree of the third angle? ")


if int(angle_1 or angle_2 or angle_3) == 90:
    print("This is a right triangle.")
elif int((angle_1 or angle_2 or angle_3) > 90) and int((angle_1 or angle_2 or angle_3) < 180):
    print("This is an obtuse triangle.")
else:
    print("This is an acute triangle.")     
angle\u 1=输入(“第一个角度的度数是多少?”)
角度_2=输入(“第二个角度的度数是多少?”)
角度_3=输入(“第三个角度的度数是多少?”)
如果int(角度1或角度2或角度3)==90:
打印(“这是一个直角三角形。”)
elif int((角度1或角度2或角度3)>90)和int((角度1或角度2或角度3)<180):
打印(“这是一个钝角三角形”)
其他:
打印(“这是一个锐角三角形”)

如果语句不可靠,您的
语句中的语法就不可靠。我会列一个角度名称的列表,然后循环遍历它们

angle_1 = input("What is the degree of the first angle? ")
angle_2 = input("What is the degree of the second angle? ")
angle_3 = input("What is the degree of the third angle? ")

# This will be looped through
angle_list=[angle_1, angle_2, angle_3] # This will be looped through

for angle in angle_list: # Goes through each inputted angle. 
    if angle == 90:
        print 'This triangle is right.'
        break
    elif angle > 90:
        print 'This triangle is obtuse.'
        break
    else:
        print 'This is an acute triangle.'
        break

为了便于将来参考,您可能希望在使用新概念时直接参考文档
是逻辑运算符,而不是布尔运算符

您的第一个问题是需要将输入从字符串转换为int。名义上,这是通过
val=int(intput('something:'))
完成的,但由于用户有输入垃圾的习惯,因此在转换时需要捕捉错误。这对于函数来说是一个很好的角色

您的第二个问题是
运算符,正如在多个地方所描述的那样。考虑到解决方案,您需要比较几个值,因此将它们放在列表中是很自然的。一旦你做到了这一点,python就有了一些技巧和有用的函数,可以让你对这些值提出问题

把它们放在一起,你就会得到

def get_input(prompt, cast_to=str):
    while True:
        try:
            val = input(prompt)
            return cast_to(val)
        except ValueError:
           print("'{}' is in valid, try againr".format(val))

angle_1 = get_input("What is the degree of the first angle? ", int)
angle_2 = get_input("What is the degree of the second angle? ", int)
angle_3 = get_input("What is the degree of the thrid angle? ", int)

angles = [angle_1, angle_2, angle_3]

if sum(angles) != 180:
    print("We are sticking with Euclidean geometry pal")
elif 90 in angles:
    print("This is a right triangle.")
elif max(angles) > 90:
    print("This is an obtuse triangle.")
else:
    print("This is an acute triangle.")

您已经发明了自己的语法,这与Python使用的解释不同。考虑<代码> int(ANGLY1或ANGELY2或ANGELY3)< /代码>。这将执行三个角度的逻辑OR,然后将结果转换为
int
。显然不是你想要的。所以,修好它,这是不对的。该列表包含文字字符串“angle_1”等。。。其中,不是用户输入的值。即使是这样,你一次只检查一个值,最后打印出三个关于角度的东西。试着运行它,你会看到的。@tdelaney没错!很抱歉。我认为列表需要字符串本身(否则我会得到一个
TypeError
),但关于第二点,您是绝对正确的。我将在
for
循环中添加一个
break
。@t我解决了第一个问题--我必须在声明变量后将列表移动到。问题仍然存在
angle\u list
仍然是字符串名称,您需要删除引号才能获得变量名称。下一个问题是,您没有将输入从字符串转换为int,因此不管怎样,您的代码都会认为三角形是钝的。最后,您只考虑列表中的第一项(它总是会断开),因此,例如,如果用户输入30、60、90,程序将看到
30
,并假设它是一个锐角三角形。原始海报使用的是python 3,其中python 2的
raw_input
现在是3的
input
和python 2的
input
(将字符串作为python表达式进行计算)被完全删除。我没有注意到您使用的是python 2。对于混淆,很抱歉!顺便说一句,您的类可能需要python 2,但您真的应该学习3。祝您好运!(用30、60、90运行您的程序-它仍然需要tweeks)。