【问题标题】:How to loop in a function, and keep taking inputs in python如何在函数中循环,并继续在 python 中输入
【发布时间】:2022-02-04 21:03:21
【问题描述】:

所以我在做一个简单的石头剪刀布游戏,我想把它做成一个函数。在决定用户是赢还是输之前,我还希望它循环 10 次。但是代码不起作用,并且不断给出随机错误。

#code for rock paper scissors
import random 

l = ["rock","paper","scissors"]

def rps():
    q = 0
    wincount = 0
    while q < 10:
        w = random.choice(l)
        x = input("Choose rock paper or scissors all lowercase: ") 
        if w == "rock":
            if x == "rock":
                print("It's a draw")
            if x == "paper":
                print("You lost :(")
            if x == "scissors":
                print("You win!")
                wincount += 1
        elif w == "paper":
            if x == "rock":
                print("You lost :(")
            if x == "paper":
                print("It's a draw")
            if x == "scissors":
                print("You win!") 
                wincount += 1
        elif w == "scissors":
            if x == "rock":
                print("You win!")
                wincount += 1
            if x == "paper":
                print("You lost :(")
            if x == "scissors":
                print("It's a draw")
        q += 1
    if wincount >= 5:
        print("You won the game!")    

错误是

PS D:\project percy> & C:/Users/Dell/AppData/Local/Programs/Python/Python39/python.exe "d:/project percy/cogs/asiufysduifhi.py"
PS D:\project percy> rps()
At line:1 char:5
+ rps()
+     ~
An expression was expected after '('.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordE  
   xception
    + FullyQualifiedErrorId : ExpectedExpression```

【问题讨论】:

  • 您使用的是什么 IDE,这看起来不像是标准 Python 错误消息。
  • 你试图直接在终端中运行 python 代码,第二行应该在代码中或导入到 python shell 的第一个文件中

标签: python function while-loop


【解决方案1】:

这个错误似乎不是因为 python。应该是Powershell的原因。

PowerShell 需要 & 来将字符串解释为文件名。

由于您已经在使用与号,所以不确定,但请尝试在正确的引号内运行您的命令。

喜欢

& "C:/Users/Dell/AppData/Local/Programs/Python/Python39/python.exe" "d:/project percy/cogs/asiufysduifhi.py"

或者如果上述方法不起作用,那么试试这个:

& "C:/Users/Dell/AppData/Local/Programs/Python/Python39/python.exe" d:/project percy/cogs/asiufysduifhi.py

【讨论】:

    【解决方案2】:

    正如其他人已经说过的那样,他的错误不是来自python,而是来自powershell。我没有要测试的窗口,但我认为问题在于您正试图从 powershell 提示符调用rps() 这是一个 python 函数:

    PS D:\project percy> & C:/Users/Dell/AppData/Local/Programs/Python/Python39/python.exe "d:/project percy/cogs/asiufysduifhi.py"
    

    调用定义函数但从不调用它的 python 文件

    PS D:\project percy> rps()
    

    尝试执行一个名为 rps 的 powershell 命令,该命令可能存在但应该以不同的方式调用。

    建议解决方案

    尝试在你的python文件末尾添加rps()

    def rps():
        .....
        if wincount >= 5:
            print("You won the game!")
    
    rps()
    
    

    【讨论】:

      【解决方案3】:

      问题是您忘记将列表传递给函数以及调用函数。

      试试这个:

      # code for rock paper scissors
      import random
      
      l = ["rock", "paper", "scissors"]
      
      
      def rps(l):
          q = 1
          wincount = 0
          while q < 11:
              w = random.choice(l)
              print()
              print(q, "time")
              x = input(f" Choose rock paper or scissors all lowercase: ")
              if w == "rock":
                  if x == "rock":
                      print("It's a draw")
                  if x == "paper":
                      print("You lost :")
                  if x == "scissors":
                      print("You win!")
                      wincount += 1
              elif w == "paper":
                  if x == "rock":
                      print("You lost :")
                  if x == "paper":
                      print("It's a draw")
                  if x == "scissors":
                      print("You win!")
                      wincount += 1
              elif w == "scissors":
                  if x == "rock":
                      print("You win!")
                      wincount += 1
                  if x == "paper":
                      print("You lost :")
                  if x == "scissors":
                      print("It's a draw")
              q += 1
          if wincount >= 5:
              print("You won the game!")
      
      calling = rps(l)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-16
        • 1970-01-01
        • 2020-12-26
        • 1970-01-01
        相关资源
        最近更新 更多