簡體   English   中英

go如何回到循環的開始

[英]How to go back to the start of the loop

問題:創建一個程序,讓用戶猜測計算機生成的數字。 玩家有 5 次嘗試,如果他猜錯了程序結束。

我以兩種方式完成了這個程序。

第一種方式

import random  
import sys  

def computer_number () :
  return random.randint (1, 20) 

def user_number () :
  return int (input ("Number: "))

def number_verification () :
  w_ans = 0  # counts the number of wrong ans..
  t = 0  # counts the number of turns so far...
  while True :
    cpu_number = computer_number ()
    print (cpu_number)
    player_number = user_number ()
    if cpu_number == player_number :
      print ("Right guess.")
      sys.exit ()  # program ends when user guesses right
    else:
      w_ans += 1
      t += 1
      print ("Wrong answer.", 5 - t, " turns left.")
      if t > 4 :
        print ("Maximum tries exceded.")
        sys.exit ()
  return w_ans, t

number_verification ()

第二種方式

import sys
import random

def number_validation (cpu_number, player_number) :
    w_ans = 0 
    t = 0 
    while t < 5 :
        if cpu_number == player_number :
            print ("OK")
            sys.exit ()
        else :
            w_ans += 1
            t += 1
            print ("Wrong number", 5 - t, " turns left.")
            if t > 4 :
                print ("Maximum tries exceded.")
                sys.exit ()


cpu_number = random.randint (1, 20)
print (cpu_number)
player_number = int (input ("Number: "))
print (number_validation (cpu_number, player_number))

基本上我不明白的是,while循環在我的兩個程序中的結構相同。 但是在第二個程序中,如果我輸入錯誤的數字,我會得到以下 output。

1
Number: 9
Wrong number 4  turns left.
Wrong number 3  turns left.
Wrong number 2  turns left.
Wrong number 1  turns left.
Wrong number 0  turns left.
Maximum tries exceded.


為什么我的兩個程序的行為不同。

那是因為您在此處的第一個while循環中每次都從用戶那里獲得輸入:

while True :
  cpu_number = computer_number ()
  print (cpu_number)
  player_number = user_number ()

而在第二個 while 循環中,您只能在while循環之外獲得一次

cpu_number = random.randint (1, 20)
print (cpu_number)
player_number = int (input ("Number: "))
print (number_validation (cpu_number, player_number))

只需在你的內部添加這行代碼while讓它像你的第一個代碼一樣工作。

player_number = int (input ("Number: "))

提示:請使用調試器追溯此類混淆。

問題在於輸入的放置。 您的第二個 function 接受一個輸入並使用它執行 while 循環。 您需要將輸入放在 while 循環中:


import sys
import random

def number_validation (cpu_number) :
    w_ans = 0
    t = 0
    while t < 5 :
        player_number = int (input ("Number: "))
        if cpu_number == player_number :
            print ("OK")
            sys.exit ()
        else :
            w_ans += 1
            t += 1
            print ("Wrong number", 5 - t, " turns left.")
            if t > 4 :
                print ("Maximum tries exceded.")
                sys.exit ()


cpu_number = random.randint (1, 20)
print (cpu_number)
number_validation (cpu_number)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM