Python:在同一行中打印变量和字符串

时间:2015-10-02 03:03:33

标签: python string variables printing

我正在尝试创建一个程序,如果变量a可以被变量b整除,则会打印该程序。尝试打印值a和b时,我一直遇到错误。

我的代码:

a, b = eval(input('Input a list of 2 numbers: '))
a = str(a)
b = str(b)
if (a % b == 0):
    print ( a + 'is divisible by' + b)
else:
    print( a + 'is not divisible by' + b)

错误讯息:

  

追踪(最近一次通话):     文件“C:/ Users / Noah / Documents / Python / Assignment 4 Question 7.py”,第4行,in       if(a%b == 0):   TypeError:不是在字符串格式化期间转换的所有参数

2 个答案:

答案 0 :(得分:2)

这是因为您将ab投射到strings。您最有可能将它们放入int,这应该是它们。如果由于某种原因你不是,那么演员应该是a = int(a)等。

还要避免使用eval,您可以将其更改为:

a = input('insert a number')
b = input('insert another number')

或者,如果您不得不立即输入它们,您可以

a, b = input('Insert two numbers separated by commas').split(',')

确保它们之间没有空格,或者为了安全起见,在施法时你可以做到

a = int(a.strip())

答案 1 :(得分:1)

这有一些问题。

a, b = eval(input('Input a list of 2 numbers: '))

不要再使用eval()几年了。即使这样,也要极其谨慎地使用。

a = str(a)
b = str(b)

str()将那里的任何东西变成一个字符串,这就是......

if (a % b == 0):  #this is where your error is

不可能这样做,因为"%"模数运算符期望任何一方的数字。 因为这些应该是数字,所以尝试在int()或float()语句中包装a和b

a = input('Input the first number: ')
b = input('Input the second number: ')
a = int(a)
b = int(b)
if (a % b == 0):
    print( a + 'is divisible by' + b)
else:
    print( a + 'is not divisible by' + b)