簡體   English   中英

函數只返回 else 條件而不返回 if

[英]Functions only returns else condition but not if

我正在 python 中制作剪刀石頭布程序。

我寫了一個 function 應該返回游戲結果但它只返回 else 條件,怎么辦?

這是程序的代碼。

import random

def emove():
    computer=["r","p","s"]
    return(random.choice(computer))

def winner():
    if user == "r" and emove == "p":
        return("Computer won!")
    elif user  == "p" and emove == "r":
        return("You won!")
    elif user  == "p" and emove == "s":
        return("Computer won!")
    elif user  == "s" and emove == "p":
        return("You won!")
    elif user  == "r" and emove == "s":
        return("You won!")
    elif user  == "s" and emove == "p":
        return("You won!")
    elif user  == emove:
        return("Tie")
    else:
        return("Wrong input")

user=input("Welcome to Rock Paper Scissors, to play enter the initial letter of the choice you make:").lower()
while user:
    print("Computer chose",emove(),",you chose", (user), winner() )
    
    playagain = input("Play again? (y/n): ").lower()
    if playagain =="n":
        print("Thanks for playing")
        break

emove 是一個emove ,所以 emove emove == "p"總是返回Flase

因此,我建議您進行以下細微更改:

import random
    
def emove():
    computer=["r","p","s"]
    return(random.choice(computer))

def winner():
    if user == "r" and em == "p":
        return("Computer won!")
    elif user  == "p" and em == "r":
        return("You won!")
    elif user  == "p" and em == "s":
        return("Computer won!")
    elif user  == "s" and em == "p":
        return("You won!")
    elif user  == "r" and em == "s":
        return("You won!")
    elif user  == "s" and em == "p":
        return("You won!")
    elif user  == em:
        return("Tie")
    else:
        return("Wrong input")

user=input("Welcome to Rock Paper Scissors, to play enter the initial letter of the choice you make:").lower()
while user:
    em=emove()
    print("Computer chose",em,",you chose", (user), winner() )
    
    playagain = input("Play again? (y/n): ").lower()
    if playagain =="n":
        print("Thanks for playing")
        break

因為你在winner() emove()中缺少function 括號emove()。

  def winner():
    print(user,emove())
    var = emove() # storing random choice in variable.
    if user == "r" and var == "p":
        return ("Computer won!")
    elif user == "p" and var == "r":
        return ("You won!")
    elif user == "p" and var == "s":
        return ("Computer won!")
    elif user == "s" and var == "p":
        return ("You won!")
    elif user == "r" and var == "s":
        return ("You won!")
    elif user == "s" and var == "p":
        return ("You won!")
    elif user == var:
        return ("Tie")
    else:
        return ("Wrong input")

您的代碼幾乎是正確的,但是您的實現存在一些問題。 這是您的代碼的一個版本,我認為它可以滿足您的所有需求:

import random

def computer_move():
    computer = ["r", "p", "s"]
    return (random.choice(computer))

def winner(emove):
    if user == "r" and emove == "p":
        return ("Computer won!")
    elif user == "p" and emove == "r":
        return ("You won!")
    elif user == "p" and emove == "s":
        return ("Computer won!")
    elif user == "s" and emove == "p":
        return ("You won!")
    elif user == "r" and emove == "s":
        return ("You won!")
    elif user == "s" and emove == "p":
        return ("You won!")
    elif user == emove:
        return ("Tie")
    else:
        return ("Wrong input")

while True:    
    user = input("Welcome to Rock Paper Scissors, to play enter the initial letter of the choice you make:").lower()
    emove = computer_move()
    print("Computer chose", emove, ",you chose", user, winner(emove))
    playagain = input("Play again? (y/n): ").lower()
    if playagain == "n":
        print("Thanks for playing")
        break

暫無
暫無

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

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