【问题标题】:Python Skipping RulePython 跳过规则
【发布时间】:2019-03-17 13:27:55
【问题描述】:

我正在为一个学校项目制作此代码,每当它输入一个偶数时,它应该检查该数字是否在列表中,然后将 10 添加到它。相反,它只是跳过 +10 位,而是从中减去 5。这是代码:

import random

print("Lets Play")
play1 = input("Player 1 name?")
play2 = input("Player 2 name?")
print("Hi " + play1 + " & " + play2 + ", let" + "'" + "s roll the dice")

diceNumber = float(random.randint(2,12))
diceNumber2 = float(random.randint(2,12))
diceNumber3 = random.randint(2,12)
diceNumber4 = random.randint(2,12)
diceNumber5 = random.randint(2,12)
diceNumber6 = random.randint(2,12)
diceNumber7 = random.randint(2,12)
diceNumber8 = random.randint(2,12)
diceNumber9 = random.randint(2,12)
diceNumber0 = random.randint(2,12)

print(play1, "Your number is...")
print(diceNumber)
print(play2, "Your number is...")
print(diceNumber2)

evennumber = list = [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40]
evennumber = [float(i) for i in list]

if (diceNumber) == (evennumber):
    (diceNumber01) = (diceNumber) + float(10)
else:
    (diceNumber01) = (diceNumber) - float(5)

evennumber = list = [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40]
evennumber = [float(i) for i in list]

if (diceNumber2) == (evennumber):
    float(diceNumber2) + float(10)
else:
    float(diceNumber2) - float(5)

print (play1, "Your total points is",diceNumber01,)
print (play2, "Your total points is",diceNumber2,)

【问题讨论】:

  • 您可以通过检查除以 2 时是否有任何提醒来检查数字是否为偶数:if someNumber % 2 == 0: # it is even else it is odd - 您也不想这样做 evennumber = list = [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] - 只会为相同的数据,其中一个隐藏了内置的list() 函数。请改用evennumber = list( range(2,40+1,2) ) - 它会创建一个从 2 到 40 的数字列表,步长为 2。我希望你至少得到一些关于 python 的辅导。如果在 py2.7 上,我认为您甚至可以避免 range() 周围的列表(...)

标签: python python-2.7 rules


【解决方案1】:

您在这里有一些多余和问题,这里是一个简短的摘要和一些更改。

  • 只使用两个骰子,无需创建 10
  • 骰子值为float 没有明确的用途
  • 可以使用if not x % 2检查evens,如果我们使用如图所示的偶数列表,唯一相关的偶数是2 through 12
  • diceNumber == evennumber 正在检查一个值以查看它是否等于整个列表,如果使用得当,将是 if diceNumber in evennumber
  • 这条语句float(diceNumber2) + float(10) 将结果赋值为空

这是一个经过一些修改的清理版本,我建议在这里使用random.choice,只需从一系列数字中选择一个随机数,这样您就不必每次都在范围内随机生成一个新的int,结果会是一样的。

from random import choice

print("Lets Play")
play1 = input("Player 1 name: ")
play2 = input("Player 2 name: ")
print("Hi " + play1 + " & " + play2 + ", let" + "'" + "s roll the dice")

die = list(range(2, 13))

d_1 = choice(die)
print(play1, "Your number is...\n{}".format(d_1))

d_2 = choice(die)
print(play2, "Your number is...\n{}".format(d_2))

if not d_1 % 2:
    d_1 += 10
else:
    d_1 -= 5

if not d_2 % 2:
    d_2 += 10
else:
    d_2 -= 5

print (play1, "Your total points is",d_1)
print (play2, "Your total points is",d_2)
Lets Play
Player 1 name: vash
Player 2 name: stampede
Hi vash & stampede, let's roll the dice
vash Your number is...
5
stampede Your number is...
2
vash Your total points is 0
stampede Your total points is 12

【讨论】:

    【解决方案2】:

    您应该使用in 运算符来检查某个值是否在列表中的值中。

    变化:

    if (diceNumber) == (evennumber):
    

    到:

    if (diceNumber) in (evennumber):
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      相关资源
      最近更新 更多