+ 1
I m create a program in Python 3 and this Error show "TypeError : unsupported operand type(s) for ** or pow(): 'str' and 'int' "
Solve this error Python3
7 Answers
+ 2
Plz try To put you code Rahul Singh
+ 1
Looks like youre trying to add a string with a number or multiply a number by a string.
Put some checks in your code
print(type(problem_variable)
That will return the type.
and if its an integer but you want it to be a string so no type error...
str(problem_variable)
going to need to see the code though
0
this my Code One Case
P_hex = 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F'
P = int(P_hex, 16)
compressed_key_hex = input('Enter Your Compressed Public Key: ')
x_hex = compressed_key_hex[2:66]
x = int(x_hex, 16)
prefix = compressed_key_hex[0:2]
y_square = (pow(x, 3, P) + 7) % P
y_square_square_root = pow(y_square, (P+1)//4, P)
if (prefix == "02" and y_square_square_root & 1) or (prefix == "03" and not y_square_square_root & 1):
y = (-y_square_square_root) % P
else:
y = y_square_square_root
computed_y_hex = format(y, '064x')
computed_uncompressed_key = "04" + x_hex + computed_y_hex
print("X #", compressed_key_hex)
print("Y #", computed_uncompressed_key)
p = 115792089237316195423570985008687907853269984665640564039457584007908834671663
a = 0
b = 7
x = int(x_hex, 16)
s = pow(3*x**2) + a
print("S #", s)
and this error show
TypeError: pow expected at least 2 arguments, got 1
0
is that the full error code?
It looks like its catching your second to last line.
s = pow(3*x**2) + a
Try,
s = pow(3*x, x**2) + a
The error is just saying pow should have one more argument. The comma should help with that error.
For each case above except in the last one, the pow (function or method) can be seen with more than 1 parameter.
0
This My code 2 case
P_hex = 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F'
P = int(P_hex, 16)
compressed_key_hex = input('Enter Your Compressed Public Key: ')
x_hex = compressed_key_hex[2:66]
x = int(x_hex, 16)
prefix = compressed_key_hex[0:2]
y_square = (pow(x, 3, P) + 7) % P
y_square_square_root = pow(y_square, (P+1)//4, P)
if (prefix == "02" and y_square_square_root & 1) or (prefix == "03" and not y_square_square_root & 1):
y = (-y_square_square_root) % P
else:
y = y_square_square_root
computed_y_hex = format(y, '064x')
computed_uncompressed_key = "04" + x_hex + computed_y_hex
print("X #", compressed_key_hex)
print("Y #", computed_uncompressed_key)
p = 115792089237316195423570985008687907853269984665640564039457584007908834671663
a = 0
b = 7
x = int(x_hex, 16)
x1 = str(x)
s = pow(3*x1**2) + a
print("S #", s)
Error show : TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
0
Well there it is. Youre either trying to multiply a string by itself or multiply a number by a string and that dont work.
Find your string, "x1" and convert it to an integer if possible using int(). Or just dont change "x1" to a string in the first place
so instead of using "x1" just use "x"
0
Ok I m try