Argv - String into Integer

后端 未结 3 1518
一生所求
一生所求 2020-12-10 13:35

I\'m pretty new at python and I\'ve been playing with argv. I wrote this simple program here and getting an error that says :

TypeError: %d format: a

相关标签:
3条回答
  • 2020-12-10 14:19

    Assign the converted integers to those variables:

    num1 = int(argv[1])  #assign the return int to num1
    num2 = int(argv[2])
    

    Doing just:

    int(argv[1])
    int(argv[2])
    

    won't affect the original items as int returns a new int object, the items inside sys.argv are not affected by that.

    Yo modify the original list you can do this:

    argv[1:] = [int(x) for x in argv[1:]]
    file_name, num1, num2 = argv  #now num1 and num2 are going to be integers
    
    0 讨论(0)
  • 2020-12-10 14:20

    Running int(argv[1]) doesn't actually change the value of argv[1] (or of num1, to which it is assigned).

    Replace this:

    int(argv[1])
    int(argv[2])
    

    With this:

    num1 = int(num1)
    num2 = int(num2)
    

    and it should work.

    The int(..), str(...) etc functions do not modify the values passed to them. Instead, they return a reinterpretation of the data as a different type.

    0 讨论(0)
  • 2020-12-10 14:31

    sys.argv is indeed a list of strings. Use the int() function to turn a string to a number, provided the string can be converted.

    You need to assign the result, however:

    num1 = int(argv[1])
    num2 = int(argv[2])
    

    or simply use:

    num1, num2 = int(num1), int(num2)
    

    You did call int() but ignored the return value.

    0 讨论(0)
提交回复
热议问题