基于用户字符串输入的循环程序未获取

时间:2019-04-17 03:54:35

标签: python

我需要该程序从重复功能中执行以下两项操作之一,但是它应该能够同时执行这两项操作,因此我不知道为什么。 它必须做两件事

  • 使其重新运行main()子程序
  • 或说“再见”。并关闭整个程序, 以先到者为准。

我试图使它只是一个if-else语句,而不是if-elif-else,它没有改变任何东西,我也尝试过重新排列代码,但是那只会改变我可以从子程序获得的单个输出。这是当前的子程序:

def repeatloop():
  repeat = input("Do you want to calculate another bill? (y/n): ")
if repeat == 'n' or 'N':
  print("Goodbye.")
  time.sleep(2)
  sys.exit()
elif repeat == 'y' or 'Y':
  main()
else:
  print("Error. Program will shut down.")
  time.sleep(2)
  sys.exit()

它应该能够重复程序(基于y或Y输入),终止程序并显示“再见”。基于n或N输入,否则应显示“错误。程序将关闭。”如果输入了无效的输入,则会在关闭前显示一条消息。 非常感谢可以帮助我的人!

3 个答案:

答案 0 :(得分:0)

您好,欢迎来到Stackoverflow。
您的问题是您的if陈述不完全正确;而且整个函数没有正确缩进。

if repeat == 'n' or 'N'if repeat == 'n' or repeat == 'N'不同。

在第二种情况下,您在repeat关键字上测试了两个不同的语句,在第一个语句上,您是否查看:

  1. repeat等于n,并且
  2. 'N'不是None;并非如此,在这种情况下总是返回true。

另一种实现方法可能是if repeat in ["n", "N"]甚至更好:if repeat.lower() == 'n'

因此,综合考虑,您的代码应优化为:

def repeatloop():
    repeat = input("Do you want to calculate another bill? (y/n):")
    if repeat.lower() == 'n':
        print("Goodbye.")
        time.sleep(2)
        sys.exit()
    elif repeat.lower() == 'y':
        main()
    else:
        print("Error. Program will shuts down.")
        time.sleep(2)
        sys.exit()

答案 1 :(得分:0)

您可以使用in ()与列表进行比较。它将变量的值与列表进行比较。

def repeatloop():
  repeat = input("Do you want to calculate another bill? (y/n): ")
  if repeat in ('n','N'):
    print("Goodbye.")
    time.sleep(2)
    sys.exit()
  elif repeat in ('y','Y'):
    main()
  else:
    print("Error. Program will shut down.")
    time.sleep(2)
    sys.exit()

答案 2 :(得分:0)

if repeat == 'n' or 'N'不起作用,因为您一直在检查bool('N'),这始终是正确的,对于repeat == 'y' or 'Y'也是一样,因为 bool('Y')始终为真。

首先检查重复项是否在列表['n','N']中,或者是否不在列表['y','Y']中,然后退出程序,否则调用相同的函数repeatloop

import time, sys

def repeatloop():
    repeat = input("Do you want to calculate another bill? (y/Y/n/N): ")
    if repeat in ['n', 'N']:
        print("Goodbye.")
        time.sleep(2)
        sys.exit()
    elif repeat in ['y', 'Y']:
       repeatloop()
    else:
        print("Error. Program will shut down.")
        time.sleep(2)
        sys.exit()

repeatloop()