我正在尝试制作石头,纸,剪刀的游戏。但是,当我尝试使用切片在输入函数内部格式化字符串时,得到以下信息:Choose Rock, Sciss or Scissors:
我正在使用以下脚本:
options = ['rock', 'paper', 'scissors']
def rock_paper_scissors():
x = ''
for option in options:
if x == '':
x += option.title()
else:
x += ', ' + option.title()
player = input('Choose {} or {}:'.format(x[0:11], x[-8:]))
这不是切片错误,这是字符串构造。您应该再缩进else:
块。供参考,请在输入命令前尝试print()
-x
。
Python for
循环可以具有else:
子句。除非循环以break
或return
终止,否则将执行这些命令。因此,您的循环仅在x仍为空字符串时才在第一次迭代中执行某些操作,然后else子句将使用仍从循环的最后一次迭代绑定的option
来修改您的字符串。
也许我有点习惯于代码审查,但是我建议以不同的方式进行构造,更像这样:
player_move = input(f"Choose {', '.join(options[:-1])} or {options[-1]}")
不过请注意,这仅适用于选项的3+长度。要获得较少选择的合适的琴弦,则需要更多...优雅的结构。