سلام
ممنون از برنامه آموزشی خیلی خوبتون. در بخش ۱۶ یک بازی طراحی کردید بام « سنگ، کاغذ ، قیچی». به نظر میاد ایرادی وجود داره. لطفا راهنمایی کنید چطور میشه این مشکل رو حل کرد
با تایپ یک کلمه مثل rock کامپیوتر هر بار از طریق مآژول random یک چیز (مثلا کلمه rock) رو میاره و به نظر میاد واقعا هم رندوم نیست. این موضوع حتا در کدهای خود شما هم دیده میشد. من اینو چندین بار امتحان کردم و هربار دیدم که کلمه اتفاقی انتخاب نمیشه.
randomNumber = random.randint(1, 3)
computerMove = "rock"
if randomNumber == 1:
computerMove = "rock"
elif randomNumber == 2:
computerMove = "scissors"
elif randomNumber == 3:
computerMove = "paper"
با سلام.
اگر کدها را به صورت کامل ارسال کنید بهتر می توان بررسی کرد.
import random
print("Rock ...".lower())
print("Paper ...".lower())
print("Scissors ...".lower())
randomNumber = random.randint(1, 3)
computerMove = "rock"
if randomNumber == 1:
computerMove = "rock"
elif randomNumber == 2:
computerMove = "scissors"
elif randomNumber == 3:
computerMove = "paper"
player_1_wins = 0
player_2_wins = 0
winning_score = 4
while player_1_wins < winning_score and player_2_wins < winning_score:
print(f"player 1 wins : {player_1_wins} and player 2 wins : {player_2_wins}")
player_1 = input("player_1, Make your move :").lower()
print(f"player_2, make your move: {computerMove}")
player_2 = computerMove
if player_1 == "q":
break
if player_1 == player_2:
print("no one wins, let's play it again")
elif player_1 == "rock":
if player_2 == "scissors":
print("player_1 wins")
player_1_wins += 1
elif player_2 == "paper":
print("player_2 wins")
player_2_wins += 1
elif player_1 == "paper":
if player_2 == "scissors":
print("player_2 wins")
player_2_wins += 1
elif player_2 == "rock":
print("player_1 wins")
player_1_wins += 1
elif player_1 == "scissors":
if player_2 == "rock":
print("player_2 wins")
player_2_wins += 1
elif player_2 == "paper":
print("player_1 wins")
player_1_wins += 1
else:
print("somthing went wron")
print(f"Final scores player 1: {player_1_wins} Final scores player 2 : {player_2_wins}")
دوست گرامی،
در واقع مشکلی وجود ندارد. بازه ای که در random(1,3) انتخاب شده، واقعاً عدد صحیحی بین 1 تا 3 باز می گرداند که در شرطهای بعدی نیز مقدار آن کنترل می شود.
در تعداد تکرار نسبتاً زیاد اجرای برنامه، گزینه های دیگر را نیز می بینید.
می توان range بیشتری برای آن در نظر گرفت و در صورتی که عدد به دست آمده بین 1 تا 3 بود آنرا انتخاب کرد و در صورتی که چنین نبود، دوباره عدد random را ایجاد کرد.
randomNumber = random.randint(1, 20)
computerMove = ""
while randomNumber not in (1, 3):
randomNumber = random.randint(1, 15)
if randomNumber == 1:
computerMove = "rock"
elif randomNumber == 2:
computerMove = "scissors"
elif randomNumber == 3:
computerMove = "paper"
....
....
فقط کمی بازی با اعداد تصادفی تا احتمال مشاهده ی مواردی بجز rock نیز بیشتر شود.