我试图创建一个简单的Python游戏,“更高或更低”。我对编程非常陌生,所以请给我任何改进。
这是我到目前为止所做的:
import random
score = 0
def check_choice(lastcard, newcard, userInput):
if newcard >= lastcard:
result = "higher"
else:
result = "lower"
if result == userInput:
print("Correct! \n")
return True
else:
print("Incorrect! \n")
return False
def generate_card():
return str(random.randint(1,13))
def get_user_choice():
choice = input("Please enter 'higher' or 'lower': ")
return choice
def change_score(result):
global score
if result:
score += 1
else:
score -= 1
def play_game():
play = True
card = generate_card()
while play:
print ("Current card is: " + card)
choice = get_user_choice()
if choice == "stop":
play = False
newcard = generate_card()
result = check_choice(card, newcard, choice)
change_score(result)
card = newcard
play_game()
在大多数情况下,一切正常。游戏的大部分工作和返回"正确!"或"不正确!"根据用户的输入。但是,即使用户选择了正确的选择,它也会不时地报告错误。
例如,之前的卡是1.当用户输入更高时,下一张卡是13,但它报告的更高是不正确的。
答案 0 :(得分:2)
结果是意外的,因为卡存储的是字符串,而不是整数:
\d
字符串比较词典:
def generate_card():
return str(random.randint(1,13))
答案 1 :(得分:2)
您的卡片存储为字符串:
def generate_card():
return str(random.randint(1,13))
字符串比较不希望你在这里:
>>> '13' > '2'
False
这是一个lexicographic comparison,这是你想要的,例如,你按字母顺序排列东西。但是对于更高/更低的游戏,您需要进行数字比较。为此,您希望将卡保留为数字,并更改get_user_choice
,以便将用户输入转换为数字:
def get_user_choice():
choice = input("Please enter 'higher' or 'lower': ")
return int(choice)