【问题标题】:Generating random float number in Python在 Python 中生成随机浮点数
【发布时间】:2021-11-12 00:42:38
【问题描述】:

我只想在范围之间生成随机浮点数。但我遇到了一些问题 这是我的代码

import xlsxwriter
import random

wb = xlsxwriter.Workbook('abc.xlsx')

ws = wb.add_worksheet()

start = input("Enter the start value:")
end = input("Enter the end value:")
ws.write('A1','InputRPM')

ws.write('A3',start)

row=3
col=0 

rand = [random.uniform(start,end) for i in range(20)]

rand.sort()

for i in rand:
  ws.write(row,col, i)
  row+=1

ws.write('A24',end)
wb.close()

错误:

Enter the start value:200
Enter the end value:300
Traceback (most recent call last):
  File "file.py", line 17, in <module>
    rand = [random.uniform(start,end) for i in range(20)]
  File "file.py", line 17, in <listcomp>
    rand = [random.uniform(start,end) for i in range(20)]
  File "/usr/lib/python3.8/random.py", line 417, in uniform
    return a + (b-a) * self.random()
TypeError: unsupported operand type(s) for -: 'str' and 'str'

我想在 excel 中打印生成的浮点数,而不使用 for 循环中的范围。它会在达到最终值时自动生成,它会停止生成过程。我是这个新手,所以我不知道这些事情.谁能帮我找到这个要求。

【问题讨论】:

  • 您的问题是startend 是字符串,因为input 总是返回一个字符串。你可能想要start = float(input("Enter the start value:")),同样的end
  • input() 函数返回 string 而不是 int,您需要将 float/int 值传递给 random.uniform
  • 谢谢兄弟它的工作。你知道这个“我想在excel中打印生成的浮点数而不使用for循环中的范围。一旦达到最终值就会自动生成它会停止生成过程"

标签: python python-3.x list random excel-automation


【解决方案1】:

您的输入类型是“str”,您需要将其更改为“int”或“float”以便在随机函数中使用。输出仍然是浮点数。试试这个;

start = int(input("Enter the start value:"))
end = int(input("Enter the end value:"))

【讨论】:

  • 谢谢兄弟,它的工作正常。你知道吗?“我想在excel中打印生成的浮点数而不使用范围(for循环)。它会在达到最终值时自动生成停止生成过程”
  • 我不完全明白你想要什么。你想如何确定要创建多少个字符?也许你可以使用while func。当它超过某个值时,您可以停止。
  • 抱歉造成混淆。我只是想在 Excel 中仅使用开始值和结束值写入浮点数。这两个是我的输入。我不会给出任何范围(多少随机数生成)。它会自动生成。我想在所有浮点数之间你知道如何打印...?
  • 两个数字之间有无限个浮点数。也许您可以尝试随机选择范围号,并且每次可以打印完全随机数。 random_range = random.randrange(1000)rand = [random.uniform(start,end) for i in range(random_range)]
猜你喜欢
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2012-11-04
  • 2023-01-03
相关资源
最近更新 更多