代码的目标是提示用户进行测试,并收集g、y、0's和1's,如果有多个,则用户通过(否则,它们失败)。我是一个初学者,想知道是否有一个更有效的方向,这段代码进入。
from time import sleep
print(pic1)
def check(name):
if name.lower() == "brandon":
print("Welcome home master")
else:
print("Let's find some data")
sleep(0.5)
print("What is your favorite color?")
color = input("fav_color>>> ")
if color == "":
print("No skipping!")
print(check(input("Enter Name Here>>> ")))
print("What is your dream car?")
car = input("fav_car>>> ")
if car == "":
print("No skipping!")
print(check(input("Enter Name Here>>> ")))
print("What team are you on?")
team = input("team_name>>> ")
if team == "":
print("No skipping!")
print(check(input("Enter Name Here>>> ")))
print("Who is your best friend?")
crush = input("best_friend>>> ")
if crush == "":
print("No skipping!")
print(check(input("Enter Name Here>>> ")))
print("What color is your shirt?")
shirt = input("shirt_color>>> ")
if shirt == "":
print("No skipping!")
print(check(input("Enter Name Here>>> ")))
print("You got clout?")
clout = input("clout_level>>> ")
if clout == "":
print("No skipping!")
print(check(input("Enter Name Here>>> ")))
print("Do you think you passed the test?")
passed = input("passed?>>> ")
if passed == "":
print("No skipping!")
print(check(input("Enter Name Here>>> ")))
print("Calculating...")
sleep(2.5)
def add():
color_counted = color.count("g")
car_counted = car.count("g")
team_counted = team.count("g")
crush_counted = crush.count("g")
shirt_counted = shirt.count("g")
clout_counted = clout.count("y")
clout_counted2 = clout.count("1")
clout_counted3 = clout.count("0")
passed_counted = passed.count("y")
total = color_counted + car_counted + team_counted + clout_counted3 + passed_counted
total = crush_counted + shirt_counted + clout_counted + clout_counted2
return total
if add() > 1:
print("passed")
else:
print("failed")
print("Congrats on your result!")
sleep(100)
check(input("Enter Name Here>>> "))发布于 2019-09-10 03:02:52
欢迎来到CodeReview!这不是很好的代码,但这并不意味着这是一个糟糕的问题。我想你来对地方了。
if color == "":
print("No skipping!")
print(check(input("Enter Name Here>>> ")))换句话说,check是在不必要的情况下调用自己的,如果用户试图“跳过”足够的次数,就会出现堆栈溢出。而不是这样做,只是循环,直到你有有效的输入。
print("Calculating...")
sleep(2.5)没有什么事情比用户界面欺骗我更让我烦恼的了。这个输出表明,完成计算需要2.5秒,但事实并非如此。不要对你的用户撒谎-只需显示结果。
sleep(100)是非常有害的--用户需要Ctrl+C来杀死程序;否则它就坐在那里,阻止用户取回他们的shell终端。这个应该删除。
程序中有许多地方是以重复的方式表示的,特别是用户输入(“不跳过”机制)、对count的调用以及获取total的添加。我建议如下:
def input_without_skip(prompt: str) -> str:
while True:
result = input(f'{prompt}>>>')
if result:
return result
print('No skipping!')
def is_master() -> bool:
return input_without_skip('Enter Name Here') == 'Hercules'
def get_counts():
for question, prompt, chars in (
( 'What is your favorite color?', 'fav_color', 'g'),
( 'What is your dream car?', 'fav_car', 'g'),
( 'What team are you on?', 'team_name', 'g'),
( 'Who is your best friend?', 'best_friend', 'g'),
( 'What color is your shirt?', 'shirt_color', 'g'),
( 'You got clout?', 'clout_level', 'y10'),
('Do you think you passed the test?', 'passed?', 'y')
):
print(question)
answer = input_without_skip(prompt)
yield sum(answer.count(c) for c in chars)
def main():
if is_master():
print('Welcome home, master.')
return
print("Let's find some data!")
total = sum(get_counts())
if total > 1:
print("passed")
else:
print("failed")
print("Congrats on your result!")
if __name__ == '__main__':
main()https://codereview.stackexchange.com/questions/227744
复制相似问题