python跳出2个while循环_通过whileloops/跳出2个while循环进行用户交互

各位程序员好

我是一个Python编程新手,不知道如何处理用户输入的bestimmt。我的一个朋友建议使用while循环,它们运行得很好,但现在我遇到了一个严重的问题。在

这个程序是关于询问用户三种计算π的方法中的哪一种。在他/她的选择之后,例如用一个多边形来计算Pi,在每次迭代之后,它会询问用户想要看到多少个数字或者应该计算多少个循环等等。我还添加了一些代码来检查用户写了什么,e、 g.如果用户被要求输入y或n,但输入b,程序会提醒他并再次询问。在

这种风格已经导致了呜呜,内耗,内耗,现在看起来更像是HTML代码而不是Python,理解起来有点复杂。。。在

看看:#!/usr/bin/python

# -*- coding: iso-8859-15 -*-

prgrm_ctrl_main_while_start = 0

while prgrm_ctrl_main_while_start == 0:

print "Please select the type of algorithm you want to calculate Pi."

usr_ctrl_slct_algrthm = raw_input("'p' to use polygons, 'm' to use the Monte-Carlo algorithm or 'c' for the Chudnovsky algorithm: ")

print " "

if usr_ctrl_slct_algrthm == 'p':

#import libraries

import time

from mpmath import *

#starting values

n_corners = mpf(8)

counter = 0

while_loop_check_itertions = 0

while while_loop_check_itertions == 0:

print "Pi will be calculated more precisely the more iterations you select but it'll also take longer!"

loops = int(input("Please select number of iterations (1 - 10.000.000): "))

print " "

if 1 <= loops <= 10000000:

loops = loops - 1

decimals = int(input("Please select the amount of decimals you want to see: "))

print " "

decimals = decimals + 1

starttime = time.clock()

mp.dps = decimals

while counter <= loops:

counter = counter + 1

n_corners = mpf(n_corners) * mpf(2)

circle = mpf(360)

alpha = mpf(circle) / mpf(n_corners)

beta = mpf(alpha) / mpf(2)

radiansBeta = mpf(mp.radians(beta))

opp_leg = mpf(mp.sin(radiansBeta))

edge_lngth = mpf(opp_leg) * mpf(2)

circmfrnce = mpf(n_corners) * mpf(edge_lngth)

pi = mpf(circmfrnce) / mpf(2)

print "Pi: ", mpf(pi)

print "Time to calculate: ", time.clock() - starttime, "seconds"

print " "

prgrm_ctrl_p_algrthm_while_start = 0

while prgrm_ctrl_p_algrthm_while_start == 0:

usr_ctrl_slct_p_algrthm = raw_input("Would you like to try this algorithm again? (y/n): ")

print " "

if usr_ctrl_slct_p_algrthm == 'y':

usr_ctrl_slct_p_algrthm_slction = 0

break

elif usr_ctrl_slct_p_algrthm == 'n':

usr_ctrl_slct_p_algrthm_slction = 1

break

else:

print "You must either type 'y' or 'n'!"

continue

if usr_ctrl_slct_p_algrthm_slction == 0:

continue

else:

usr_ctrl_slct_diffrt_algrthm_while_start = 0

while usr_ctrl_slct_diffrt_algrthm_while_start == 0:

usr_ctrl_slct_diffrt_algrthm = raw_input("Do you want to use another algorithm? (y/n): ")

print " "

if usr_ctrl_slct_diffrt_algrthm == 'y':

usr_ctrl_slct_diffrt_algrthm_slction = 0

break

elif usr_ctrl_slct_diffrt_algrthm == 'n':

print "See you next time!"

print " "

usr_ctrl_slct_diffrt_algrthm_slction = 1

break

else:

print "You must either type 'y' or 'n'!"

continue

if usr_ctrl_slct_diffrt_algrthm_slction == 0: #The program gets to this line and in case of the user selecting 'y' should continue in the first while-loop

continue

else: #if the user says 'n' the program should interrupt and stop, in the best case it should close the command line (in my case IDLE)

break #instead of doing all this the code gets executed again in the 2nd while loop not the 1st

"""NOTE: I also know the lines above continue or quit the 2nd while-loop"""

elif loops < 1:

print "Please select at least one iteration!"

while_loop_check_algrthm_slct = 0

while while_loop_check_algrthm_slct == 0:

usr_ctrl_slct_algrthm_p_try_agn = raw_input("Do you want to try it again? (y/n): ")

print " "

if usr_ctrl_slct_algrthm_p_try_agn == 'y':

usr_ctrl_slct_algrthm_p_try_agn_slction = 0

break

elif usr_ctrl_slct_algrthm_p_try_agn == 'n':

usr_ctrl_slct_algrthm_p_try_agn_slction = 1

break

else:

print "You must either type 'y' or 'n'!"

continue

if usr_ctrl_slct_algrthm_p_try_agn_slction == 1:

break

else:

continue

else:

print "The maximum amount of iterations is 10 million!"

while_loop_check_algrthm_slct = 0

while while_loop_check_algrthm_slct == 0:

usr_ctrl_slct_algrthm_p_try_agn = raw_input("Do you want to try it again? (y/n): ")

print " "

if usr_ctrl_slct_algrthm_p_try_agn == 'y':

usr_ctrl_slct_algrthm_p_try_agn_slction = 0

break

elif usr_ctrl_slct_algrthm_p_try_agn == 'n':

usr_ctrl_slct_algrthm_p_try_agn_slction = 1

break

else:

print "You must either type 'y' or 'n'!"

continue

if usr_ctrl_slct_algrthm_p_try_agn_slction == 1:

break

else:

continue

我已经评论了影响的台词。。。在

我不能用主while循环来解决这个问题,所以我问你如何解决这个问题。如果有更好的处理方式和用户的输入?我被困在一个我希望我已经去的地方,因为我无法想象任何其他的解决办法。在

希望你能帮助我,并感谢你阅读了这长代码!我很感激!:)

霍洛福克斯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值