0

这是代码:

from random import *
numbers = ['0','1','2','3','4','5','6','7','8','9','10']
r1 = choice (numbers)
r2 = choice (numbers)
print("H = HIGHER ,, L = LOWER ,, S = SAME")
print(r1)
a = input()
print(r2)
if r2 == r1 and a == 's':
     print("well done")
if r2 < r1 and a == 'l':
     print("well done")
if r2 > r1 and a == 'h':
     print("well done")
else:
     print("unlucky")

问题是脚本的最后一部分。除了在 print(r2) 之后的脚本末尾之外,一切都运行良好。一切正常,但答案不断在“做得好”和“不走运”之间切换。有时两者都说。有谁知道问题是什么?我假设发生这种情况的原因很简单,因为它是随机的,并且第一个输出(r1)随着我们沿着脚本移动而改变。有什么建议么?

4

2 回答 2

2

if将最后两个s更改为elifs(elif 表示 else-if):

if r2 == r1 and a == 's':
     print("well done")

elif r2 < r1 and a == 'l':
     print("well done")

elif r2 > r1 and a == 'h':
     print("well done")

else:
     print("unlucky")

现在“不幸”应该只在没有满足其他条件的情况下打印。

于 2012-06-12T20:46:33.860 回答
2

这是您的程序的功能齐全的版本:

from random import choice

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']

r1 = choice(numbers)
r2 = choice(numbers)

print("h = HIGHER ,, l = LOWER ,, s = SAME")
print(r1)
a = raw_input()
print(r2)

if r2 == r1 and a == 's':
    print("well done")
elif r2 < r1 and a == 'l':
    print("well done")
elif r2 > r1 and a == 'h':
    print("well done")
else:
    print("unlucky")

我让它对PEP8更友好。此外,您应该显示 h、l 和 s... 而不是 H、L 和 S,因为您的比较器a使用小写字母。要么,要么改变输入值的大小写。此外,使用raw_input而不是常规input.

正如@Blorgbeard 提到的,如果您希望每次都选择相同的随机数,请在调用之前添加它choice

import random 
random.seed(1)
于 2012-06-12T20:54:33.173 回答