Hướng dẫn python variable not updating in loop - biến python không cập nhật trong vòng lặp

Tôi rất mới lập trình và tôi đã gặp phải một vấn đề với một trò chơi đoán cơ bản mà tôi đã viết. X là một số ngẫu nhiên được tạo bởi máy tính. Chương trình được cho là so sánh giá trị tuyệt đối của [trước_guess - x] và bản đoán mới trừ X và nói với người dùng nếu dự đoán mới của họ gần hơn hay xa hơn.

Nhưng biến trước đó_guess không cập nhật với giá trị mới. Bất kỳ trợ giúp sẽ được đánh giá cao.

Đây là mã cho đến nay:

    ###Guessing Game
import random

n = 100
x = random.randint[1,n]
print["I'm thinking of a number between 1 and ", n]

##print[x] ## testing/cheating.
count = 0

while True:
    previous_guess = 0 # Should update with old guess to be compared with new guess
    guess = int[input["Guess the number, or enter number greater that %d to quit." % n]]
    count += 1

    print[previous_guess]
    print["Guesses: ", count]

    if guess > n:
        print["Goodbye."]
        break

    elif count < 2 and guess != x: 
        print["Unlucky."]
        previous_guess = guess #####

    elif count >= 2 and guess != x:
        if abs[guess - x] < abs[previous_guess - x]:
            previous_guess = guess #####

            print["Getting warmer..."]
        else:
            previous_guess = guess #####
            print["Getting colder..."]

    elif guess == x:
        print["You win! %d is correct! Guessed in %d attempt[s]." % [x,count]]
        break 

Đã hỏi ngày 21 tháng 6 năm 2018 lúc 19:09Jun 21, 2018 at 19:09

3

Dự đoán trước đây của bạn đang được tái tạo mỗi khi bạn lặp. Đây là một lỗi rất phổ biến trong lập trình, vì vậy nó không chỉ là bạn!

Thay đổi nó thành:

previous_guess = 0
while True:
   #Rest of code follows

Những điều bạn nên nghĩ về khi những thứ như thế này xuất hiện.

  1. Biến của bạn được khai báo ở đâu?
  2. Biến của bạn được khởi tạo ở đâu?
  3. Biến của bạn đang được sử dụng ở đâu?

Nếu bạn không quen thuộc với những điều khoản đó thì không sao! Nhìn lên! Là một lập trình viên, bạn phải giỏi googling hoặc tìm kiếm tài liệu [hoặc hỏi mọi thứ trên Stack Overflow, mà nó sẽ xuất hiện bạn đã tìm ra].

Một cái gì đó khác rất quan trọng để mã hóa những thứ công việc là học cách gỡ lỗi.

Google "Hướng dẫn gỡ lỗi Python", tìm một cái có ý nghĩa [đảm bảo rằng bạn thực sự có thể làm theo hướng dẫn] và tắt bạn đi.

Đã trả lời ngày 21 tháng 6 năm 2018 lúc 19:13Jun 21, 2018 at 19:13

bathMarm0tbathMarm0tbathMarm0t

4133 Huy hiệu bạc9 Huy hiệu Đồng3 silver badges9 bronze badges

Bạn đang đặt lại previous_guess thành 0 mỗi khi vòng lặp lại bắt đầu, do đó vứt bỏ dự đoán thực tế trước đó. Thay vào đó, bạn muốn:

previous_guess = 0
while True:
    guess = ....

Đã trả lời ngày 21 tháng 6 năm 2018 lúc 19:13Jun 21, 2018 at 19:13

4133 Huy hiệu bạc9 Huy hiệu Đồngscnerd

Bạn đang đặt lại previous_guess thành 0 mỗi khi vòng lặp lại bắt đầu, do đó vứt bỏ dự đoán thực tế trước đó. Thay vào đó, bạn muốn:2 gold badges22 silver badges36 bronze badges

Scnerdscnerd

import random

n = 100
x = random.randint[1,n]
print["I'm thinking of a number between 1 and ", n]

##print[x] ## testing/cheating.
count = 0
previous_guess = 0  # Should update with old guess to be compared with new guess
while True:
    guess = int[input["Guess the number, or enter number greater that %d to quit." % n]]
    count += 1

    print[previous_guess]
    print["Guesses: ", count]

    if guess > n:
        print["Goodbye."]
        break
    elif count < 2 and guess != x:
        print["Unlucky."]
    elif count >= 2 and guess != x:
        if abs[guess - x] < abs[previous_guess - x]:
            print["Getting warmer..."]
        else:
            print["Getting colder..."]
    elif guess == x:
        print["You win! %d is correct! Guessed in %d attempt[s]." % [x,count]]
        break
    previous_guess = guess  #####

5.6432 Huy hiệu vàng22 Huy hiệu bạc36 Huy hiệu đồngJun 21, 2018 at 19:15

Bạn cần khởi tạo previous guess trước vòng lặp while. Nếu không, nó sẽ được khởi tạo nhiều lần. Bạn đã cập nhật previous guess ở nhiều nơi. Bạn có thể làm cho nó đơn giản hơn:Taohidul Islam

Đã trả lời ngày 21 tháng 6 năm 2018 lúc 19:153 gold badges23 silver badges38 bronze badges

Taohidul Hồi giáo Hồi giáo Hồi giáo

  1. 5.1403 Huy hiệu vàng23 Huy hiệu bạc38 Huy hiệu Đồng
  2. Bạn cần khởi tạo dự đoán trước đó trước khi vòng lặp nếu không nó sẽ được khởi tạo nhiều lần. Bạn phải đặt giá trị của dự đoán trước đó thành X Trình tạo máy tính và khi bạn di chuyển sau vòng lặp, bạn phải cập nhật dự đoán trước đó lên tiếp theo đơn giản như thế này:
###Guessing Game
import random

n = 100
x = random.randint[1,n]
print["I'm thinking of a number between 1 and ", n]

##print[x] ## testing/cheating.
count = 0
previous_guess = x
while True:
     # Should update with old guess to be compared with new guess
    previous_guess += x
    guess = int[input["Guess the number, or enter number greater that %d to quit." % n]]
    count += 1

    print[previous_guess]
    print["Guesses: ", count]

    if guess > n:
        print["Goodbye."]
        break

    elif count < 2 and guess != x: 
        print["Unlucky."]
        previous_guess = guess #####

    elif count >= 2 and guess != x:
        if abs[guess - x] < abs[previous_guess - x]:
            previous_guess = guess #####

            print["Getting warmer..."]
        else:
            previous_guess = guess #####
            print["Getting colder..."]

    elif guess == x:
        print["You win! %d is correct! Guessed in %d attempt[s]." % [x,count]]
        break 

Thêm trước khi {trước_guess = x}

Thêm sau khi {trước_guess += x}Aug 30, 2021 at 14:47

Bạn có thể cập nhật một biến trong A For Loop không?

Bằng cách truy cập cùng một biến [cần phải ở cùng phạm vi hoặc toàn cầu], bạn có thể thay đổi nó trong khi vòng lặp của bạn vẫn đang chạy..

Điều gì xảy ra nếu biến thử nghiệm trong một vòng lặp trong một thời gian không được cập nhật?

Bạn chỉ in đầu ra của Test [], không cập nhật biến A nên điều này sẽ luôn là 0 tại mỗi lần lặp của vòng lặp của bạn. Khi bạn gọi kiểm tra [a] Bạn chỉ cần in kết quả, A không bao giờ được cập nhật - tức là nó vẫn ở 0, bạn chỉ cần vứt bỏ giá trị được trả về.you just throw away the value returned.

Làm thế nào để bạn cập nhật một quầy vòng lặp trong Python?

Sử dụng hàm liệt kê [] để đếm trong một vòng lặp, ví dụ:Đối với chỉ mục, mục trong liệt kê [my_list]:.Hàm có thể lặp lại và trả về một đối tượng chứa các bộ dữ liệu, trong đó phần tử thứ nhất là chỉ mục và mục thứ hai - mục., e.g. for index, item in enumerate[my_list]: . The function takes an iterable and returns an object containing tuples, where the first element is the index, and the second - the item.

Bạn có thể cập nhật một biến trong Python không?

Trước khi bạn có thể cập nhật một biến, bạn phải khởi tạo nó, thường là với một bài tập đơn giản.Trong ví dụ trên, x đã được khởi tạo thành 6. Cập nhật một biến bằng cách thêm một cái gì đó vào nó được gọi là một sự gia tăng;Trừ được gọi là giảm.. In the above example, x was initialized to 6. Updating a variable by adding something to it is called an increment; subtracting is called a decrement.

Bài Viết Liên Quan

Chủ Đề