python基礎操作練習題

来源:https://www.cnblogs.com/feixianxing/archive/2023/10/04/python-basis.html
-Advertisement-
Play Games

這些練習題是在神經網路與深度學習課程上老師提供的,原因是有些同學沒學過python,作為簡單的練手習題。題目都很簡單,加上python本身也比較簡單,有些題目的作答可以一行代碼實現(雖然可讀性就下降了)。 ...


使用版本:python 3.6.8

IDE:pycharm

前言

這些練習題是在神經網路與深度學習課程上老師提供的,原因是有些同學沒學過python,作為簡單的練手習題。

題目都很簡單,加上python本身也比較簡單,有些題目的作答可以一行代碼實現(雖然可讀性就下降了)。

練習題

2.1 數位之和

編寫程式,輸入一個正整數,然後輸出各位數字之和。
例如,輸入字元串1234,輸出10。

from functools import reduce
from operator import add

print(reduce(add, map(int, list(input()))))

2.2 字元串翻轉

編寫程式,輸入一個字元串,輸出翻轉(首尾交換)後的字元串,要求使用內置函數實現。
例如,輸入字元串12345,輸出54321。

print(''.join(reversed(input())))

2.3 最大值

編寫程式,輸入一個包含若幹整數的列表,輸出列表中的最大值。
例如,輸入[1, 2, 3, 4, 5, 888],輸出888。

print(max(eval(input())))

2.4 類型轉換——整數轉字元串

編寫程式,輸入一個包含若幹整數的列表,把列表中所有整數轉換為字元串,然後輸出包含這些字元串的列表。
例如,輸入[1, 2, 3, 4, 5, 888],輸出['1', '2', '3', '4', '5', '888']

print(list(map(str, eval(input()))))

2.5 filter

編寫程式,輸入一個包含若幹任意數據的列表,輸出該列表中等價於True的元素組成的列表。
例如,輸入[1, 2, 0, None, False, 'a'],輸出[1, 2, 'a']。

print(list(filter(None, eval(input()))))

2.6 指定key排序

編寫程式,輸入一個包含若幹整數的列表,輸出一個新列表,新列表中奇數在前偶數在後,並且奇數之間的相對順序不變,偶數之間的相對順序也不變。

nums = eval(input())
print(sorted(nums, key=(lambda x: x%2), reverse=True))

3.1 列表推導式與列表求和

阿凡提與國王比賽下棋,國王說要是自己輸了的話阿凡提想要什麼他都可以拿得出來。阿凡提說那就要點米吧,棋盤一共64個小格子,在第一個格子里放1粒米,第二個格子里放2粒米,第三個格子里放4粒米,第四個格子里放8粒米,以此類推,後面每個格子里的米都是前一個格子里的2倍,一直把64個格子都放滿。編寫程式,生成一個列表,其中元素為每個棋盤格子里米的粒數,並輸出這些數字的和,也就是一共需要多少粒米。
要求使用列表推導式。

from functools import reduce
from operator import add
print(reduce(add, [2**x for x in range(64)]))

3.2 列表推導式if篩選

編寫程式,輸入一個包含若幹整數的列表,輸出由其中的奇數組成的新列表。
例如,輸入[1,2,3,4,5,6,7,8],輸出[1, 3, 5, 7]。
要求使用列表推導式。

data = eval(input())
print([x for x in data if x%2==1])

3.3 向量內積

編寫程式,輸入兩個包含若幹整數的等長列表表示兩個向量,輸出這兩個向量的內積。
例如,輸入[1,2,3]和[4,5,6],內積計算方法為1*4 + 2*5 + 3*6 = 32,輸出32。
要求使用列表推導式。

from functools import reduce
from operator import add

x1 = eval(input())
x2 = eval(input())

print(reduce(add, [a*b for (a, b) in zip(x1, x2)]))

3.4 找最大值與其下標

編寫程式,輸入一個包含若幹整數的列表,輸出其中的最大值,以及所有最大值的下標組成的列表。
例如,輸入[1,2,3,1,2,3,3],輸出3和[2, 5, 6]。
要求使用列表推導式。

data = eval(input())
max_num = max(data)
print(max_num, [idx for idx in range(len(data)) if data[idx]==max_num])

3.5 生成隨機序列與計數

編寫程式,首先生成包含1000個隨機數字字元的字元串,然後統計每個數字的出現次數。

from random import choices
import string
s = ''.join(choices(string.digits, k=1000))
print(s)
cnt = {}
for x in s:
    cnt[x] = cnt.get(x, 0) + 1

print(cnt)

3.6 字元串去重(保持順序)

編寫程式,輸入一個字元串,輸出其中唯一字元組成的新字元串,要求新字元串中的
字元順序與其在原字元串中的相對順序一樣。
例如,輸入'1122a3344',輸出'12a34'。

s = input()
ss = list(set(s))
ss.sort(key=s.index)
print(''.join(ss))

3.7 集合運算

編寫程式,輸入兩個集合A和B,輸出它們的並集、交集、對稱差集以及差集A-B和B-A。
要求使用集合運算符。

A = set(eval(input()))
B = set(eval(input()))

print(A | B)
print(A & B)
print(A ^ B)
print(A - B)
print(B - A)

3.8 空格去重

編寫程式,輸入一個字元串,刪除其中的重覆空格,也就是如果有連續的多個空格的話就只保留一個,然後輸出處理後的字元串。

s = input()
print(''.join([s[idx] for idx in range(len(s)) if idx==0 or s[idx]!=' ' or s[idx-1]!=' ']))

3.9 母音字母大寫

編寫程式,輸入一個字元串,把其中的母音字母i、o、a、e和u替換成對應的大寫字母,然後輸出新字元串。

vowel = ('a', 'e', 'i', 'o', 'u')

s = input()
print(''.join(list(map(
    (lambda x: x.upper() if x in vowel else x),
    s
))))

3.10 檢查列表是否存在相同整數

編寫程式,測試列表中的若幹整數之間是否有重覆。

data = eval(input())
print("沒有重覆") if len(data) == len(list(set(data))) else print("存在重覆")

4.7 遞歸實現數位求和

使用遞歸法計算自然數各位數字之和。

def sum_by_digit(num):
    return num%10 + sum_by_digit(num//10) if num > 10 else num

test_data = (1234, 6789, 6379)

for test in test_data:
    print(f"{test} --> {sum_by_digit(test)}")

4.8 猜數游戲

通過參數可以指定一個整數範圍和猜測的最大次數,系統在指定範圍內隨機產生一個整數,然後讓用戶猜測該數的值,系統根據玩家的猜測進行提示(例如,猜大了,猜小了,猜對了),玩家則可以根據系統的提示對下一次的猜測進行適當調整,直到猜對或次數用完。

from random import choice

config = {
    'max_num': 1000,
    'min_num': 0,
    'max_guess_times': 20
}

answer = choice(range(config['min_num'], config['max_num']+1))

guess_times = 0
while guess_times < config['max_guess_times']:

    print(f"猜數游戲,請輸入一個數字,\n範圍是[{config['min_num']}, {config['max_num']}]: ") \
        if guess_times == 0 else print("再猜一次: ")
    guess = int(input())
    guess_times += 1
    if guess == answer:
        print("猜對了!")
        break
    elif guess > answer:
        print("猜大了")
    else:
        print("猜小了")

if guess_times >= config['max_guess_times']:
    print("--- 機會用完了 ---")

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 【中秋國慶不斷更】HarmonyOS對通知類消息的管理與發佈通知(下) 一、發佈進度條類型通知 進度條通知也是常見的通知類型,主要應用於文件下載、事務處理進度顯示。HarmonyOS提供了進度條模板,發佈通知應用設置好進度條模板的屬性值,如模板名、模板數據,通過通知子系統發送到通知欄顯示。 目前系統 ...
  • Python中的變數 變數的定義 程式中,數據都臨時存儲在記憶體中。每一個被存儲在記憶體的數據都有一個記憶體地址。其中特定的數據被我們所使用,因此我們為那些記憶體地址定義了名稱。這一名稱被稱作 標識符,又稱變數名。而與變數名對應記憶體地址中的數據被稱為變數值。 總結:變數為記憶體中特定的數據。它的記憶體地址的名稱 ...
  • 在這,您將學習瞭解 Spring Boot Starter Parent, 它是 Spring Boot 提供的父級 Pom 文件,旨在提供自動版本依賴管理,幫助我們輕鬆快速地進行 Spring Boot 開發。 什麼是 Spring Boot Starter Parent ? 通過 Spring ...
  • 用Rust手把手編寫一個wmproxy(代理,內網穿透等), HTTP及TCP內網穿透原理及運行篇 項目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy github: https://github.com/tickbh/wmproxy 內網、公 ...
  • Dart 3.0在語法層面共發佈了3個高級特性,第一個特性Record記錄我們在前面已經學習和探究。今天我們來學習第二個高級類型Pattern模式,由於內容較多,共分2篇文章進行介紹,本文首先介紹模式的概覽和用法,包括匹配、解構、在變數申明、賦值、迴圈、表達式等應用場景…… ...
  • 背包問題-01背包 首先我們要明白什麼是01背包,在下述例題中,由於每個物體只有兩種可能的狀態(取與不取),對應二進位中的 \(0\) 和 \(1\),這類問題便被稱為\(\text{「0-1 背包問題」}\)。 題目描述 有 \(N\) 件物品和一個容量為 \(M\) 的背包。第 \(i\) 件物 ...
  • 1.JVM體繫結構 JVM的位置 JVM體繫結構 2.類載入器 雙親委派機制 package java.lang; /** * 測試自定義java.lang.String類能否運行成功 * 體會雙親委派機制 * * 類載入器逐級向上檢查:app->ext->boot * 發現boot類載入器中也有S ...
  • 平行坐標系是一種統計圖表,它包含多個垂直平行的坐標軸,每個軸表示一個欄位,並用刻度標明範圍。通過在每個軸上找到數據點的落點,並將它們連接起來形成折線,可以很容易地展示多維數據。隨著數據增多,折線會堆疊,分析者可以從中發現數據的特性和規律,比如發現數據之間的聚類關係。 儘管平行坐標系與折線圖錶面上看起 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...