【问题标题】:Display the number of times each output was displayed in 'X's显示每个输出在“X”中显示的次数
【发布时间】:2020-11-17 16:08:39
【问题描述】:
while True:
    try:
        wins = int(input("enter number of wins: "))                
        draws = int(input("enter number of draws: "))
        losses = int(input("enter number of losses: "))
    except ValueError:
        print('try again')
        continue

    if wins>3:
        print('qualify')
    elif losses>3:
       print('disqualify')
   elif draws>3:
       print('try again')

   restart = str(input('enter "restart" to restart or "quit" to quit'))
   if restart == 'restart':
       continue
   elif restart == 'quit':
       #quit and display number of occurrences of qualify, disqualify and try again in 'X's 

【问题讨论】:

  • 这是我第一次使用堆栈溢出,请注意这个烂摊子
  • 请提供预期的minimal, reproducible example。显示中间结果与您的预期不同的地方。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。
  • 您发布的代码挂起等待输入——我们不会为您测试它。您没有显示任何输出,没有错误,没有问题。请从intro tour 重复on topichow to ask

标签: python loops if-statement conditional-statements


【解决方案1】:

首先,您需要跟踪每个结果的计数。您可以使用三个不同的变量来执行此操作,但我认为使用字典会更容易一些,或者更好的是 Counter

from collections import Counter

counts = Counter()

确保在你的循环之外初始化这个,因为你想在循环的多次迭代中保持相同的计数器;如果你在循环内重置它,它不会跟踪任何东西!

然后跟踪你看到的结果:

    if wins > 3:
        result = "qualify"
    elif losses > 3:
        result = "disqualify"
    elif draws > 3:
        result = "try again"
    else:
        print("Not enough of anything to produce a result!")
        continue
    print(result)
    counts[result] += 1

最后,你可以通过字符串乘法将计数转换为“X”标记:

for result in counts:
    print(f"{result}: {'X' * counts[result]}")

整体看起来像:

from collections import Counter

counts = Counter()
while True:
    try:
        wins = int(input("enter number of wins: "))                
        draws = int(input("enter number of draws: "))
        losses = int(input("enter number of losses: "))
    except ValueError:
        print("try again")
        continue

    if wins > 3:
        result = "qualify"
    elif losses > 3:
        result = "disqualify"
    elif draws > 3:
        result = "try again"
    else:
        print("Not enough of anything to produce a result!")
        continue
    print(result)
    counts[result] += 1

    if str(input('enter "restart" to restart or "quit" to quit')) == "quit":
        break

for result in counts:
    print(f"{result}: {'X' * counts[result]}")

【讨论】:

    【解决方案2】:

    我不明白你的问题,但根据我的理解,我构建了一个解决方案。这将向您显示合格和不合格的发生结果

    qualifycount=0
    disqualifycount=0
    while True:
        try:
            wins = int(input("enter number of wins: "))                
            draws = int(input("enter number of draws: "))
            losses = int(input("enter number of losses: "))
        except ValueError:
            print('try again')
            continue
    
        if wins>3:
            print('qualify')
            qualifycount+=1
        elif losses>3:
           print('disqualify')
           disqualifycount+=1
        elif draws>3:
           print('try again')
       
        restart = str(input('enter "restart" to restart or "quit" to quit'))
        if restart == 'restart':
           continue
        elif restart == 'quit':
           #quit and display number of occurrences of qualify, disqualify and try again in 'X's
           print("Number of qualify:"+str(qualifycount))
           print("Number of disqualify:"+str(disqualifycount))
           restart= str(input('press X to run again or press enter to quit'))
           if restart=='X':
               continue
           else:
               break
    
    
    

    【讨论】:

      猜你喜欢
      • 2021-09-23
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多