我正在尝试创建一个程序,如果变量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:不是在字符串格式化期间转换的所有参数
答案 0 :(得分:2)
这是因为您将a
和b
投射到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)