Python 2.7 [代码正在运行]如何缩短我的代码?摇滚乐?
我试图在Python2.7上制作一个简单的两人游戏 根据玩家1和玩家2的选择,该程序将决定石头、布、剪刀游戏的结果。该程序将打印结果、每位玩家的得分和玩过的游戏总数。 我的问题是:Python 2.7 [代码正在运行]如何缩短我的代码?摇滚乐?,python-2.7,Python 2.7,我试图在Python2.7上制作一个简单的两人游戏 根据玩家1和玩家2的选择,该程序将决定石头、布、剪刀游戏的结果。该程序将打印结果、每位玩家的得分和玩过的游戏总数。 我的问题是: 当输入为“Rock”时,代码不起作用。当输入为“Rock”时,代码起作用。纸和剪刀也是如此。如何使其工作?1.当输入为“Rock”时,代码不工作。当输入为“Rock”时,代码工作。纸和剪刀也是如此。我怎样才能让它工作 发件人: 加: 2.两名玩家必须在节目结束前输入他们的选择。这意味着当播放器1输入“-1”时,程序不
当输入为“Rock”时,代码不起作用。当输入为“Rock”时,代码起作用。纸和剪刀也是如此。如何使其工作?1.当输入为“Rock”时,代码不工作。当输入为“Rock”时,代码工作。纸和剪刀也是如此。我怎样才能让它工作 发件人: 加: 2.两名玩家必须在节目结束前输入他们的选择。这意味着当播放器1输入“-1”时,程序不会立即终止。在终止前,它将继续向播放器2请求输入。当播放器1的输入为“-1”时,如何使程序立即终止 发件人: 加: 3.我的代码很长,在不牺牲任何功能的情况下缩短代码有什么建议或提示吗 使用函数定义。样本:
if (player_1=='-1' or player_2=='-1'):
print 'End of game'
break
elif dif in [-1, 2]:
print ('Player 1 wins.')
score1 = score1 + 1
showScore()
elif dif in [1, -2]:
print('Player 2 wins.')
score2 = score2 + 1
showScore()
else:
print('Tie')
showScore()
continue
def showScore():
print '==================='
print 'Score:'
print 'Player 1: ' + `score1`
print 'Player 2: ' + `score2`
print 'Total game played: ' + `times`
print ''
对于初学者来说,这里有一个很好的,我将您的程序转换为Python 3。各方面都好。首先,它对
input
有一个正常的定义
一般来说,如果有N个值,其中N大于1,则最好使用数组。如果看到重复,请将数据移动到数组中并调用函数。当N为2时,您不必缩短代码(我的版本比您的版本长),但可以避免对播放器进行不同的处理,因为它们都通过相同的逻辑
将主逻辑也放在函数中,并为保留“main”代码
当您看到一个字符串elif
s时,这也是一个使用数据替代指示器。在我的victor
函数中,我迭代获胜组合的元组。您可能会考虑如何使用<代码> DICT<代码>。p>
import sys, os
def print_results( msg, times, scores ):
print( (msg) )
print( '===================' )
print( 'Score:' )
print( 'Player 1: %d' % scores[0] )
print( 'Player 2: %d' % scores[1] )
print( 'Total game played: %d' % times )
print( '' )
def victor( inputs ):
results = ( ('rock', 'scissors'), ('scissors', 'paper'), ('paper', 'rock') );
for (a, b) in results:
if a == inputs[0] and b == inputs[1]:
return 1
if b == inputs[0] and a == inputs[1]:
return 2
return 0
def play(times, scores):
inputs = ['', '']
for (i, choice) in enumerate(inputs):
prompt = '>>Player %d? ' % (i + 1)
choice = input(prompt).lower()
if choice == '-1':
return False
inputs[i] = choice
result = victor(inputs)
if result == 0:
print_results('Tie', times, scores)
else:
scores[result - 1] += 1
print_results('Player %d wins' % result, times, scores)
times += 1
return True
print('''Welcome to play Rock, Paper, Scissors game. Enter -1 to end''')
scores = [0, 0]
times = 0
while play(times, scores):
pass
if scores[0] == scores[1]:
player = 'Tie'
else:
if scores[0] > scores[1]:
i = 1
else:
i = 2
player = 'Player %d' % i
print( '*******************' )
print( 'Winner: %s' % player )
print( '*******************' )
我添加了.lower(),但它仍然不起作用。它仍然显示名称错误:未定义名称“Rock”。谢谢其他两个。附加问题,当输入不是“石头”、“布”、“剪刀”时,如何显示内容。我想显示“请只输入“石头”、“布”、“剪刀”来玩游戏”。
player_1 = str(input(">>Player 1? "))
player_2 = str(input(">>Player 2? "))
player_1 = str(input(">>Player 1? "))
if (player_1=='-1'):
print 'End of game'
break
player_2 = str(input(">>Player 2? "))
if (player_1=='-1' or player_2=='-1'):
print 'End of game'
break
elif dif in [-1, 2]:
print ('Player 1 wins.')
score1 = score1 + 1
showScore()
elif dif in [1, -2]:
print('Player 2 wins.')
score2 = score2 + 1
showScore()
else:
print('Tie')
showScore()
continue
def showScore():
print '==================='
print 'Score:'
print 'Player 1: ' + `score1`
print 'Player 2: ' + `score2`
print 'Total game played: ' + `times`
print ''
import sys, os
def print_results( msg, times, scores ):
print( (msg) )
print( '===================' )
print( 'Score:' )
print( 'Player 1: %d' % scores[0] )
print( 'Player 2: %d' % scores[1] )
print( 'Total game played: %d' % times )
print( '' )
def victor( inputs ):
results = ( ('rock', 'scissors'), ('scissors', 'paper'), ('paper', 'rock') );
for (a, b) in results:
if a == inputs[0] and b == inputs[1]:
return 1
if b == inputs[0] and a == inputs[1]:
return 2
return 0
def play(times, scores):
inputs = ['', '']
for (i, choice) in enumerate(inputs):
prompt = '>>Player %d? ' % (i + 1)
choice = input(prompt).lower()
if choice == '-1':
return False
inputs[i] = choice
result = victor(inputs)
if result == 0:
print_results('Tie', times, scores)
else:
scores[result - 1] += 1
print_results('Player %d wins' % result, times, scores)
times += 1
return True
print('''Welcome to play Rock, Paper, Scissors game. Enter -1 to end''')
scores = [0, 0]
times = 0
while play(times, scores):
pass
if scores[0] == scores[1]:
player = 'Tie'
else:
if scores[0] > scores[1]:
i = 1
else:
i = 2
player = 'Player %d' % i
print( '*******************' )
print( 'Winner: %s' % player )
print( '*******************' )