4.创建一个字符串为s=”dj@sAh#3Fo*2dWa%o6g9”,编写代码实现以下功能: ①求字符串长度,并输出 ②求将字符串中的大写字母转换为小写字母,将小写字母换成大写字母,其他字符不变,并输出新的字符串。 ③查找字符‘%’在字符串中的位置,并输出 python代码
时间: 2024-09-10 15:12:32 浏览: 47
以下是一个使用Python语言编写的代码示例,它实现了您所要求的功能:
```python
# 原始字符串
s = "dj@sAh#3Fo*2dWa%o6g9"
# ①求字符串长度,并输出
length = len(s)
print("字符串长度:", length)
# ②求将字符串中的大写字母转换为小写字母,将小写字母换成大写字母,其他字符不变,并输出新的字符串。
# 利用列表推导式和字符串的isupper()、islower()方法实现
switched_case = ''.join([char.lower() if char.isupper() else char.upper() for char in s])
print("转换后的字符串:", switched_case)
# ③查找字符'%'在字符串中的位置,并输出
# 使用字符串的find()方法
percentage_index = s.find('%')
if percentage_index != -1:
print("字符'%'的位置:", percentage_index)
else:
print("字符'%'不在字符串中")
# 运行以上代码,将会依次输出字符串的长度,转换大小写后的字符串,以及字符'%'的位置。
```
这段代码按照您的要求依次实现了三个功能,并在每一步输出了相应的结果。您可以将这段代码复制到Python环境中运行以查看结果。
相关问题
// worker.js import {Sha256} from "@aws-crypto/sha256-js"; import SparkMD5 from "spark-md5"; onmessage = async function (event) { const data = event.data; // chunk方式读取文件 const chunkSize = 1024 * 1024; // 每次读取1MB const fileSize = data.size; let offset = 0; const hash = new Sha256(); const spark = new SparkMD5.ArrayBuffer(); while (offset < fileSize) { const chunk = data.slice(offset, offset + chunkSize); const buffer = await chunk.arrayBuffer(); hash.update(buffer); spark.append(buffer); offset += chunkSize; console.log(offset / fileSize * 100 , '%'); } const sha256Value = await hash.digest(); const buffer = Array.from(new Int8Array(sha256Value)); const md5Value = spark.end(); const md5Buffer = Array.from(new Int8Array(md5Value)); console.log(sha256Value, buffer); // 输出文件的sha256值 console.log(md5Value, md5Buffer); // 输出文件的MD5值 postMessage(buffer); };优化代码计算sah3
要计算 SHA-3 值,可以使用 Web Crypto API 中的 SubtleCrypto.digest() 方法,类似于计算 SHA-256 值的方法。具体来说,可以这样修改代码:
```
onmessage = async function (event) {
const data = event.data;
const chunkSize = 1024 * 1024; // 每次读取1MB
const fileSize = data.size;
let offset = 0;
const hash = await crypto.subtle.digest('SHA-3-256');
while (offset < fileSize) {
const chunk = data.slice(offset, offset + chunkSize);
const buffer = await chunk.arrayBuffer();
await crypto.subtle.digest('SHA-3-256', buffer);
offset += chunkSize;
console.log(offset / fileSize * 100 , '%');
}
const sha3Value = new Uint8Array(hash);
const buffer = Array.from(sha3Value);
console.log(sha3Value, buffer); // 输出文件的sha3值
postMessage(buffer);
};
```
其中,`crypto.subtle.digest()` 方法的第一个参数为要计算的哈希算法,本例中为 'SHA-3-256',返回的结果同样为一个 Promise,需要将其转换为 Uint8Array 后才能得到最终的值。
// worker.js import {Sha256} from "@aws-crypto/sha256-js"; import SparkMD5 from "spark-md5"; onmessage = async function (event) { const data = event.data; // chunk方式读取文件 const chunkSize = 1024 * 1024; // 每次读取1MB const fileSize = data.size; let offset = 0; const hash = new Sha256(); const spark = new SparkMD5.ArrayBuffer(); while (offset < fileSize) { const chunk = data.slice(offset, offset + chunkSize); const buffer = await chunk.arrayBuffer(); hash.update(buffer); spark.append(buffer); offset += chunkSize; console.log(offset / fileSize * 100 , '%'); } const sha256Value = await hash.digest(); const buffer = Array.from(new Int8Array(sha256Value)); const md5Value = spark.end(); const md5Buffer = Array.from(new Int8Array(md5Value)); console.log(sha256Value, buffer); // 输出文件的sha256值 console.log(md5Value, md5Buffer); // 输出文件的MD5值 postMessage(buffer); };优化代码计算sah256
可以考虑使用 Web Crypto API 中的 SubtleCrypto.digest() 方法来计算 SHA-256 值,这样可以避免引入第三方库。修改后的代码如下所示:
```
onmessage = async function (event) {
const data = event.data;
const chunkSize = 1024 * 1024; // 每次读取1MB
const fileSize = data.size;
let offset = 0;
const hash = await crypto.subtle.digest('SHA-256');
while (offset < fileSize) {
const chunk = data.slice(offset, offset + chunkSize);
const buffer = await chunk.arrayBuffer();
await crypto.subtle.digest('SHA-256', buffer);
offset += chunkSize;
console.log(offset / fileSize * 100 , '%');
}
const sha256Value = new Uint8Array(hash);
const buffer = Array.from(sha256Value);
console.log(sha256Value, buffer); // 输出文件的sha256值
postMessage(buffer);
};
```
其中,`crypto.subtle.digest()` 方法返回一个 Promise,该 Promise 会 resolve 为一个 ArrayBuffer,包含计算好的 SHA-256 值。可以通过将其转换为 Uint8Array 来得到最终的值。
阅读全文