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