我正在努力处理一些if语句 - Python 2.7.9(大菜鸟)

时间:2015-01-22 17:28:27

标签: python if-statement

我想制作游戏的一部分,你只有一颗子弹。但是你有两次机会使用它。所以,如果你第一次使用它,你第二次不能使用它,反之亦然。

ammo_amount = 1

ammo = raw_input ("Shoot?")
if ammo == 'y':
    print ("you shot")
    ammo_amount-1

else:
    print("You didn't shoot")

ammo_2 = raw_input ("do you want to shoot again?")

if ammo_2 == 'y':
    if ammo_amount == '1':
        print ("you can shoot again")

    if ammo_amount == '0':
        print ("you can't shoot again")
if ammo_2 == 'n':
    print ("You didn't shoot") 

2 个答案:

答案 0 :(得分:1)

解释Martijn在回答比较字符串和整数的过程中谈到的内容,

我们在计算中处理数据的方式取决于变量的类型。此类型确定您可以对变量执行哪些操作,哪些操作无法执行。您可以通过调用type()函数找到变量的类型:

type( 5 )     # <type 'int'>
type( '5' )   # <type 'str'>
type( 5.0 )   # <type 'float'>
num = 5
type( num )   # <type 'int'>

了解5'5'5.0的类型有何不同?我们可以用这些不同的文字做不同的事情。例如,我们可以获得'5'的长度,因为它是一个字符串,这是一个序列,但我们无法获得5的长度。

len( '5' )    # 1
len( 5 )      # TypeError: object of type 'int' has no len()

当您比较两个不兼容类型的对象时,解释器并不总是按预期执行。请考虑以下代码:

num = 5
num == 5      # True
num == '5'    # False, comparing int to str

为什么第二次比较是假的?那么口译员不知道我们想做什么。为字符串和整数实现==比较的方式不会比较字符串的整数值,因为字符串可能包含非整数数据。就翻译人员所知,我们可能会尝试这样做:

num == 'clearly not a number'

正如Martijn所说,您的问题是您要将整数(ammo_amount)与字符串('1''0')进行比较。

希望这能为你的错误提供更多信息!

答案 1 :(得分:0)

您正在使用整数比较字符串:

ammo_amount = 1

# ...

if ammo_amount == '1':

# 

if ammo_amount == '0':

这些测试永远不会成立,字符串永远不会等于整数,即使它们包含的字符在阅读文本时可以被解释为相同的数字;与另一个数字进行比较:

if ammo_amount == 1:

if ammo_amount == 0:

你也从未改变ammo_amount;以下表达式生成一个新数字:

ammo_amount-1

但你忽略了这个新号码。将其存储在ammo_amount变量中:

ammo_amount = ammo_amount - 1