華爲20屆面試軟件題第一題 利用python

引言:

參加了華爲的實習生面試,在上機考試這一關,本着事先準備的原則,在網上找了一些往年的華爲題來練練手,以下是我自己對題目的見解及解決方式,若那裏有不對的或者更好的解決方式,請務必教教我這個菜雞!!!

主體

題目如下(圖片獲取自https://blog.csdn.net/lyxleft/article/details/88698136?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task):
在這裏插入圖片描述
解題思路:

  1. 首先就利用input直接輸入一個字符串
  2. 然後迭代,一次判斷一個字符
  3. 然後再次迭代,利用兩個lsit來遍歷

代碼如下:

import os

# 首先輸入一個字符串表示輸入
the_input_str = input()


# 判斷字符串首尾是否是非法字符
if the_input_str == '' or the_input_str[0] in '+-' or the_input_str[-1] in '+-':
    os._exit(0)


# 定義幾個中間變量
the_temp_digit = ''  # 存儲連續的數字字符

# 定義兩個list存放數字和符號
the_list_digit = []
the_list_sign = []

# 開始一次判斷每個字符
for char in the_input_str+'=':
    # 判斷字符是否是規定的字符
    if char not in '1234567890+-=':
        os._exit(0)

    # 如果是符號就加入list中
    if not char.isdigit():
        the_list_sign.append(char)

        # 判斷中間字符串是否爲空,即表示是否有一個連續的數字字符
        if not the_temp_digit == '':
            the_list_digit.append(int(the_temp_digit))
            the_temp_digit = ''

        if char == '=':
            break

        continue

    # 如果是數字字符的話,首先要判斷是否是十位數的
    if char.isdigit():
        the_temp_digit = the_temp_digit + char
        continue

# 接下來開始進行計算
the_temp_sum = 0  # 用來保存中間值
the_place_list = 1  # 表示字符串的位置

for sign in the_list_sign:
    if sign == '+':
        the_temp_sum = the_temp_sum + the_list_digit[the_place_list]
        the_place_list += 1
        continue

    if sign == '-':
        the_temp_sum = the_temp_sum - the_list_digit[the_place_list]
        the_place_list += 1
        continue

# 因爲上面的沒有算第一個數字所以這個時候操作上
if the_list_sign[0] == '+':
    the_temp_sum = the_temp_sum + the_list_digit[0]
if the_list_sign[0] == '-':
    the_temp_sum = the_temp_sum - the_list_digit[0]

print(the_temp_sum)

期間遇到的問題:

  1. python怎麼直接退出程序?
  2. 如果用上述代碼直接遍歷的話那麼最後一個整數怎麼操作?
  3. 怎麼判斷每個字符是否合法?

解決方案:

  1. 在網上找到個好像看起來很靠譜的樣子的方法:os._exit(0)
  2. 在輸入的字符串後面手動加一個‘=’符號,因爲按照題目要求是不能加‘=’的
  3. 利用 in 這個保留字來判斷
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章