如何重置随机整数,以便在我猜对了时有另一个数字

时间:2017-03-03 20:09:22

标签: python

当我猜对了时,如何重置随机整数。我是初学者,你可以给我一些提示,帮助我写一个更好的代码。

from random import randint
##Guess a number from 1 to 100
##Made by 
##vers. 0.01beta

name = str(input("how ya name bruh:"))

randm = randint(1, 99)

guesstaken = str(int(0))

while True:
    user_guess = int(input(name + " " + "enter a number:"))

    if user_guess == randm:
       print("you guessed" + " " + "right" + ", " + name)
       SystemExit

    elif user_guess >= randm:
       print("guess lower")
       guesstaken = guesstaken + str(int(1))

    elif user_guess <= randm:
       print("guess higher")
    guesstaken = guesstaken + str(int(1))

2 个答案:

答案 0 :(得分:0)

您发布的代码存在一些问题。正如评论中所提到的,minifyEnabled true shrinkResources true 中的str()调用毫无意义,因为Python 3 name = str(input("how ya name bruh:"))函数总是返回一个字符串;在已经是字符串的对象上调用input()只返回该对象。所以它不会伤害任何东西,但它会给代码带来不必要的混乱。

类似地,表达式str()是多余的,因为1已经是整数。在整数对象上调用int(1)只返回原始整数对象。

然而,int()很奇怪。由于guesstaken = guesstaken + str(int(1))guesstaken都是字符串,没有执行算术它会进行字符串连接。以下是它的功能的简短演示。

str(int(1))

<强>输出

s = '0'
for i in range(5):
    s = s + '1'
    print(s)

有了这些东西,我们可以解决你的问题。 :)一旦玩家猜到了正确的数字,你想知道如何得到一个新的随机整数。这很简单:我们只是将代码放在另一个01 011 0111 01111 011111 循环中。我们还需要询问玩家他们是否想再玩一次,以便我们有一些方法可以打破这个循环并退出程序。

以下是代码的修复版本,带有额外的while循环。我使用字符串while方法使打印代码更清晰。

.format()

<强>演示

''' Guess a number from 1 to 100 '''

from random import randint

name = input("What's your name? ")
prompt = name + " enter a number: "

while True:
    randm = randint(1, 99)
    guesstaken = 0
    while True:
        user_guess = int(input(prompt))
        guesstaken += 1

        if user_guess == randm:
            print("You guessed {} {}, in {} guesses".format(randm, name, guesstaken))
            # break out of inner loop
            break
        elif user_guess >= randm:
            print("Guess lower")
        elif user_guess <= randm:
            print("Guess higher")

    # Play again if user inputs "y" or "Y"
    if input("Play again? [y/N] ").lower() != "y":
        # break out of outer loop
        break

print("Thanks for playing, {}.".format(name))

答案 1 :(得分:-1)

只需将randm分配给randint(1, 99)(再次randm = randint(1,99))。

另外,如果你想要的是Python忘记变量使用del,但这完全没必要。