如何解决为什么在平局时它会转到 else 语句?
steen = '''
_______
---' ____)
(_____)
(_____)
(____)
---.__(___)
'''
papier = '''
_______
---' ____)____
______)
_______)
_______)
---.__________)
'''
schaar = '''
_______
---' ____)____
______)
__________)
(____)
---.__(___)
'''
import random
list = [steen,papier,schaar]
user = input ("Wat kies je? schaar,steen of papier? ")
if user == 'steen':
print ('')
print ('Jij koos: ')
print (steen)
print ('')
elif user== 'schaar':
print ('')
print ('Jij koos: ')
print (schaar)
print ('')
elif user == 'papier':
print ('')
print ('Jij koos: ')
print (papier)
print ('')
else :
print ("verkeerde ingave")
print ('de computer koos:')
computer = random.choice(list)
print (computer)
***if user == computer:
print ('gelijk!!')***
if user == 'steen' and computer == schaar :
print ('Jij wint')
else :
if user == 'schaar' and computer == papier:
print ('Jij wint')
else:
if user == 'papier' and computer == steen:
print ('Jij wint')
else:
print ('jij verliest\n')
解决方法
不要使用 list
作为变量名。如果您将选项列表(我将其称为 choices
)保留为字符串,则可以更轻松地验证用户条目,然后使用该列表中的位置可以轻松比较用户和计算机选项。>
按照图形设置,您可以:
choices = ('steen','papier','schaar')
graphix = ( steen,papier,schaar )
n_choices = len(choices)
user = input ("Wat kies je? schaar,steen of papier? ")
if user not in choices: # tests against all valid options
print ("verkeerde ingave ",choices)
else :
user_ix = choices.index(user) # use position
print ('')
print ('Jij koos: ')
print ( graphix[user_ix] )
print ('')
computer_ix = random.randrange(n_choices)
print ('de computer koos:')
print ( graphix[computer_ix] )
if user_ix == computer_ix:
print ('gelijk!!')
elif (user_ix + 1)%n_choices == computer_ix:
# modular arithmetic comparison for interest
## you lose to the next in (circular) list
print ('Jij verliest \n')
else:
print ('Jij wint \n')
这也改进了输入错误处理,但进一步改进当然是可取的,例如允许用户尝试几次以进行有效输入。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。