Python 3.x 当我需要给我其他东西时,为什么它会返回0?

Python 3.x 当我需要给我其他东西时,为什么它会返回0?,python-3.x,pychart,Python 3.x,Pychart,我为学校建立了这个项目。它仍在进行中,但我在路上撞到了一个肿块,我差点被他扯掉我的头发 我已经试过改变我的变量,它们是如何设置的,我想不出任何东西能起作用,这真是太烦人了。 我也不能把它做成我的图表,但这不是我的首要任务 def比较(u1,u2): 如果u1==u2: return(“打成平局!”) 平局=平局+1 elif u1=='rock': 如果u2==‘剪刀’: return(“{0}赢得摇滚乐!”。格式(user1)) u1WIN+1 其他: return(“{0}纸赢!”.form

我为学校建立了这个项目。它仍在进行中,但我在路上撞到了一个肿块,我差点被他扯掉我的头发

我已经试过改变我的变量,它们是如何设置的,我想不出任何东西能起作用,这真是太烦人了。 我也不能把它做成我的图表,但这不是我的首要任务

def比较(u1,u2):
如果u1==u2:
return(“打成平局!”)
平局=平局+1
elif u1=='rock':
如果u2==‘剪刀’:
return(“{0}赢得摇滚乐!”。格式(user1))
u1WIN+1
其他:
return(“{0}纸赢!”.format(user2))
u2WIN+1
elif u1==‘剪刀’:
如果u2==‘纸张’:
return(“{0}用剪刀赢!”。格式(user1))
u1WIN+1
其他:
return(“{0}赢得摇滚乐!”。格式(user2))
u2WIN+1
elif u1==‘纸张’:
如果u2==“摇滚乐”:
return(“{0}纸赢!”.format(user1))
u1WIN+1
其他:
return(“{0}剪刀赢!”。格式(user2))
u2WIN+1
其他:
return(“输入无效!有人没有输入石头、布或剪刀,请重试。”)
sys.exit()
#这太令人沮丧了!我不能改变我的变量!
#胜利者应该得到分数,但他们没有。这太烦人了!!不管发生什么,它总是返回0。我对此很担心,几乎要放弃了。
x=0
u1WIN=x
u2WIN=x
领带=x
播放=3
播放>=0时:
如果播放=0:
打破
其他:
user1_answer=getpass.getpass(“{0},您想选择石头、布还是剪刀?”。格式(user1))
user2_answer=getpass.getpass(“{0},您想选择石头、布还是剪刀?”。格式(user2))
打印(比较(用户1\u答案、用户2\u答案))
播放=播放+-1
打印('玩家1的胜利',u1WIN)
打印('玩家2的胜利',u2WIN)
打印('领带数量',领带)
用户_得分=[u1WIN、u2WIN、TIES]
wins=['user1','user2','ties']
颜色=[“蓝色”、“绿色”、“红色”]
plt.pie(用户分数,标签=胜利,颜色=颜色,startangle=90,自动CT='.1f%%'))
plt.show()
我希望得到与赢得的次数相匹配的输出,不幸的是,结果总是为0

看起来您需要分配计算结果

这将执行计算,但不会分配和存储结果

u1WIN +1
也许你的意思是:

u1WIN = u1WIN +1
问题:

使用全局变量时不提供它们或从函数返回它们

def compare(u1, u2): 
    if u1 == u2:
      return("It's a tie!")
      TIE = TIE +1     # this adds one to the _global_ TIE's value  and stores it into 
                       # a _local_ TIE: your global is not modified at all
您在从函数返回后做了一些事情-return==Done-之后什么都不会发生

    if u2 == 'scissors':
        return("{0} wins with Rock!".format(user1))
        u1WIN +1              # wont ever happen
在不存储值的情况下添加变量:

u1WIN +1              # adds one and forgets it immerdiately because you do not reassign.

不要使用全局变量:

def compare(u1,u2):
    """Returns 0 if u1 and u2 equal, returns 1 if u1 > u2 else -1"""
    if u1 == u2:
        return 0
    elif u1 > u2: 
        return 1
    else:
        return -1 
并在主程序中处理结果。。。或

def compare(u1,u2):
    """Returns (0,1,0) if u1 and u2 equal, returns (1,0,0) if u1 > u2 else (0,0,1)"""
    return (u1 > u2, u1 == u2, u1 < u2) # True == 1, False == 0
def比较(u1,u2):
“”“如果u1和u2相等,则返回(0,1,0);如果u1>u2,则返回(1,0,0);否则返回(0,0)”
返回(u1>u2,u1==u2,u1
或者其他很多可能性。

在修复错误(全局、返回、添加)后-请看,您可以稍微重新构造代码并使用一些python功能:

如何构建游戏的示例:

from enum import IntEnum
from sys import platform
import os

if platform.startswith("linux"):
    clear = lambda: os.system('clear')
else:
    clear = lambda: os.system('cls')

class G(IntEnum):
    """Represents our states in a meaningful way"""
    Rock = 1
    Scissor = 2
    Paper = 3 
    QUIT = 4

def get_gesture(who):
    """Gets input, returns one of G's "state" enums.
    Loops until 1,2,3 or a non-int() are provided."""
    g = None
    while True:
        choice = input(who + " pick one: Rock (1) - Scissor (2) - Paper (3): ")
        clear()
        try:
            g = int(choice)
            if g == G.Rock:
                return G.Rock
            elif g == G.Scissor:
                return G.Scissor
            elif g == G.Paper:
                return G.Paper
        except:
            return G.QUIT

def check(one,two):
    """Prints a message and returns: 
    0 if player 1 won,     1 if player 2 won,    2 if it was a draw"""
    if (one, two) in {(1,2) , (2,3) , (3,1)}:
        print("Player 1 wins with {} against {}".format(one.name, two.name)) 
        return 0
    elif (two, one) in {(1,2) , (2,3) , (3,1)}:
        print("Player 2 wins with {} against {}".format(two.name, one.name))
        return 1
    else:
        print("Draw: ", one.name, two.name)
        return 2
游戏:

输出:

Player 1 pick one: Rock (1) - Scissor (2) - Paper (3): 1
Player 2 pick one: Rock (1) - Scissor (2) - Paper (3): 1
Draw:  Rock Rock

Player 1 pick one: Rock (1) - Scissor (2) - Paper (3): 2
Player 2 pick one: Rock (1) - Scissor (2) - Paper (3): 2
Draw:  Scissor Scissor

Player 1 pick one: Rock (1) - Scissor (2) - Paper (3): 3
Player 2 pick one: Rock (1) - Scissor (2) - Paper (3): 3
Draw:  Paper Paper

Player 1 pick one: Rock (1) - Scissor (2) - Paper (3): 1
Player 2 pick one: Rock (1) - Scissor (2) - Paper (3): 2
Player 1 wins with Rock against Scissor

Player 1 pick one: Rock (1) - Scissor (2) - Paper (3): Q
You quit.

Player 1 wins:  1
Player 2 wins:  0
Draws:          3

“我要他把我的头发扯下来,”欢迎来到编程!或
u1WIN+=1
Player 1 pick one: Rock (1) - Scissor (2) - Paper (3): 1
Player 2 pick one: Rock (1) - Scissor (2) - Paper (3): 1
Draw:  Rock Rock

Player 1 pick one: Rock (1) - Scissor (2) - Paper (3): 2
Player 2 pick one: Rock (1) - Scissor (2) - Paper (3): 2
Draw:  Scissor Scissor

Player 1 pick one: Rock (1) - Scissor (2) - Paper (3): 3
Player 2 pick one: Rock (1) - Scissor (2) - Paper (3): 3
Draw:  Paper Paper

Player 1 pick one: Rock (1) - Scissor (2) - Paper (3): 1
Player 2 pick one: Rock (1) - Scissor (2) - Paper (3): 2
Player 1 wins with Rock against Scissor

Player 1 pick one: Rock (1) - Scissor (2) - Paper (3): Q
You quit.

Player 1 wins:  1
Player 2 wins:  0
Draws:          3