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

时间:2015-01-08 23:05:51

标签: python function python-2.7 math

我正在构建一个python脚本,用于在上传到互联网时查找文件的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'.

我搜索谷歌和所有地方,但无法解决。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你不能划分str和int。你必须将它转换为诸如

之类的int

INT(速度)

您还可以在文件中添加代码以进行debuging,例如

打印(类型(速度))

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

答案 2 :(得分:0)

使用 speed = int(raw_input)

你的代码给你一个错误的原因是因为当你使用原始输入时,它会将输入记录为字符串,所以在这种情况下你必须使用int()来转换它。

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