2020612自学python路上的又一个小峭壁

 

 

 

 

 

今天这第2次做这个道题,发现了原来写题的一个错误点。但也是今天到现在1个小时了还没有分析明白的核心。怎么去判定被输入的数不是16位,比如例题中你书G系统提示你Invalid input。

下面这三行是指考虑输入一个十六进制字符然后显示十进制整数。

number = input("Enter a hex character: ")
numberHex = int(number, base=16)
print(f"The decimal value is {number}")

 

这个今天看了个视频一下子就解出来了。第一次做的时候光这步我就苦苦合计了2天。(不是全天。但是这个白天都已经崩溃了)

     然后接下来。不是16进制的字符输入就出invalid input这个点,就开始新崩溃了。

首先我用的是pycharm这个软件。当我输入g或者G的时候

系统会自动提示下列语句。

Traceback (most recent call last):

  File "F:/LearnPython/untitled/04-00 test.py", line 604, in <module>

    if int(number, base=16) == True:

ValueError: invalid literal for int() with base 16: 'g'

** 这里说明一下。我是40多道题写在一个程序里所以行数比较多。大家别误会

我现在就卡在这里了。我怎么判断呢。或者怎么告诉系统g或者G不是16进制的。然后这个系统提示由我这边执行。不用你这边给我做。

1、  怎么判断。其实这一步解决了,系统强在我前面判断的问题也解决了。

我程序中number 这个变量变10进制整数是通过 int(number, base=16)这个语句完成的。我曾经想直接把这个语句为真变成if的条件。反之就说无效。但想法和现实很骨感。不论输入0到10,和A到F.系统,系统竟然提示我invalid input。看来这个路不通。

2、  哪我直接将numberHex >=15作为if条件呢?条件是成立了,但是还是G或者g的时候pycharm系统提示我“无效的int文字”。我将nubmerHex换成了number 。结果还是出错,这次换成了TypeError: '<=' not supported between instances of 'str' and 'int'。换句话说numberHex这个条件还是对的。如果引入了number这个由用户输入的变量。那么问题就不是无效的int了。而是变成了字符和整数没法比较的问题了。

3、  方法还是不行。另外我发现。其实可以不用base.直接写int(number, 16)也可以呀

    

第4天早上训练,心情不那么闹心了。但是看这个题。我现在只能煎熬。自学路漫长。

我想转型。我想提高直接的收入。我想改变自己的生活。没别的继续干下去吧。

posted @ 2020-06-12 10:34  yogaPandas  阅读(151)  评论(0编辑  收藏  举报