在Python中将随机生成的整数分配给字符串输出

在Python中将随机生成的整数分配给字符串输出,python,python-3.x,Python,Python 3.x,我正在开发一个随机事实生成器,它获取一个随机生成的数字(在本例中为1-10),并将该数字分配给一个字符串输出,该字符串输出告诉用户一个随机事实 到目前为止,这就是我所能拼凑出的全部代码: #Greeting a = "Hello, who am I speaking to?" print("Welcome, " + input(a) + "!" + " Lets see what fact you rolled...") #Random Number Generator import rand

我正在开发一个随机事实生成器,它获取一个随机生成的数字(在本例中为1-10),并将该数字分配给一个字符串输出,该字符串输出告诉用户一个随机事实

到目前为止,这就是我所能拼凑出的全部代码:

#Greeting
a = "Hello, who am I speaking to?"
print("Welcome, " + input(a) + "!" + " Lets see what fact you rolled...")

#Random Number Generator
import random
for x in range (1):
    randomNumber = random.randint(1, 10)
    print(randomNumber)

#Loop function   
def check_val(randomNumber, title, answer):
        while True:
            if input(randomNumber) == title:
                print(answer)
                break
            else:
                print("I dont know.")

#Facts
def fact():

            randomNumber, answer = {}, {}
            randomNumber[1] = ([1])
            answer[1] = "Fact1"
            randomNumber[2] = ([2])
            answer[2] = "Fact2"
            randomNumber[3] = ([3])
            answer[3] = "Fact3"
            randomNumber[4] = ([4])
            answer[4] = "Fact4"
            randomNumber[5] = ([5])
            answer[5] = "Fact5"
            for k in randomNumber:
                check_val(randomNumber[k], k, answer[k])


fact()
运行此代码时,我得到以下输出:

喂,我在和谁说话 欢迎你,j!让我们看看你是怎么做的。。。 5. [1]

我无法将那个随机整数(5)赋给随机事实#5

关于如何将这些随机整数分配给可用的输出有什么想法吗?

#
#Greeting
a = "Hello, who am I speaking to?"
print("Welcome, " + input(a) + "!" + " Lets see what fact you rolled...")

#Random Number Generator
import random
for x in range (1):
    randomNumber = random.randint(1, 10)
    print(randomNumber)   <--- your printing 5

#Loop function   
def check_val(randomNumber, title, answer):
        while True:
            if input(randomNumber) == title: <--- answer argument which were passed was [1] remember so it asks you to write something with the text [1]
                print(answer)
                break
            else:
                print("I dont know.")

#Facts
def fact():

            randomNumber, answer = {}, {}   <--- your 5 nol longer exist because you now overwrote it with a dict
            randomNumber[1] = ([1])
            answer[1] = "Fact1"
            randomNumber[2] = ([2])
            answer[2] = "Fact2"
            randomNumber[3] = ([3])
            answer[3] = "Fact3"
            randomNumber[4] = ([4])
            answer[4] = "Fact4"
            randomNumber[5] = ([5])
            answer[5] = "Fact5"
            for k in randomNumber:    <--- # now it's iterating over the dict, and since you wrote 1 first that is most likely to be the one it finds first in the memory though there no order here
                check_val(randomNumber[k], k, answer[k])


fact()
a=“你好,我在和谁说话?” 打印(“欢迎,”+输入(a)+“!”+“让我们看看您滚动了什么事实…”) #随机数发生器 随机输入 对于范围(1)内的x: randomNumber=random.randint(1,10) 打印(随机数)
#问候语
a=“你好,我在和谁说话?”
打印(“欢迎,”+输入(a)+“!”+“让我们看看您滚动了什么事实…”)
#随机数发生器
随机输入
对于范围(1)内的x:
randomNumber=random.randint(1,10)

打印(随机数)嘿,巴德,你在这里有很多事情要做,你可以用
列表
来存储你的事实,这里有一个更好的格式,你可以用它来构建。 正如@JonClements所提到的,我们可以使用
random.randrange(len(facts))
这将使我们的代码更具适应性,如果我们想改变列表中的事实数量

import random

while True:
    name = input("\nHello, Who am I speaking to?\n")
    print(f"\nWelcome, {name}! Lets see what you rolled..."

    facts = [ 
        'Fact one',
        'Fact two',
        'Fact three',
        'Fact four',
        'Fact five',
        'Fact six',
        'Fact seven',
        'Fact eight',
        'Fact nine',
        'Fact ten'
    ]   

    selection = random.randrange(len(facts))

    print(facts[selection])

嘿,巴德,你在这里有很多事情要做,你可以用
列表
来存储你的事实,这里有一个更好的格式,你可以用它来构建。
正如@JonClements所提到的,我们可以使用
random.randrange(len(facts))
这将使我们的代码更具适应性,如果我们想改变列表中的事实数量

import random

while True:
    name = input("\nHello, Who am I speaking to?\n")
    print(f"\nWelcome, {name}! Lets see what you rolled..."

    facts = [ 
        'Fact one',
        'Fact two',
        'Fact three',
        'Fact four',
        'Fact five',
        'Fact six',
        'Fact seven',
        'Fact eight',
        'Fact nine',
        'Fact ten'
    ]   

    selection = random.randrange(len(facts))

    print(facts[selection])

如果你不使用整数,你可以使用random.choise(facts)@JonasWolff当然,我在写这篇文章的时候考虑过这一点,但是OP最初的目标是“关于如何将这些随机整数分配到可用的输出上有什么想法吗?”所以我想通过传递一个random
int
@vash\u the\u踩踏来小心你的索引
randint
包含结束范围,因此您永远不会选择事实1(在Python中,索引0-记住索引从0开始),如果您碰巧选择10作为数字,您将得到一个
索引器
尝试打印事实。。。。你最好先把事实放在后面,通过使用
selection=random.randrange(len(facts))
选择一个随机数,然后确保在打印事实数时添加1。设置上限没问题。。。但是删除它们会导致异常。。。但是是的。。。只要他们把它精确到10,它就会工作。。。我只是想,如果你想帮助OP学习一些最佳实践,你不妨全力以赴,交换两行:)谢谢!我对Python(以及一般的编程)非常陌生。我感谢您的帮助和多角度的关注。如果你不使用整数,你可以使用random。choise(facts)@JonasWolff当然,我在写这篇文章时考虑过这一点,但OP最初的目标是“有没有关于如何将这些随机整数分配到可用输出的想法?”所以我想通过一个随机的
int
@vash_the_踩踏,小心你的指数在这里
randint
包含结束范围,因此您永远不会选择事实1(在Python中,索引0-记住索引从0开始),如果您碰巧选择10作为数字,您将得到一个
索引器
尝试打印事实。。。。你最好先把事实放在后面,通过使用
selection=random.randrange(len(facts))
选择一个随机数,然后确保在打印事实数时添加1。设置上限没问题。。。但是删除它们会导致异常。。。但是是的。。。只要他们把它精确到10,它就会工作。。。我只是想,如果你想帮助OP学习一些最佳实践,你不妨全力以赴,交换两行:)谢谢!我对Python(以及一般的编程)非常陌生。我感谢您的帮助和多角度的关注。我看看我现在能不能让它工作。看起来你写了一些代码,却没有真正理解你正在使用的所有东西。解决编程问题最有用的技术之一是rubber duck debugging()——它涉及到逐步解释您认为代码在做什么。你能编辑你的问题吗?它将帮助试图回答问题的人理解你想做什么,以及你在理解中可能出现的错误。看起来你在编写一些代码时没有真正理解你正在使用的所有东西。解决编程问题最有用的技术之一是rubber duck debugging()——它涉及到逐步解释您认为代码在做什么。你能编辑你的问题吗?它将帮助试图回答问题的人理解你想做什么,以及你在理解上可能出现的错误。