我正在用python编写一个非常基本的轮盘赌模拟器。目前,我只关注红色/黑色博彩(基本上与正面或反面博彩相同,使用硬币)。
我的代码有很多问题。请原谅我对语言的基本知识。
import random
# Defines initial amounts of money and losses
money = 50
losses = 0
# Asks user how much to bet
def roulette_sim():
print "How much do you want to bet?"
bet = raw_input("> ")
if bet > money:
bet_too_much()
else:
red_or_black()
# Prevents one from betting more money than one has
def bet_too_much():
print "You do not have all that money. Please bet again."
raw_input("Press ENTER to continue> ")
roulette_sim()
# Asks user to select red or black, starts the sim, modifies money/losses
def red_or_black():
print "OK, you bet %r" % (bet)
print "Red or black?"
answer = raw_input("> ")
number = random.randint(1, 2)
if number == 1 and answer == "red":
print "You win!"
money += bet
print "You now have %r money" % (money)
print "Your losses are %r" % (losses)
replay()
elif number == 2 and answer == "black":
print "You win!"
money += bet
print "You now have %r money" % (money)
print "Your losses are %r" % (losses)
replay()
else:
print "You lost!"
money -= bet
losses += bet
print "You now have %r money" % (money)
print "Your losses are %r" % (losses)
replay()
# Asks user whether he/she wants to play again
def replay():
print "Do you want to play again?"
play_again = raw_input("y/n> ")
if play_again == "y":
roulette_sim()
else:
print "OK, bye loser!"
roulette_sim()
到目前为止的第一个问题是:bet_too_much函数不起作用。无论我输入了多少,程序都会声明它太多了(例如:“bet”总是大于“money”)。为什么?
到目前为止的第二个问题:当我想通过使用来在“钱”上加/减“打赌”时,例如: 金钱+=赌注 python将其视为用字符串对int求和(至少我认为是这样),而不是对两个变量求和。这是为什么?
任何帮助都将不胜感激。
谢谢
这两种情况都会发生,因为Python不执行隐式转换。你必须明确地告诉它,你想要的东西是一个整数,它不会为你这样做。 因此,对于第一期:
必须是
因为您不想将字符串与整数进行比较(您可以,但要与您现在得到的结果进行比较)。
第二,你也必须明确:
(当然,如果您已经将
bet
转换为int,就可以了)。Javascript因进行这种隐式转换而臭名昭著,因此如果您碰巧熟悉这种转换或类似的语言,请忘记它,并明确您正在使用的类型。总的来说,这样更安全。
raw_input()
函数返回一个字符串值,但是money
是一个整数。将字符串与数字进行比较总是以Python 2为结束,它将数字排序为小于字符串。将
raw_input()
的结果转换为整数:如果给定的输入不是有效数字,则可能会引发
ValueError
异常;您可能希望捕获该异常并告诉用户输入一个数字:您正在将从原始输入(“>;”)获得的字符串与整数进行比较。这不会有好结果。 请改为尝试此功能(尚未完全测试):
编辑:根据注释更改为“except ValueError”。我知道除了处理python编程的一部分之外,我有点懒,但也许我不应该把它教给其他人:-)
相关问题 更多 >
编程相关推荐