简单的python代码

fif*_*man 0 python

在编程中,我正在编写一个用户选择实体的代码,然后计算体积和表面积.但是我没有直接选择,而是向用户提供了询问有关实体的额外信息的选项,如果他们输入数字然后"显示"(例如'1 show').他们可以继续询问,直到选择一个实体,所以我使用了一个while循环.

循环不起作用.如果循环的条件无效,它仍会进入循环并且不让我离开.请帮忙.我觉得这很简单.我试图进行整数和字符串转换,没有它帮助.

#11/07/12 
#A program that asks user for input and calculates SA and Volume of a chosen solid

print "Which solid would you like to calculate?"    
print "  "      
print "1. Tetrahedron"          
print "2. Dodecahedron"           
print "3. Cone"                 
print "4. Sphere"                        
print "5. Icosahedron"                    
print '  '                        
print "If you want extra information on the solid, enter the solid's number and then add show. Example: 1 show"                   
print "If not, just enter the number"                       
choice = raw_input('----->')                             

#Where asks if user wants extra information on the solids, loops until solid is chosen             
while choice != '1' or choice != '2' or choice != '3' or choice != '4' or choice != '5':      
    if choice == "1 show":     
        print "A tetrahedron is composed of four congruent triangle faces. "     
    if choice =='2 show':      
        print "A dodecahedron is a polyhedron composed of 12 pentagonal faces. "      
    if choice == '3 show':       
        print 'A cone is a geometric solid that tapers smoothly from a circular base to an   apex. '          
    if choice == '4 show':          
        print "A sphere is a perfectly round circle. "            
    if choice == '5 show':
        print 'An icosahedron is a regular polyhedron with 20 congruent equilateral triangular faces'        
    choice = raw_input('Your new choice: ')              

if choice == 1: # Tetradedron               
    tetraside = raw_input("What is the length of your solid's side? ")               
    tetrabaseA = ((3 ** (1/2)) / 4) * tetraside**2                
    tetraheight = 9 * ((6 ** (1/2)) / 3) * tetraside                  
    tetraSA = 4 * tetrabaseA                
    tetraV = (1 / 3) * tetrabaseA * tetraheight                  
Run Code Online (Sandbox Code Playgroud)

Lev*_*sky 5

你的while病情有误.想一想:即使choice等于'1',条件choice != '2'也是如此,所以整个条件总会得到满足.

你需要类似的东西

while choice not in {'1', '2', ...}:
Run Code Online (Sandbox Code Playgroud)

要么

while choice not in set(map(str, range(1, 6))): # a fancier version
Run Code Online (Sandbox Code Playgroud)

或者只是更改所有orand你的条件.