在python中如何将变量除以数字?

在python中如何将变量除以数字?,python,function,python-2.7,math,Python,Function,Python 2.7,Math,我正在构建一个python脚本,用于在上传到internet时查找文件的ETA。我在python上做了一个粗略的工作。 基本上,程序要求您输入文件大小和上传速度。 但是我被卡住了 剧本是这样的:。。进行中 print "UPLOADING TIME COVERTER" print print " Please enter the file size in mb" size = raw_input() # for e.g 237mb print print "Please enter the cu

我正在构建一个python脚本,用于在上传到internet时查找文件的ETA。我在python上做了一个粗略的工作。 基本上,程序要求您输入文件大小和上传速度。 但是我被卡住了

剧本是这样的:。。进行中

print "UPLOADING TIME COVERTER"
print
print " Please enter the file size in mb"
size = raw_input()
# for e.g 237mb
print
print "Please enter the current uploading speed in kb /sec"
speed = raw_input()
# for e.g 60kb/sec
print
A = speed * 60
# speed is changed into minutes
B = (A / 1024)
#KB  is changed in MB
C = (B / size)
print "your eta is %r hours" %(C)`
我收到的错误是:

Traceback (most recent call last):
  File "uploadingeta.py", line 14, in <module>
    B = (A - 1024)
TypeError: unsupported operand type(s) for -: 'str' and 'int'.

我搜索了谷歌和任何地方,但找不到解决方案

以下是一些代码,用于解析和阅读。修改以适应

import re

mb_match = re.compile(r'^([0-9])+[Mm][Bb]?$').match
kb_match = re.compile(r'^([0-9])+[Kk][Bb]?$').match
b_match = re.compile(r'^([0-9])+[Bb]?$').match

def parse_size(text):
  text = text.strip()
  match = mb_match(text)
  if match:
    return int(match.group(1)) * 1024 * 1024 

  match = kb_match(text)
  if match:
    return int(match.group(1)) * 1024

  match = b_match(text)
  if match:
    return int(match.group(1))

  raise ValueError('Invalid input')


while True:
  text = raw_input('Enter file size...')
  try:
    file_size_bytes = parse_input(raw_input('Enter file size: '))
    break
  except ValueError as e:
    print(e)

while True:
  text = raw_input('Enter upload speed size...')
  try:
    upload_speed = parse_input(raw_input('Enter file size: '))
    break
  except ValueError as e:
    print(e)

#file_size_bytes
#upload_speed

不能将str和int分开。必须将其转换为int,例如

英特斯比

您还可以向文件中添加代码以进行调试,例如

打印速度

这将告诉您变量的数据类型,它对解决各种问题都很有用。

使用 速度=内部W_输入

代码给出错误的原因是,当您使用原始输入时,它将输入记录为字符串,因此在本例中,您必须使用int强制转换它


您可能已经看到了其他答案,但希望我的答案能够解释一下这个问题。

raw\u input返回一个字符串。在对该值进行数学运算之前,需要将其转换为int或float。我该怎么做?我是这方面的初学者size=intraw\u input-请注意,如果无法将输入转换为第27行NameError中的interror,则会引发异常:未定义名称“parse\u input”。我如何定义它?