2015-06-22 138 views
-1
import turtle 

print("Give me a shape") 
shape = input() 

if shape == "pentagon" or "Pentagon": 
    for i in range(5): 
     turtle.fd(100) 
     turtle.rt(72) 

if shape == "triangle" or "Triangle": 
    for i in range(3): 
     turtle.fd(100) 
     turtle.rt(120) 

if shape == "square" or "Square": 
    for i in range(4): 
     turtle.fd(100) 
     turtle.rt(90) 

if shape == "hexagon" or "Hexagon": 
    for i in range(6): 
     turtle.fd(100) 
     turtle.rt(60) 

if shape == "circle" or "Circle": 
    turtle.circle(100) 

else: 
    print("Not a shape") 
+0

那是什么'elif'是 – Pynchia

+1

相关:http://stackoverflow.com/questions/12774279/python-how-to-check- if-a-variable-is-equal-to-one-string-or-another-string –

+0

因为你没有在范围(...)中使用'i'的值,所以我想建议使用'for _ in range(...)'。使用下划线作为循环变量是一种常见惯例,它强调某些事情正在重复,并且循环变量不重要。 – alexwlchan

回答

0

您应该在第一个if后使用elif语句。或者,您可以使用'.lower'将输入转换为小写。这意味着你不必在陈述中或者在陈述中。例如,它也会接受TRIANGLE。

import turtle 

print("Give me a shape") 
shape = input() 

if shape == "pentagon" or shape == "Pentagon": 
    for i in range(5): 
     turtle.fd(100) 
     turtle.rt(72) 

elif shape == "triangle" or shape == "Triangle": 
    for i in range(3): 
     turtle.fd(100) 
     turtle.rt(120) 

elif shape == "square" or shape == "Square": 
    for i in range(4): 
     turtle.fd(100) 
     turtle.rt(90) 

elif shape == "hexagon" or shape == "Hexagon": 
    for i in range(6): 
     turtle.fd(100) 
     turtle.rt(60) 

elif shape == "circle" or shape == "Circle": 
    turtle.circle(100) 

else: 
    print("Not a shape") 
+0

当我这样做,它做了第一个,然后没有其他人。例如,如果我输入圆圈,它只会打印五边形,然后停止。 –

+0

因为你不重新评估形状,所以或者“五角大楼”永远是真的。请参阅我的编辑。 – Rob

3

你的检查shape == "pentagon" or "Pentagon"不正确,将永远是True,因为检查字符串总是返回True,例如bool("Pentagon")True并且"pentagon" == "pentagon"的检查是True
您应该改用shape in ["pentagon", "Pentagon"]或更好的shape.lower() == "pentagon"

import turtle 

print("Give me a shape") 
shape = input().lower() 
if shape == "pentagon": 
    for i in range(5): 
     turtle.fd(100) 
     turtle.rt(72)  
elif shape == "triangle": 
    for i in range(3): 
     turtle.fd(100) 
     turtle.rt(120)  
elif shape == "square": 
    for i in range(4): 
     turtle.fd(100) 
     turtle.rt(90)  
elif shape == "hexagon": 
    for i in range(6): 
     turtle.fd(100) 
     turtle.rt(60)  
elif shape == "circle": 
    turtle.circle(100)  
else: 
    print("Not a shape") 
+0

谢谢。这是有道理的:D –

+2

不会'形态=输入(“给我一个形状:”).lower()'是一种改进,而不是改变每种情况的情况? – cdarke

+0

是的,它会更好。我更新了代码。 – Delimitry

1

你之类的语句

shape == "pentagon" or "Pentagon" 

评估为True"Pentagon"

,则需要比较shape这两个值:

shape == "pentagon" or shape == "Pentagon"